• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1CHANGES BETWEEN 2.11.0 and 2.11.1
2
3  I. IMPORTANT CHANGES
4
5    - Some  fields  in  the  `CID_FaceDictRec`, `CID_FaceInfoRec`, and
6      `FT_Data` structures  have been changed  from signed to unsigned
7      type,  which  better reflects  the actual usage.  It is also  an
8      additional means to protect against malformed input.
9
10
11  II. MISCELLANEOUS
12
13    - Cmake support  has been  further improved.   To do  that various
14      backward-incompatible  changes were  necessary; please  see file
15      `CMakeLists.txt` for more details.
16
17    - Since version  2.11.0, a  C99 compiler  is necessary  to compile
18      FreeType.
19
20    - The experimental  'COLR' v1 API  has been updated to  the latest
21      OpenType standard 1.9.
22
23    - The `apinames` tool got a new  option `-wV` to output an OpenVMS
24      Linker Option File.
25
26    - VMS support was updated.
27
28    - MS Visual Studio support was added to build the demo programs.
29
30
31======================================================================
32
33CHANGES BETWEEN 2.10.4 and 2.11.0
34
35  I. IMPORTANT CHANGES
36
37  - A  new rendering  module has  been  added to  create 8-bit  Signed
38    Distance Field (SDF)  bitmaps for both outline  and bitmap glyphs.
39    The new  rendering mode is called  `FT_RENDER_MODE_SDF`, the pixel
40    mode is  `FT_PIXEL_MODE_GRAY8`, and the corresponding  raster flag
41    is `FT_RASTER_FLAG_SDF`.
42
43    This work was Anuj Verma's GSoC 2020 project.
44
45  - A new, experimental API is  now available for surfacing properties
46    of 'COLR' v1  color fonts (as the name says,  this is an extension
47    to  the  'COLR' table  for  outline  color  fonts using  the  SFNT
48    container  format).   'COLR'  v1  fonts are  a  recently  proposed
49    addition to OFF and OpenType; specification work currently happens
50    in
51
52      https://github.com/googlefonts/colr-gradients-spec/
53
54    'COLR'  v1  is  expected  to   be  merged  to  OpenType;  the  ISO
55    standardisation process  for adding 'COLR'  v1 as an  amendment to
56    OFF is underway.
57
58    Functions similar  to the  already existing  'COLR' API  have been
59    added to access the corresponding data.
60
61      FT_Get_Color_Glyph_Paint
62        Retrieve the root paint for a given glyph ID.
63
64      FT_Get_Paint_Layers
65        Access the layers of a `PaintColrLayers` table.
66
67      FT_Get_Colorline_Stops
68        Retrieve the  'color stops' on a  color line.  As an  input, a
69        color stop iterator gets used, which in turn is retrieved from
70        a paint.
71
72      FT_Get_Paint
73        Dereference  an  `FT_OpaquePaint`   object  and  retrieve  the
74        corresponding `FT_COLR_Paint`  object, which  contains details
75        on how to draw the respective 'COLR' v1 `Paint` table.
76
77
78  II. MISCELLANEOUS
79
80  - FreeType has moved its infrastructure to
81
82      https://gitlab.freedesktop.org/freetype
83
84    A  side  effect  is  that  the git  repositories  are  now  called
85    `freetype.git` and  `freetype-demos.git`, which by  default expand
86    to the directories  `freetype` and `freetype-demos`, respectively.
87    The documentation has been updated accordingly.
88
89    FreeType's Savannah  repositories will stay; they  are now mirrors
90    of the 'freedesktop.org' repositories.
91
92  - A  new  function  `FT_Get_Transform`  returns  the  values set  by
93    `FT_Set_Transform`.
94
95  - A  new configuration  macro `FT_DEBUG_LOGGING`  is available.   It
96    provides extended debugging capabilities for FreeType, for example
97    showing a time stamp or displaying the component a tracing message
98    comes from.  See file `docs/DEBUG` for more information.
99
100    This work was Priyesh Kumar's GSoC 2020 project.
101
102  - The legacy Type 1 and CFF  engines are further demoted due to lack
103    of CFF2 charstring support.  You now need to use `FT_Property_Set`
104    to  enable  them  besides  the  `T1_CONFIG_OPTION_OLD_ENGINE`  and
105    `CFF_CONFIG_OPTION_OLD_ENGINE` options, respectively.
106
107  - The experimental 'warp' mode (AF_CONFIG_OPTION_USE_WARPER) for the
108    auto-hinter has been removed.
109
110  - The smooth rasterizer performance has been improved by >10%.  Note
111    that  due to  necessary code  changes there  might be  very subtle
112    differences  in  rendering.  They  are  not  visible by  the  eye,
113    however.
114
115  - PCF bitmap fonts compressed with LZW (these are usually files with
116    the extension `.pcf.Z`) are now handled correctly.
117
118  - Improved  Meson  build  files,  including  support  to  build  the
119    FreeType demo programs.
120
121  - A new demo program `ftsdf` is available to display Signed Distance
122    Fields of glyphs.
123
124  - The `ftlint` demo program has been  extended to do more testing of
125    its input.  In particular, it  can display horizontal and vertical
126    acutances  for quality  assessment,  together  with computing  MD5
127    checksums of rendered glyphs.
128
129    [The acutance measures  how sharply the pixel  coverage changes at
130     glyph edges.  For monochrome bitmaps,  it is always 2.0 in either
131     X or  Y direction.  For  anti-aliased bitmaps, it depends  on the
132     hinting and the shape of a glyph and might approach or even reach
133     value 2.0  for glyphs like 'I',  'L', '+', '-', or  '=', while it
134     might be lower for glyphs like 'O', 'S', or 'W'.]
135
136  - The `ttdebug`  demo program didn't show  changed point coordinates
137    (bug introduced in version 2.10.3).
138
139  - It is now possible to adjust the axis increment for variable fonts
140    in the `ftmulti` demo program.
141
142  - It is now possible to change  the hinting engine in the `ftstring`
143    demo program.
144
145  - The graphical demo programs work  better now in native color depth
146    on win32 and x11.
147
148
149======================================================================
150
151CHANGES BETWEEN 2.10.3 and 2.10.4 (2020-Oct-20)
152
153  I. IMPORTANT BUG FIXES
154
155  - A heap buffer overflow has been found  in the handling of embedded
156    PNG bitmaps, introduced in FreeType version 2.6.
157
158      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-15999
159
160    If you  use option  FT_CONFIG_OPTION_USE_PNG  you  should  upgrade
161    immediately.
162
163
164======================================================================
165
166CHANGES BETWEEN 2.10.2 and 2.10.3 (2020-Oct-10)
167
168  I. IMPORTANT CHANGES
169
170  - New flag `FT_OUTLINE_OVERLAP'.  If set, make the smooth rasterizer
171    do  4x4 oversampling  to  mitigate artifacts  in pixels  partially
172    covered  by  overlapping  contours.    Note  that  this  at  least
173    quadruples the rendering time.
174
175    If  a  glyph  in  a  TrueType font  has  the  `OVERLAP_SIMPLE'  or
176    `OVERLAP_COMPOUND'  bit set,  FreeType automatically  selects this
177    rendering mode.
178
179
180  II. MISCELLANEOUS
181
182  - Using the  arcane method of  including FreeType header  files with
183    macros like  `FT_FREETYPE_H' is no longer  mandatory (but retained
184    as an optional feature for backward compatibility).
185
186  - Support for  building the library  with Meson.  Building  the demo
187    programs with Meson will follow in a forthcoming release.
188
189  - Minor improvements to the B/W rasterizer.
190
191  - Auto-hinter support for Medefaidrin script.
192
193  - Fix various  memory leaks (mainly  for CFF) and other  issues that
194    might cause crashes in rare circumstances.
195
196  - Jam support has been removed.
197
198  - In  `ftview', custom  LCD  filter values  are  now normalized  and
199    balanced.  Unorthodox filters are still available through the `-L'
200    command line option.
201
202  - The GUI demo programs can now be resized.
203
204  - Demo programs that accept command  line option `-k' can now handle
205    function keys, too.  The  corresponding character codes start with
206    0xF1.  As  an example, the  POSIX shell syntax (accepted  by bash,
207    ksh, and zsh)
208
209      -k $'\xF3q'
210
211    emulates the pressing of function key `F3' followed by key `q'.
212
213
214======================================================================
215
216CHANGES BETWEEN 2.10.1 and 2.10.2 (2020-May-09)
217
218  I. IMPORTANT CHANGES
219
220  - Support  of  WOFF2  fonts.   This  code  contribution  was  Nikhil
221    Ramakrishnan's GSoC 2019 project.
222
223
224  II. MISCELLANEOUS
225
226  - Function  `FT_Get_Var_Axis_Flags' returned random data for  Type 1
227    MM fonts.
228
229  - Type 1 fonts with non-integer metrics are now supported by the new
230    (CFF) engine introduced in FreeType 2.9.
231
232  - Drop  support  for Python 2 in Freetype's API reference  generator
233    `docwriter'  (Python >= 3.5 is required for targets  `make refdoc'
234    and `make refdoc-venv').
235
236  - Auto-hinter support for Hanifi Rohingya.
237
238  - Document the `FT2_KEEP_ALIVE' debugging environment variable.
239
240  - The Visual C++ (and Visual C)  project files for Windows builds no
241    longer generate libraries that contain the FreeType version in its
242    filenames.   Instead,  a  resource  file gets  used  to  make  the
243    libraries contain the corresponding information.
244
245  - The next release will remove Jam build support.
246
247  - The  `ftbench'  demo  program  has  a new  test  for  testing  the
248    `FT_Glyph_Stroke' functionality.
249
250
251======================================================================
252
253CHANGES BETWEEN 2.10.0 and 2.10.1 (2019-Jul-01)
254
255  I. IMPORTANT BUG FIXES
256
257  - The bytecode hinting of OpenType variation fonts was flawed, since
258    the data in the `CVAR' table wasn't correctly applied.
259
260
261  II. MISCELLANEOUS
262
263  - Auto-hinter support for Mongolian.
264
265  - For distribution,  `.tar.bz2' packages are replaced with `.tar.xz'
266    bundles.
267
268  - The handling of  the default character in PCF fonts as  introduced
269    in version 2.10.0 was partially broken, causing premature abortion
270    of charmap iteration for many fonts.
271
272  - If  `FT_Set_Named_Instance' was  called  with  the same  arguments
273    twice in a row, the function  returned an incorrect error code the
274    second time.
275
276  - Direct   rendering   using  FT_RASTER_FLAG_DIRECT   crashed   (bug
277    introduced in version 2.10.0).
278
279  - Increased  precision  while  computing  OpenType  font   variation
280    instances.
281
282  - The  flattening  algorithm of  cubic  Bezier  curves was  slightly
283    changed to make  it faster.  This can cause  very subtle rendering
284    changes, which aren't noticeable by the eye, however.
285
286  - The  auto-hinter  now  disables hinting  if there  are blue  zones
287    defined for a `style' (i.e., a certain combination of a script and
288    its related typographic features) but the font doesn't contain any
289    characters needed to set up at least one blue zone.
290
291  - The `ftmulti' demo program now  supports multiple hidden axes with
292    the same name tag.
293
294  - `ftview', `ftstring', and `ftgrid' got  a `-k' command line option
295    to emulate a sequence of keystrokes at start-up.
296
297  - `ftview', `ftstring', and `ftgrid' now support screen dumping to a
298    PNG file.
299
300  - The bytecode debugger, `ttdebug',  now supports variation TrueType
301    fonts; a variation font instance can be selected with the new `-d'
302    command line option.
303
304
305======================================================================
306
307CHANGES BETWEEN 2.9.1 and 2.10.0 (2019-Mar-15)
308
309  I. IMPORTANT CHANGES
310
311    - A bunch  of new functions has  been added to access  and process
312      COLR/CPAL data of OpenType fonts with color-layered glyphs.
313
314        FT_Palette_Data_Get
315          Retrieve color palette data.
316        FT_Palette_Select
317          Select and activate a color palette for color-layered
318          glyphs.
319        FT_Palette_Set_Foreground_Color
320          Set text foreground color for palette index 0xFFFF.
321
322        FT_Get_Color_Glyph_Layer
323          Get color layers for a given glyph (using an interator
324          object).
325
326        FT_Bitmap_Blend
327          Blend one bitmap onto another with a given color.
328
329    - An   experimental  feature   is   the  new   behaviour  of   the
330      `FT_LOAD_COLOR' load  flag for color-layered  glyphs: Internally
331      it  sets a  flag so  that  if `FT_Render_Glyph'  is called  with
332      `FT_RENDER_MODE_NORMAL'      (or       `FT_Load_Glyph'      with
333      `FT_LOAD_RENDER'), a default blending  of the color glyph layers
334      will happen automatically for convenience.
335
336    - As  a   GSoC  2018   project,  Nikhil   Ramakrishnan  completely
337      overhauled and modernized the API reference.
338
339
340  II. MISCELLANEOUS
341
342    - The  logic for  computing  the global  ascender, descender,  and
343      height  of  OpenType  fonts   has  been  slightly  adjusted  for
344      consistency.
345
346      . If the `useTypoMetrics' flag (i.e., bit 7 in the `fsSelection'
347        field) in the  `OS/2' table is set, use the  `sTypo' fields in
348        `OS/2' unconditionally.
349      . Otherwise use  the metrics data from the `hhea'  table (if not
350        zero).
351      . Otherwise use the `sTypo' fields from the `OS/2' table (if not
352        zero).
353      . Otherwise use the `usWin' data from the `OS/2' table as a last
354        resort.
355
356      Variable fonts will apply the `MVAR' deltas to whichever metrics
357      were picked.
358
359    - `TT_Set_MM_Blend' could  fail if  call repeatedly with  the same
360      arguments.
361
362    - The precision  of handling  deltas in  Variation Fonts  has been
363      increased.  The  problem did only show  up with multidimensional
364      designspaces.
365
366    - New function `FT_Library_SetLcdGeometry' to  set up the geometry
367      of LCD subpixels.
368
369    - FreeType now uses the `defaultChar' property of PCF fonts to set
370      the  glyph for  the undefined  character  at glyph  index 0  (as
371      FreeType already does for all other supported font formats).  As
372      a consequence,  the order of  glyphs of  a PCF font  if accessed
373      with  FreeType  can  be   different  now  compared  to  previous
374      versions.
375
376      This change doesn't affect PCF font access with cmaps.
377
378    - `FT_Select_Charmap' has  been changed  to allow  parameter value
379      `FT_ENCODING_NONE', which is valid for BDF, PCF, and Windows FNT
380      formats to  access built-in cmaps  that don't have  a predefined
381      `FT_Encoding' value.
382
383    - A previously  reserved field in the  `FT_GlyphSlotRec' structure
384      now holds the glyph index.
385
386    - On Win32 platforms,  the use of `_DLL' to build  the library has
387      been replaced with `DLL_EXPORT' and `DLL_IMPORT'.
388
389    - The usual round  of fuzzer bug fixes to  better reject malformed
390      fonts.
391
392    - `FT_Outline_New_Internal'  and  `FT_Outline_Done_Internal'  have
393      been removed.  These two functions were public by oversight only
394      and were never documented.
395
396    - A new  function `FT_Error_String' returns descriptions  of error
397      codes if  configuration macro  FT_CONFIG_OPTION_ERROR_STRINGS is
398      defined.
399
400    - `FT_Set_MM_WeightVector'  and  `FT_Get_MM_WeightVector' are  new
401      functions limited to Adobe MultiMaster fonts to directly set and
402      get the weight vector.
403
404    - Support for Position Independent Code as needed by  systems that
405      prohibit  automatic  address  fixups,  such  as BREW,  has  been
406      removed.  [Compilation with modern compilers that use flags like
407      `-fPIC' or `-fPIE' is not affected.]
408
409    - The  `ftdump' demo  program has  new  options `-c'  and `-C'  to
410      display charmaps  in compact and detailed  format, respectively.
411      Option `-V' has been removed.
412
413    - The `ftview', `ftstring',  and `ftgrid' demo programs  use a new
414      command line option `-d' to  specify the program window's width,
415      height, and color depth.
416
417    - The `ftview' demo program now  displays red boxes for zero-width
418      glyphs.
419
420    - `ftglyph'   has   limited   support  to   display   fonts   with
421      color-layered glyphs.  This will be improved later on.
422
423    - `ftgrid' can now display bitmap fonts also.
424
425    - The `ttdebug'  demo program has  a new  option `-f' to  select a
426      member of a TrueType collection (TTC).
427
428    - Other various improvements to the demo programs.
429
430
431======================================================================
432
433CHANGES BETWEEN 2.9 and 2.9.1 (2019-May-01)
434
435  I. IMPORTANT BUG FIXES
436
437    - Type  1  fonts  containing   flex  features  were  not  rendered
438      correctly (bug introduced in version 2.9).
439
440    - CVE-2018-6942: Older  FreeType versions  can crash  with certain
441      malformed variation fonts.
442
443        https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6942
444
445
446  II. MISCELLANEOUS
447
448    - Bug fix: Multiple calls to `FT_Get_MM_Var' returned garbage.
449
450    - The base  extensions `ftlcdfil' and  `ftfntfmt' are now  part of
451      the  base  module  (and  thus no  longer  configurable  in  file
452      `modules.cfg').
453
454    - Emboldening of bitmaps didn't work correctly sometimes,  showing
455      various artifacts (bug introduced in version 2.8.1).
456
457    - Use  of  the `freetype-config'  script  to  get compilation  and
458      linking  options   is  deprecated   since  it   doesn't  support
459      cross-compiling, among other  deficiencies.  Instead, you should
460      use the `pkg-config' interface.
461
462      The `configure'  script no longer installs  `freetype-config' by
463      default.  For  backward  compatibility,  a new  configure option
464      `--enable-freetype-config'   is  provided   that  reverts   this
465      decision.
466
467    - The auto-hinter script ranges have  been updated for Unicode 11.
468      No support  for new scripts  have been added, however,  with the
469      exception of Georgian Mtavruli.
470
471    - Support for cmake has been improved.
472
473    - The next  release will  remove support for  Position Independent
474      Code  as  needed  by  systems that  prohibit  automatic  address
475      fixups, such  as BREW.  [Compilation with  modern compilers that
476      use flags like `-fPIC' or `-fPIE' is not affected.]
477
478
479======================================================================
480
481CHANGES BETWEEN 2.8.1 and 2.9 (2018-Jan-08)
482
483  I. IMPORTANT BUG FIXES
484
485    - Advance width values of variation fonts were often wrong.
486
487    - More fixes for variation font support; you should update to this
488      version if you want to support them.
489
490
491  II. IMPORTANT CHANGES
492
493    - As a GSoC project, Ewald Hew extended the new (Adobe) CFF engine
494      to  handle  Type  1  fonts  also,  thus  greatly  improving  the
495      rendering of  this format.   This is the  new default.   The old
496      engine   is  still   available   if   the  configuration   macro
497      `T1_CONFIG_OPTION_OLD_ENGINE'    gets    defined;   using    the
498      `hinting-engine' property  of the `type1' driver  module you can
499      then switch between the two engines.
500
501    - A new function,  `FT_Set_Named_Instance', can be used  to set or
502      change the current named instance.
503
504    - Starting  with   this  FreeType  version,   resetting  variation
505      coordinates  will   return  to  the  currently   selected  named
506      instance.  Previously, FreeType returned to the base font (i.e.,
507      no instance set).
508
509
510  III. MISCELLANEOUS
511
512    - The `face_flags' field of the `FT_Face' structure has a new bit,
513      `FT_FACE_FLAG_VARIATION', which  is set if a  variation font has
514      been      altered      with      `FT_Set_MM_Design_Coordinates',
515      `FT_Set_Var_Design_Coordinates',                              or
516      `FT_Set_Var_Blend_Coordinates'.
517
518    - If  the  current  face  is  a  named  instance,  the  new  macro
519      `FT_IS_NAMED_INSTANCE' returns true.
520
521    - `FT_IS_VARIATION' is  a new macro  that returns true  whenever a
522      face object has  been altered by `FT_Set_MM_Design_Coordinates',
523      `FT_Set_Var_Design_Coordinates',                              or
524      `FT_Set_Var_Blend_Coordinates'.
525
526    - Changing  the  design  coordinates  of  a  variation  font  with
527      `FT_Set_Var_Design_Coordinates'                               or
528      `FT_Set_Var_Blend_Coordinates'  does  not  influence  the  named
529      instance index value (only `FT_Set_Named_Instance' does that).
530
531    - Special PostScript  names for named instances  are only returned
532      if the  named instance is set  with `FT_Set_Named_Instance' (and
533      the font  has corresponding  entries in  its `fvar'  table).  If
534      `FT_IS_VARIATION'  returns  true,  the  algorithmically  derived
535      PostScript name is provided, not  looking up special entries for
536      named instances.
537
538    - A new function  `FT_Done_MM_Var' is provided to  free the memory
539      returned in a call to `FT_Get_MM_Var'.
540
541    - On  platforms  using  the   `configure'  script,  the  installed
542      `ftoption.h' file  now correctly reflects  configuration options
543      like `--with-harfbuzz'.
544
545    - Better  support to  build FreeType  as  a DLL  on Windows  using
546      Visual C.
547
548    - All data specific to driver modules is now collected in a single
549      file,      `FT_DRIVER_H'.      Consequently,      the     macros
550      `FT_AUTOHINTER_H',   `FT_CFF_DRIVER_H',  `FT_TRUETYPE_DRIVER_H',
551      and `FT_PCF_DRIVER_H' still work but are deprecated.
552
553    - Some fuzzer fixes to better reject malformed fonts.
554
555    - The `ftbench' demo program has a new test for opening a new face
556      and loading some glyphs.
557
558    - The `ftbench' demo program has a  new option `-j' to specify the
559      last glyph index to be used in the tests.
560
561    - The  `ftgrid' demo  program has  a new  option `-n'  to suppress
562      display of named instances of variation fonts.
563
564    - The `ttdebug' demo program can now  show a stack trace (key `K')
565      and switch  between hexadecimal and decimal  display of integers
566      (key `I').
567
568
569======================================================================
570
571CHANGES BETWEEN 2.8 and 2.8.1 (2017-Sep-16)
572
573  I. IMPORTANT BUG FIXES
574
575    - B/W  hinting   of  TrueType   fonts  didn't  work   properly  if
576      interpreter version 38 or 40 was selected.
577
578    - Some severe  problems within the handling  of TrueType Variation
579      Fonts were found and fixed.
580
581    - Function `FT_Set_Var_Design_Coordinates' didn't correctly handle
582      the case with less input coordinates than axes.
583
584
585  II. IMPORTANT CHANGES
586
587    - By  default,  FreeType  now offers  high  quality  LCD-optimized
588      output without  resorting to ClearType techniques  of resolution
589      tripling and  filtering.  In  this method, called  Harmony, each
590      color channel  is generated separately after  shifting the glyph
591      outline, capitalizing  on the fact  that the color grids  on LCD
592      panels  are shifted  by  a third  of a  pixel.   This output  is
593      indistinguishable from ClearType with a light 3-tap filter.
594
595
596  III. MISCELLANEOUS
597
598    - Using the  new function `FT_Get_Var_Axis_Flags',  an application
599      can access the `flags' field  of a variation axis (introduced in
600      OpenType version 1.8.2)
601
602    - More sanity checks.
603
604    - The  internal representation  of buffers  for LCD  rendering has
605      changed (to be more precise, the amount of padding gets computed
606      differently).  Applications  that use  the FreeType API  are not
607      affected.
608
609    - To  reset all  design axis  values of  a variation  font to  its
610      default values you can now say
611
612        error = FT_Set_Var_Design_Coordinates( face, 0, NULL );
613
614      This  also works  with functions  `FT_Set_MM_Design_Coordinates'
615      and `FT_Set_MM_Blend_Coordinates'.
616
617    - FreeType  now synthesizes  a  missing Unicode  cmap for  (older)
618      TrueType fonts also if glyph names are available.
619
620    - FreeType  has  improved  handling   of  BDF  fonts  without  the
621      `POINT_SIZE', `RESOLUTION_X', or  `RESOLUTION_Y' properties; the
622      library now  uses the values of  the `SIZE' keyword if  they are
623      missing.   Previously,   `SIZE'  was  completely   ignored,  and
624      FreeType used heuristic values instead.
625
626    - Multiple calls to `FT_Bitmap_Convert' do work now as advertised.
627      Previously,  they failed with an assertion error if there was an
628      empty bitmap between non-empty ones.
629
630    - The warping option  has moved  from `light'  to `normal' hinting
631      where  it replaces  the original hinting algorithm.  The `light'
632      mode is now always void of any hinting in x-direction.
633
634    - 16bit  compiler  support is  now  officially  ended.  We  didn't
635      provide any maintenance  since many years,  and given that there
636      were no error  or problem reports either it seems  that it is no
637      longer needed.
638
639    - The `ftgrid'  demo program  can now toggle  the display  of grid
640      lines with the `G' key.
641
642    - The `ftgrid' demo  program can toggle a different  set of colors
643      (suitable to color-blind people) with the `C' key.
644
645    - The `ftgrid'  demo program  now supports  the `-e'  command line
646      option to select a cmap.
647
648    - The `ftdump' demo program has a  new command line option `-t' to
649      output the SFNT table list.
650
651
652======================================================================
653
654CHANGES BETWEEN 2.7.1 and 2.8 (2017-May-13)
655
656  I. IMPORTANT CHANGES
657
658    - Support for OpenType Variation Fonts is now complete.   The last
659      missing part was handling the `VVAR' and `MVAR' tables, which is
660      available with this release.
661
662    - A new  function `FT_Face_Properties' allows the  control of some
663      module  and   library  properties  per  font.    Currently,  the
664      following properties can be  handled: stem darkening, LCD filter
665      weights, and the random seed for the `random' CFF operator.
666
667    - The PCF change to show more `colorful'  family names (introduced
668      in version 2.7.1) was too radical; it can now be configured with
669      PCF_CONFIG_OPTION_LONG_FAMILY_NAMES   at   compile   time.    If
670      activated, it can  be switched off at run time  with the new pcf
671      property  `no-long-family-names'.  If  the `FREETYPE_PROPERTIES'
672      environment variable is available, you can say
673
674        FREETYPE_PROPERTIES=pcf:no-long-family-names=1
675
676    - Support  for  the  following  scripts  has  been  added  to  the
677      auto-hinter.
678
679        Adlam, Avestan, Bamum, Buhid, Carian, Chakma, Coptic, Cypriot,
680        Deseret, Glagolitic, Gothic, Kayah, Lisu, N'Ko, Ol Chiki, Old
681        Turkic, Osage, Osmanya, Saurashtra, Shavian, Sundanese, Tai
682        Viet, Tifinagh, Unified Canadian Syllabics, Vai
683
684
685  II. IMPORTANT BUG FIXES
686
687    - `Light' auto-hinting  mode no  longer uses TrueType  metrics for
688      TrueType  fonts.   This bug  was  introduced  in version  2.4.6,
689      causing   horizontal  scaling   also.    Almost  all   GNU/Linux
690      distributions (with Fedora as  a notable exception) disabled the
691      corresponding patch for good reasons; chances are thus high that
692      you won't notice a difference.
693
694      If  optical backward  compatibility for  legacy applications  is
695      necessary, you might enable the AF_CONFIG_OPTION_TT_SIZE_METRICS
696      configuration option.   However, it  is strongly  recommended to
697      avoid that, adjusting font sizes instead.
698
699    - Global size  metrics values  in the  `FT_Size_Metrics' structure
700      can be  different for TrueType  fonts.  Reason is that  in older
701      FreeType  versions  the  metrics  were  rounded  differently  to
702      integer pixels compared  to all other font  formats, yielding an
703      inconsistent behaviour if you used non-native hinting.  Starting
704      with this  version, global size  metrics for TrueType  fonts are
705      handled the same as other  font formats: `ascender' gets rounded
706      up,  `descender'  gets  rounded  down,  `height'  gets  normally
707      rounded, and `max_advance' gets normally rounded, too.
708
709      If you need more precise values of (global) ascender, descender,
710      height, or  `max_advance', please take the  corresponding values
711      from the `FT_Face' structure and scale them manually.
712
713    - If a TrueType font gets loaded with FT_LOAD_NO_HINTING, FreeType
714      now scales  the font linearly  again (bug introduced  in version
715      2.4.6).
716
717    - CVE-2017-8105,  CVE-2017-8287:  Older   FreeType  versions  have
718      out-of-bounds  writes  caused  by  heap-based  buffer  overflows
719      related to Type 1 fonts.
720
721        https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8105
722        https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8287
723
724
725  III. MISCELLANEOUS
726
727    - A  new function  `FT_Set_Default_Properties' has  been added  to
728      parse    the    `FREETYPE_PROPERTIES'    environment    variable
729      (previously, it  was internal only).   `FT_Init_FreeType' always
730      call this  function, but  `FT_New_Library' does not  (similar to
731      `FT_Add_Default_Modules').
732
733    - To be in sync with OpenType version 1.7 and newer, macros
734
735        FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
736        FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY,
737        TT_NAME_ID_PREFERRED_FAMILY
738        TT_NAME_ID_PREFERRED_SUBFAMILY
739
740      are renamed to
741
742        FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY,
743        FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY,
744        TT_NAME_ID_TYPOGRAPHIC_FAMILY
745        TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY
746
747      The old macro names are deprecated (but still available).
748
749    - Support for SFNT `name' tables has been improved.
750
751      . Format  1 `name' tables  are now supported.  Use  new function
752        `FT_Get_Sfnt_LangTag' to access associated language tags.
753
754      . Language, encoding, and name IDs have been updated to OpenType
755        version 1.8.1.
756
757    - The new CFF  engine now handles the `random'  operator.  All CFF
758      opcodes are now supported.
759
760    - The CFF module  has a new property `random-seed'  to control the
761      pseudo-random number generation for the `random' operator.
762
763    - The `freetype-config' script is now a wrapper of `pkg-config' if
764      this program is available in the path.
765
766    - FT_LOAD_TARGET_LCD  is now  a  variant of  FT_LOAD_TARGET_LIGHT;
767      this should provide better rendering results.
768
769    - A mode to display  light auto-hinting with  subpixel positioning
770      has been added to `ftdiff'.
771
772
773======================================================================
774
775CHANGES BETWEEN 2.7 and 2.7.1 (2016-Dec-30)
776
777  I. IMPORTANT CHANGES
778
779    - Support for the new CFF2 font format as introduced with OpenType
780      1.8 has been contributed by Dave Arnolds from Adobe.
781
782    - Preliminary support for variation fonts as specified in OpenType
783      1.8 (in addition to the  already existing support for Adobe's MM
784      and Apple's  GX formats).  Dave Arnolds  contributed handling of
785      advance  width change  variation;  more will  come  in the  next
786      version.
787
788
789  II. IMPORTANT BUG FIXES
790
791    - Handling of  raw CID fonts was partially  broken (bug introduced
792      in 2.6.4).
793
794    - CVE-2016-10328:  Older  FreeType versions had  an  out-of-bounds
795      write caused by a heap-based  buffer overflow related to the CFF
796      fonts.
797
798        https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10328
799
800
801  III. MISCELLANEOUS
802
803    - Some limits for TrueType  bytecode execution have been tightened
804      to  speed   up  FreeType's  handling  of   malformed  fonts,  in
805      particular to quickly abort endless loops.
806
807      - The  number of  twilight points  can no  longer be  set to  an
808        arbitrarily large value.
809
810      - The total number of jump  opcode instructions (like JMPR) with
811        negative arguments  is dynamically restricted; the  same holds
812        for the total number of iterations in LOOPCALL opcodes.
813
814      The dynamic limits are based on  the number of points in a glyph
815      and the number of CVT entries.  Please report if you encounter a
816      font where the selected values are not adequate.
817
818    - PCF family names are made more `colorful';  they now include the
819      foundry  and information  whether they contain  wide characters.
820      For example,  you no longer get `Fixed' but  rather `Sony Fixed'
821      or `Misc Fixed Wide'.
822
823    - A new  function `FT_Get_Var_Blend_Coordinates'  (with its  alias
824      name  `FT_Get_MM_Blend_Coordinates') to retrieve the  normalized
825      blend  coordinates of the currently  selected variation instance
826      has been added to the Multiple Masters interface.
827
828    - A new  function `FT_Get_Var_Design_Coordinates' to  retrieve the
829      design coordinates of the  currently selected variation instance
830      has been added to the Multiple Masters interface.
831
832    - A new load flag `FT_LOAD_BITMAP_METRICS_ONLY' to retrieve bitmap
833      information without loading the (embedded) bitmap itself.
834
835    - Retrieving   advance   widths   from   bitmap   strikes   (using
836      `FT_Get_Advance' and `FT_Get_Advances') have been sped up.
837
838    - The  usual round  of  fuzzer fixes  to  better reject  malformed
839      fonts.
840
841    - The `ftmulti' demo program can now switch engines with key `H'.
842
843    - The  `ftstring'  demo  program   can  now  show  some  built-in,
844      non-latin sample strings (to be selected with the TAB key).
845
846    - The  `ftview'  demo program  can  now  switch between  a  font's
847      charmaps using the TAB key.
848
849
850======================================================================
851
852CHANGES BETWEEN 2.6.5 and 2.7 (2016-Sep-08)
853
854  I. IMPORTANT CHANGES
855
856    - As announced earlier, the 2.7.x series now uses the new subpixel
857      hinting  mode as  the  default, emulating  a  modern version  of
858      ClearType.
859
860      This change inevitably leads to different rendering results, and
861      you   might   change   the   `TT_CONFIG_OPTION_SUBPIXEL_HINTING'
862      configuration option to  adapt it to your taste (or  use the new
863      `FREETYPE_PROPERTIES'    environment    variable).    See    the
864      corresponding entry  below for  version 2.6.4, which  gives more
865      information.
866
867    - A new option  `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES' has been
868      introduced.   If  set (which  is  the  default), an  environment
869      variable  `FREETYPE_PROPERTIES' can  be used  to control  driver
870      properties.  Example:
871
872        FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
873                            cff:no-stem-darkening=1 \
874                            autofitter:warping=1
875
876      This allows to select, say, the subpixel hinting mode at runtime
877      for a given application.  See file `ftoption.h' for more.
878
879
880  II. IMPORTANT BUG FIXES
881
882    - After  loading a  named instance  of  a GX  variation font,  the
883      `face_index'  value  in  the returned  `FT_Face'  structure  now
884      correctly holds the named instance  index in the upper 16bits as
885      documented.
886
887
888  III. MISCELLANEOUS
889
890    - A new macro `FT_IS_NAMED_INSTANCE' to  test whether a given face
891      is a named instance.
892
893    - More fixes to GX font handling.
894
895    - Apple's   `GETVARIATION'  bytecode   operator  (needed   for  GX
896      variation font support) has been implemented.
897
898    - Another round  of fuzzer fixes,  mainly to reject  invalid fonts
899      faster.
900
901    - Handling of raw CID fonts  was broken (bug introduced in version
902      2.6.4).
903
904    - The smooth rasterizer has been streamlined  to make it faster by
905      approx. 20%.
906
907    - The `ftgrid'  demo program now  understands command  line option
908      `-d' to give start-up design coordinates.
909
910    - The `ftdump' demo program has  a new command line option `-p' to
911      dump TrueType bytecode instructions.
912
913
914======================================================================
915
916CHANGES BETWEEN 2.6.4 and 2.6.5 (2016-Jul-12)
917
918  I. IMPORTANT BUG FIXES
919
920    - Compilation works again  on Mac OS X (bug introduced  in version
921      2.6.4).
922
923
924  II. IMPORTANT CHANGES
925
926    - The new  subpixel hinting  mode is now  disabled by  default; it
927      will  be enabled  by default  in the  forthcoming 2.7.x  series.
928      Main reason for reverting this feature is the principle of least
929      surprise: a  sudden change in  appearance of all fonts  (even if
930      the rendering improves  for almost all recent  fonts) should not
931      be expected in a new micro version of a series.
932
933
934======================================================================
935
936CHANGES BETWEEN 2.6.3 and 2.6.4 (2016-Jul-05)
937
938  I. IMPORTANT CHANGES
939
940    - A new  subpixel hinting  mode has  been contributed  by Nikolaus
941      Waxweiler, which is now the  default rendering mode for TrueType
942      fonts.  It implements  (almost everything of) version  40 of the
943      bytecode engine.
944
945      The existing code  base in FreeType (the  `Infinality code') was
946      stripped to the bare minimum  and all configurability removed in
947      the  name  of speed  and  simplicity.   The configurability  was
948      mainly aimed  at legacy  fonts like Arial,  Times New  Roman, or
949      Courier.  [Legacy fonts are fonts  that modify vertical stems to
950      achieve clean black-and-white bitmaps.]  The new mode focuses on
951      applying a minimal set of rules to all fonts indiscriminately so
952      that modern and web fonts  render well while legacy fonts render
953      okay.
954
955      Activation  of the  subpixel hinting  support can  be controlled
956      with   the   `TT_CONFIG_OPTION_SUBPIXEL_HINTING'   configuration
957      option  at compile  time: If  set to  value 1,  you get  the old
958      Infinality  mode  (which  was  never  the  default  due  to  its
959      slowness).  Value 2 activates the new subpixel hinting mode, and
960      value 3 activates both.  The default is value 2.
961
962      At run time,  you can select the subpixel hinting  mode with the
963      `interpreter-version'  property (provided  you have  compiled in
964      the corresponding hinting mode); see `ftttdrv.h' for more.
965
966    - Support  for  the  following  scripts  has  been  added  to  the
967      auto-hinter.
968
969        Armenian, Cherokee, Ethiopic, Georgian, Gujarati, Gurmukhi,
970        Malayalam, Sinhala, Tamil
971
972
973  II. MISCELLANEOUS
974
975    - Type 42 fonts as created by LilyPond are now supported.
976
977    - Minor rendering improvements in the auto-hinter.
978
979    - For experimental  reasons, the old  CFF engine now  supports all
980      CFF operators except `random', including the deprecated Multiple
981      Masters  instructions.  This  allows the  display of  fonts like
982      `ITCGaramondMM-It.otf' (without font variations, though).
983
984    - Another round of fixes to improve handling of invalid fonts.
985
986    - The `ftgrid' demo program now displays the rendered pixels also;
987      this can be switched off with the `b' key.  Selection of various
988      LCD filtering modes can be done with the `L' key.
989
990    - The demo programs  have been extended to allow  selection of all
991      available TrueType bytecode engines.
992
993    - A very early beta version of a new, Qt based demo program called
994      `ftinspect'  is  part  of  the   source  code  bundle;  it  will
995      eventually supersede  the other  demo programs.   Currently, you
996      have to compile  it manually with `qmake; make';  note that many
997      features are still missing.
998
999
1000======================================================================
1001
1002CHANGES BETWEEN 2.6.2 and 2.6.3 (2016-Feb-08)
1003
1004  I. IMPORTANT CHANGES
1005
1006    - Khmer,  Myanmar, Bengali,  and Kannada  script support  has been
1007      added to the auto-hinter.
1008
1009
1010  II. MISCELLANEOUS
1011
1012    - Better  support of  Indic  scripts like  Devanagari  by using  a
1013      top-to-bottom hinting flow.
1014
1015    - All  FreeType macros  starting  with two  underscores have  been
1016      renamed to  avoid a violation of  both the C and  C++ standards.
1017      Example: Header  macros of the  form `__FOO_H__' are  now called
1018      `FOO_H_'.  In most cases,  this should be completely transparent
1019      to the user.   The exception to this  is `__FTERRORS_H__', which
1020      must be  sometimes undefined by  the user to get  FreeType error
1021      strings:  Both this  form and  the new  `FTERRORS_H_' macro  are
1022      accepted for backward compatibility.
1023
1024    - Minor improvements mainly to the Type 1 driver.
1025
1026    - The  new CFF  engine now  supports all  Type 2  operators except
1027      `random'.
1028
1029    - The macro `_STANDALONE_', used for  compiling the B/W and smooth
1030      rasterizers  as   stand-alone  modules,  has  been   renamed  to
1031      `STANDALONE_', since macro names starting with an underscore and
1032      followed by an uppercase letter are reserved in both C and C++.
1033
1034    - Function  `FT_Library_SetLcdFilterWeights'  now  also  activates
1035      custom LCD filter weights (instead of just adjusting them).
1036
1037    - Support for  `unpatented hinting'  has been  completely removed:
1038      Consequently,  the two  functions `FT_Face_CheckTrueTypePatents'
1039      and  `FT_Face_SetUnpatentedHinting'  now  return  always  false,
1040      doing nothing.
1041
1042    - The `ftgamma' demo  program has been modernized;  the gamma grid
1043      display has been moved from `ftview' to this program.
1044
1045    - In `ftview',  it is now possible to cycle through  the available
1046      LCD filtering modes.
1047
1048
1049======================================================================
1050
1051CHANGES BETWEEN 2.6.1 and 2.6.2 (2015-Nov-28)
1052
1053  I. IMPORTANT CHANGES
1054
1055    - The auto-hinter now supports stem darkening, to be controlled by
1056      the    new   `no-stem-darkening'    and   `darkening-parameters'
1057      properties.   This is  an  experimental  feature contributed  by
1058      Nikolaus Waxweiler, and  the interface might change  in a future
1059      release.
1060
1061    - By default, stem darkening is now switched off (for both the CFF
1062      engine and the  auto-hinter).  The main reason is  that you need
1063      linear  alpha  blending  and  gamma correction  to  get  correct
1064      rendering results, and  the latter is not yet  available in most
1065      freely  available  rendering  stacks like  X11.   Applying  stem
1066      darkening without proper gamma correction  leads to far too dark
1067      rendering results.
1068
1069    - The   meaning  of   `FT_RENDER_MODE_LIGHT'  has   been  slightly
1070      modified.   It  now  essentially  means `no  hinting  along  the
1071      horizontal  axis'; in  particular,  no change  of glyph  advance
1072      widths.  Consequently, the auto-hinter  is used for all scalable
1073      font  formats  except  for  CFF.    It  is  planned  that  other
1074      font-specific rendering engines (TrueType, Type 1) will follow.
1075
1076
1077  II. MISCELLANEOUS
1078
1079    - The default  LCD filter  has been changed  to be  normalized and
1080      color-balanced.
1081
1082    - For    better    compatibility   with    FontConfig,    function
1083      `FT_Library_SetLcdFilter'  accepts   a  new   enumeration  value
1084      `FT_LCD_FILTER_LEGACY1'   (which  has   the   same  meaning   as
1085      `FT_LCD_FILTER_LEGACY').
1086
1087    - A large number of bugs have been detected by using the libFuzzer
1088      framework,  which should  further  improve  handling of  invalid
1089      fonts.  Thanks again to Kostya Serebryany and Bungeman!
1090
1091    - `TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES',  a   new  configuration
1092      option, controls the maximum number of executed opcodes within a
1093      bytecode program.  You don't want to change this except for very
1094      special  situations (e.g.,  making a  library fuzzer  spend less
1095      time to handle broken fonts).
1096
1097    - The smooth renderer has been made faster.
1098
1099    - The `ftstring' demo program now supports subpixel rendering; use
1100      key `l' to cycle through the LCD modes.
1101
1102    - The `ftstring'  demo program now supports  color rendering;  use
1103      the `space' key to cycle through various color combinations.
1104
1105    - The graphical demo programs now use a default gamma value of 1.8
1106      (instead of 1.2).
1107
1108
1109======================================================================
1110
1111CHANGES BETWEEN 2.6 and 2.6.1 (2015-Oct-04)
1112
1113  I. IMPORTANT BUG FIXES
1114
1115    - It turned  out that for CFFs  only the advance widths  should be
1116      taken from the  `htmx' table, not the side  bearings.  This bug,
1117      introduced in  version 2.6.0, makes  it necessary to  upgrade if
1118      you are using  CFFs; otherwise, you get cropped  glyphs with GUI
1119      interfaces like GTK or Qt.
1120
1121    - Accessing Type 42 fonts returned  incorrect results if the glyph
1122      order of the embedded TrueType font differs from the glyph order
1123      of the Type 42 charstrings table.
1124
1125
1126  II. IMPORTANT CHANGES
1127
1128    - The header  file layout  has been  changed (again),  moving  all
1129      header files except `ft2build.h' into a subdirectory tree.
1130
1131      Doing so  reduces the  possibility of  header file  name clashes
1132      (e.g., FTGL's  `FTGlyph.h' with FreeType's `ftglyph.h')  on case
1133      insensitive file systems like Mac OS X or Windows.
1134
1135      Applications  that  use  (a)  the  `freetype-config'  script  or
1136      FreeType's `freetype2.pc' file for pkg-config to get the include
1137      directory  for the  compiler,  and (b)  the  documented way  for
1138      header inclusion like
1139
1140        #include <ft2build.h>
1141        #include FT_FREETYPE_H
1142        ...
1143
1144      don't need any change to the source code.
1145
1146    - Simple access  to named instances  in GX variation fonts  is now
1147      available (in addition to the  previous method via FreeType's MM
1148      interface).   In  the `FT_Face'  structure,  bits  16-30 of  the
1149      `face_index' field hold the current named instance index for the
1150      given face  index, and bits  16-30 of `style_flags'  contain the
1151      number of  instances for  the given face  index.  `FT_Open_Face'
1152      and friends also understand the  extended bits of the face index
1153      parameter.
1154
1155      You need to enable  TT_CONFIG_OPTION_GX_VAR_SUPPORT for this new
1156      feature.  Otherwise, bits  16-30 of the two fields  are zero (or
1157      are ignored).
1158
1159    - Lao script support has been added to the auto-hinter.
1160
1161
1162  III. MISCELLANEOUS
1163
1164    - The auto-hinter's Arabic script support has been enhanced.
1165
1166    - Superscript-like and  subscript-like glyphs  as used  by various
1167      phonetic alphabets like the IPA  are now better supported by the
1168      auto-hinter.
1169
1170    - The TrueType bytecode interpreter now runs slightly faster.
1171
1172    - Improved support for builds with cmake.
1173
1174    - The  function  `FT_CeilFix'  now   always  rounds  towards  plus
1175      infinity.
1176
1177    - The  function  `FT_FloorFix'  now always  rounds  towards  minus
1178      infinity.
1179
1180    - A  new load  flag `FT_LOAD_COMPUTE_METRICS'  has been  added; it
1181      makes FreeType  ignore pre-computed  metrics, as needed  by font
1182      validating  or  font  editing  programs.  Right  now,  only  the
1183      TrueType  module supports  it  to ignore  data  from the  `hdmx'
1184      table.
1185
1186    - Another round of bug fixes  to better handle broken fonts, found
1187      by Kostya Serebryany <kcc@google.com>.
1188
1189
1190======================================================================
1191
1192CHANGES BETWEEN 2.5.5 and 2.6 (2015-Jun-07)
1193
1194  I. IMPORTANT CHANGES
1195
1196    - Behdad  Esfahbod contributed  code  for improved  thread-safety,
1197      which results in the following model.
1198
1199      * An `FT_Face' object can only be safely used from one thread at
1200        a time.
1201
1202      * An `FT_Library'  object can  now be used  without modification
1203        from multiple threads at the same time.
1204
1205      * `FT_Face' creation and destruction  with the same `FT_Library'
1206        object can only be done from one thread at a time.
1207
1208      One can use a single  `FT_Library' object across threads as long
1209      as a mutex lock is used around `FT_New_Face' and `FT_Done_Face'.
1210      Any calls to `FT_Load_Glyph' and similar API are safe and do not
1211      need the lock  to be held as  long as the same  `FT_Face' is not
1212      used from multiple threads at the same time.
1213
1214    - Thai script support has been added to the auto-hinter.
1215
1216    - Arabic script support has been added to the auto-hinter.
1217
1218    - Following OpenType version 1.7,  advance widths and side bearing
1219      values in  CFFs (wrapped  in an SFNT  structure) are  now always
1220      taken from the `hmtx' table.
1221
1222    - Following OpenType  version 1.7, the  PostScript font name  of a
1223      CFF font (wrapped in an SFNT structure) is now always taken from
1224      the `name'  table.  This is  also true for  OpenType Collections
1225      (i.e., TTCs using  CFFs subfonts instead of TTFs),  where it may
1226      have a significant difference.
1227
1228    - Fonts natively hinted for  ClearType are now supported, properly
1229      handling selector index 3 of the INSTCTRL bytecode instruction.
1230
1231    - Major improvements to the GX TrueType variation font handling.
1232
1233
1234  II. MISCELLANEOUS
1235
1236    - A new auto-hinter  property `warping' can switch on  and off the
1237      warping code  if this  experimental feature  is compiled  in (by
1238      defining  the AF_CONFIG_OPTION_USE_WARPER  configuration option;
1239      by default  this option is  now enabled but warping  is switched
1240      off).
1241
1242      The AF_CONFIG_OPTION_USE_WARPER option itself is an old feature,
1243      available   since  2006.    Warping   only   works  in   `light'
1244      auto-hinting mode.   The idea of  the code is to  slightly scale
1245      and  shift a  glyph  along the  non-hinted  dimension (which  is
1246      usually the horizontal axis) so that as much of its segments are
1247      aligned  (more or  less) to  the grid.   To find  out a  glyph's
1248      optimal   scaling   and   shifting  value,   various   parameter
1249      combinations are tried and scored.
1250
1251      See  file  `ftautoh.h' for  more;  the  demo programs  `ftdiff',
1252      `ftview', and `ftgrid' can toggle warping with key `w'.
1253
1254    - Some  fields  in  the  `FTC_ImageTypeRec'  structure  have  been
1255      changed from signed to unsigned  type, which better reflects the
1256      actual usage.  It is also an additional means to protect against
1257      malformed input.
1258
1259      This  change doesn't  break  the ABI;  however,  it might  cause
1260      compiler warnings.
1261
1262    - Function `FT_Bitmap_New'  has been renamed  to `FT_Bitmap_Init',
1263      since  this name  better reflects  its  function.   For backward
1264      compatibility, the old function name is still available.
1265
1266    - Function   `FT_Get_X11_Font_Format'   has    been   renamed   to
1267      `FT_Get_Font_Format',  since  this   name  better  reflects  its
1268      function.  For backward compatibility,  the old function name is
1269      still available.
1270
1271      Additionally, the header  file macro for this  function has been
1272      renamed to  `FT_FONT_FORMATS_H' (the old name  `FT_XFREE86_H' is
1273      retained for backward compatibility).
1274
1275    - Various improvements to the `ftgrid' demo program.
1276
1277      . It  can  now  display  GX and  MM  fonts  while  interactively
1278        manipulating the axes (with keys F2, F3, and F4).
1279
1280      . Anti-aliasing rendering  modes can now be  selected (with keys
1281        F5 and F6).
1282
1283      . The display of point numbers can be toggled with key `D'.
1284
1285    - Various improvements to the `ftdump' demo program.
1286
1287      . It now displays information on MM and GX variation axes.
1288
1289      . New  command line option  `-u' makes  it output data  in utf-8
1290        encoding.
1291
1292    - The `ftmulti'  demo program can  now handle up  to six MM  or GX
1293      axes.
1294
1295
1296======================================================================
1297
1298CHANGES BETWEEN 2.5.4 and 2.5.5 (2014-Dec-30)
1299
1300  I. IMPORTANT BUG FIXES
1301
1302    - Handling of  uncompressed PCF files works again (bug  introduced
1303      in version 2.5.4).
1304
1305
1306======================================================================
1307
1308CHANGES BETWEEN 2.5.3 and 2.5.4 (2014-Dec-06)
1309
1310  I. IMPORTANT BUG FIXES
1311
1312    - A   variant  of   vulnerability  CVE-2014-2240   was  identified
1313      (cf.  https://savannah.nongnu.org/bugs/?43661) and  fixed in the
1314      new CFF driver.  All users should upgrade.
1315
1316    - The new auto-hinter code using HarfBuzz crashed for some invalid
1317      fonts.
1318
1319    - Many fixes to better protect against malformed input.
1320
1321
1322  II. IMPORTANT CHANGES
1323
1324    - Full auto-hinter support of the Devanagari script.
1325
1326    - Experimental auto-hinter support of the Telugu script.
1327
1328    - CFF stem darkening behaviour can now be controlled at build time
1329      using the eight macros
1330
1331        CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4}    .
1332
1333    - Some fields in the `FT_Bitmap'  structure have been changed from
1334      signed to unsigned type, which better reflects the actual usage.
1335      It  is also  an additional  means to  protect against  malformed
1336      input.
1337
1338      This  change doesn't  break  the ABI;  however,  it might  cause
1339      compiler warnings.
1340
1341
1342  III. MISCELLANEOUS
1343
1344    - Improvements to  the auto-hinter's algorithm to  recognize stems
1345      and local extrema.
1346
1347    - Function `FT_Get_SubGlyph_Info' always returned an error even in
1348      case of success.
1349
1350    - Version  2.5.1 introduced  major bugs  in  the cjk  part of  the
1351      auto-hinter, which are now fixed.
1352
1353    - The  `FT_Sfnt_Tag'  enumeration  values  have  been  changed  to
1354      uppercase,  e.g.  `FT_SFNT_HEAD'.   The lowercase  variants  are
1355      deprecated.    This  is   for  orthogonality   with  all   other
1356      enumeration (and enumeration-like) values in FreeType.
1357
1358    - `cmake' now supports builds of FreeType as an OS X framework and
1359      for iOS.
1360
1361    - Improved project files for vc2010, introducing a property file.
1362
1363    - The  documentation generator  for  the API  reference  has  been
1364      updated to produce  better HTML code (with proper  CSS).  At the
1365      same time, the documentation got a better structure.
1366
1367    - The FT_LOAD_BITMAP_CROP flag is obsolete;  it is not used by any
1368      driver.
1369
1370    - The  TrueType  DELTAP[123]  bytecode instructions  now  work  in
1371      subpixel hinting  mode as described in  the ClearType whitepaper
1372      (i.e., for touched points in the non-subpixel direction).
1373
1374    - Many small improvements to the internal arithmetic routines.
1375
1376
1377======================================================================
1378
1379CHANGES BETWEEN 2.5.2 and 2.5.3 (2014-Mar-06)
1380
1381  I. IMPORTANT BUG FIXES
1382
1383    - A vulnerability (CVE-2014-2240) was  identified and fixed in the
1384      new  CFF driver  (cf.  https://savannah.nongnu.org/bugs/?41697).
1385      All users should upgrade.
1386
1387    - More  bug  fixes related  to  correct  positioning of  composite
1388      glyphs.
1389
1390    - Many fixes to better protect against malformed input.
1391
1392
1393  II. IMPORTANT CHANGES
1394
1395    - FreeType can now use the HarfBuzz library to greatly improve the
1396      auto-hinting of  fonts that  use OpenType features:  Many glyphs
1397      that are part  of such features but don't have  cmap entries are
1398      now handled  properly, for  example small caps  or superscripts.
1399      Define the configuration  macro FT_CONFIG_OPTION_USE_HARFBUZZ to
1400      activate HarfBuzz support.
1401
1402      You need HarfBuzz version 0.9.19 or newer.
1403
1404      Note that HarfBuzz depends on  FreeType; this currently causes a
1405      chicken-and-egg problem  that can be  solved as follows  in case
1406      HarfBuzz is not yet installed on your system.
1407
1408        1. Compile  and  install  FreeType without  the  configuration
1409           macro FT_CONFIG_OPTION_USE_HARFBUZZ.
1410
1411        2. Compile and install HarfBuzz.
1412
1413        3. Define  macro  FT_CONFIG_OPTION_USE_HARFBUZZ, then  compile
1414           and install FreeType again.
1415
1416      With FreeType's  `configure' script the procedure  boils down to
1417      configure, build, and install FreeType, then configure, compile,
1418      and  install  HarfBuzz,  then configure,  compile,  and  install
1419      FreeType again (after executing `make distclean').
1420
1421    - All  libraries FreeType  depends on  are now  checked using  the
1422      `pkg-config' configuration files  first, followed by alternative
1423      methods.
1424
1425    - The  new  value  `auto'  for the  various  `--with-XXX'  library
1426      options   (for   example   `--with-harfbuzz=auto')   makes   the
1427      `configure' script automatically link to the libraries it finds.
1428      This is now the default.
1429
1430    - In case FreeType's `configure' script  can't find a library, you
1431      can  pass environment  variables to  circumvent pkg-config,  and
1432      those variables  have been  harmonized as  a consequence  of the
1433      changes mentioned above:
1434
1435        LIBZ           -> removed; use LIBZ_CFLAGS and LIBZ_LIBS
1436        LIBBZ2         -> removed; use BZIP2_CFLAGS and BZIP2_LIBS
1437        LIBPNG_LDFLAGS -> LIBPNG_LIBS
1438
1439      `./configure --help' shows all available environment variables.
1440
1441    - The `freetype-config'  script now understands  option `--static'
1442      to emit static linking information.
1443
1444
1445======================================================================
1446
1447CHANGES BETWEEN 2.5.1 and 2.5.2 (2013-Dec-08)
1448
1449  I. IMPORTANT BUG FIXES
1450
1451    - Improving the display of some broken TrueType fonts introduced a
1452      bug  that made  FreeType crash  on some  popular (but  not fully
1453      conformant) fonts like `ahronbd.ttf'.
1454
1455    - Another round of improvements to correct positioning and hinting
1456      of composite glyphs in TrueType fonts.
1457
1458
1459  II. MISCELLANEOUS
1460
1461    - Version  2.5.1  introduced a  bug  in  handling embedded  bitmap
1462      strikes of  TrueType fonts,  causing garbage display  under some
1463      circumstances.
1464
1465    - The   `ftgrid'   demo   program    couldn't   be   compiled   in
1466      non-development builds.
1467
1468
1469======================================================================
1470
1471CHANGES BETWEEN 2.5 and 2.5.1 (2013-Nov-25)
1472
1473  I. IMPORTANT BUG FIXES
1474
1475    - For  some WinFNT  files,  the last  glyph  wasn't displayed  but
1476      incorrectly marked as invalid.
1477
1478    - The vertical size of glyphs was  incorrectly set after a call to
1479      `FT_GlyphSlot_Embolden', resulting in clipped glyphs.
1480
1481    - Many fields of the `PCLT' table in SFNT based fonts (if accessed
1482      with `FT_Get_Sfnt_Table') were computed incorrectly.
1483
1484    - In TrueType fonts,  hinting of composite glyphs  could sometimes
1485      deliver  incorrect positions  of  components or  even  distorted
1486      shapes.
1487
1488
1489  II. IMPORTANT CHANGES
1490
1491    - WOFF font format support has been added.
1492
1493    - The auto-hinter now supports Hebrew.  Greek and Cyrillic support
1494      has been improved.
1495
1496    - Support for the forthcoming `OS/2'  SFNT table version 5, as can
1497      be found e.g. in the `Sitka' font family for Windows 8.1.
1498
1499    - The header  file layout  has been changed.   After installation,
1500      all files are now located in `<prefix>/include/freetype2'.
1501
1502      Applications  that  use   (a)  `freetype-config'  or  FreeType's
1503      `pkg-config' file to get the include directory for the compiler,
1504      and (b) the documented way for header inclusion like
1505
1506        #include <ft2build.h>
1507        #include FT_FREETYPE_H
1508        ...
1509
1510      don't need any change to the source code.
1511
1512
1513  III. MISCELLANEOUS
1514
1515    - The stem  darkening feature  of the  new CFF  engine can  now be
1516      fine-tuned with the new `darkening-parameters' property.
1517
1518    - `ftgrid' has been updated to toggle various engines with the `H'
1519      key, similar to `ftview' and `ftdiff'.
1520
1521    - The functionality of `ttdebug' has been greatly enhanced.
1522
1523      . It now displays twilight, storage, and control value data; key
1524        `T' shows the twilight point  table, key `S' the storage data,
1525        and key `C' the control value table.
1526
1527      . Some  keys  have  been  reassigned  from  lowercase  to  their
1528        uppercase equivalents; for example `q'  to quit the program is
1529        now `Q'.
1530
1531      . Key `f' finishes the current function.
1532
1533      . Key `R' restarts the debugger.
1534
1535      . Keys `b' and `p' set a breakpoint.
1536
1537      . Key `B' provides a function call backtrace.
1538
1539    - Better support of ARMv7 and x86_64 processors.
1540
1541    - Apple's `sbix' color bitmap format is now supported.
1542
1543    - Improved   auto-hinter  rendering   for  many   TrueType  fonts,
1544      especially in the range 20-40ppem.
1545
1546    - A  new face  flag  `FT_FACE_FLAG_COLOR' has  been  added (to  be
1547      accessed with the macro `FT_HAS_COLOR').
1548
1549    - `FT_Gzip_Uncompress'   (modeled    after   zlib's   `uncompress'
1550      function)  has been  added; this  is a  by-product of  the newly
1551      added WOFF support.
1552
1553    - Support for  a build with  `cmake' has been contributed  by John
1554      Cary <cary@txcorp.com>.
1555
1556    - Support for x64  builds with Visual C++ has  been contributed by
1557      Kenneth Miller <kennethadammiller@yahoo.com>
1558
1559    - Manual pages for most demo programs have been added.
1560
1561    - The GETINFO bytecode instruction for TrueType fonts was buggy if
1562      used to retrieve subpixel hinting information.  It was necessary
1563      to set  selector bit 6  to get  results for selector  bits 7-10,
1564      which is wrong.
1565
1566    - Improved computation  of emulated vertical metrics  for TrueType
1567      fonts.
1568
1569    - Fixed horizontal start-up position of vertical phantom points in
1570      TrueType bytecode.
1571
1572
1573======================================================================
1574
1575CHANGES BETWEEN 2.4.12 and 2.5 (2013-Jun-19)
1576
1577  I. IMPORTANT BUG FIXES
1578
1579    - The cache manager function `FTC_Manager_Reset'  didn't flush the
1580      cache.
1581
1582
1583  II. IMPORTANT CHANGES
1584
1585    - Behdad Esfahbod  (on behalf  of Google) contributed  support for
1586      color embedded bitmaps (eg. color emoji).
1587
1588      A  new  load  flag,  FT_LOAD_COLOR, makes  FreeType  load  color
1589      embedded-bitmaps, following this draft specification
1590
1591        https://color-emoji.googlecode.com/git/specification/v1.html
1592
1593      which defines two new SFNT  tables, `CBDT' and `CBLC' (named and
1594      modeled  after  `EBDT'  and `EBLC',  respectively).   The  color
1595      bitmaps  are  stored in  the  new  FT_PIXEL_MODE_BGRA format  to
1596      represent BGRA  pre-multiplied sRGB  images.  If PNG  support is
1597      available,  PNG color  images as  defined in  the same  proposed
1598      specification are supported also.
1599
1600      Note that  color bitmaps  are converted  to grayscale  if client
1601      didn't ask for color.
1602
1603    - As  announced in  the  previous release,  the  old FreeType  CFF
1604      engine  is now  disabled by  default.  It  can be  conditionally
1605      compiled     by     defining     the     configuration     macro
1606      CFF_CONFIG_OPTION_OLD_ENGINE.
1607
1608    - As announced in the previous release,  all code related to macro
1609      FT_CONFIG_OPTION_OLD_INTERNALS  has been removed,  thus becoming
1610      obsolete.
1611
1612
1613  III. MISCELLANEOUS
1614
1615    - The  property API  (`FT_Property_Get' and  `FT_Property_Set') is
1616      now declared as stable.
1617
1618      The  exception,   however,  are  the   experimental  auto-hinter
1619      properties `glyph-to-script-map' and `fallback-script' which are
1620      subject to change in a forthcoming release.
1621
1622    - `ftview' has been updated to  support color embedded bitmaps; it
1623      can be toggled on and off  with key `c'.  The small cache toggle
1624      is now key `K'.
1625
1626    - It  is now  possible  to  control the  version  of the  TrueType
1627      hinting engine  using the new `interpreter-version'  property of
1628      the  `truetype' module:  Versions 35  and 38  (the default)  are
1629      supported,  which  roughly  corresponds to  disable  and  enable
1630      subpixel hinting support, respectively.
1631
1632      In  both  `ftview'  and  `ftdiff',  switching  between  the  two
1633      versions  can be  done  with  key `H'.   In  the `ftbench'  demo
1634      program, command line option `-H'  has been extended to activate
1635      the non-default interpreter version.
1636
1637    - The `ttdebug' program has been further improved.  In particular,
1638      it accepts a new command line  option `-H' to select the hinting
1639      engine.
1640
1641    - `ftdump's verbose option has been renamed to `-V'.  For all demo
1642      programs, `-v' now shows version information.
1643
1644    - Another round of TrueType subpixel hinting fixes.
1645
1646    - The `apinames' tool can now create an import file for NetWare.
1647
1648    - 64bit compilation of the new CFF engine was buggy.
1649
1650    - Some fixes to improve robustness in memory-tight situations.
1651
1652
1653======================================================================
1654
1655CHANGES BETWEEN 2.4.11 and 2.4.12 (2013-May-08)
1656
1657    - We have another CFF parsing and hinting engine!  Written by Dave
1658      Arnold <darnold@adobe.com>,  this work  has been  contributed by
1659      Adobe in  collaboration with Google.   It is vastly  superior to
1660      the old CFF engine, and it  will replace it in the next release.
1661      Right  now,  it  is  still  off by  default,  and  you  have  to
1662      explicitly select it using  the new `hinting-engine' property of
1663      the cff driver:
1664
1665        ...
1666        #include FT_MODULE_H
1667        #include FT_CFF_DRIVER_H
1668
1669        FT_Library  library;
1670        int         engine = FT_CFF_HINTING_ADOBE;
1671
1672
1673        ...
1674        FT_Property_Set( library, "cff", "hinting-engine", &engine );
1675
1676      The code has  a (mature) beta status; we encourage  all users to
1677      test it and report any problems.
1678
1679      In case you want to activate the new CFF engine unconditionally,
1680      apply this patch:
1681
1682--- snip ---
1683diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c
1684index ebcf189..3f2ce6b 100644
1685--- a/src/cff/cffobjs.c
1686+++ b/src/cff/cffobjs.c
1687@@ -1056,7 +1056,7 @@
1688
1689
1690     /* set default property values */
1691-    driver->hinting_engine    = FT_CFF_HINTING_FREETYPE;
1692+    driver->hinting_engine    = FT_CFF_HINTING_ADOBE;
1693     driver->no_stem_darkening = FALSE;
1694
1695     return FT_Err_Ok;
1696--- snip ---
1697
1698    - The  macro FT_CONFIG_OPTION_OLD_INTERNALS  is no  longer set  by
1699      default.  In  the next  release, we  will completely  remove the
1700      associated code.   Please update your  programs in case  you are
1701      still using this macro.
1702
1703
1704  II. MISCELLANEOUS
1705
1706    - The  (top-level)  `configure'  script   now  respects  the  MAKE
1707      environment variable  to specify a `make' binary.   For backward
1708      compatibility, GNUMAKE still overrides MAKE, though.
1709
1710    - The `ftview'  and `ftdiff'  demo programs have  been redesigned,
1711      showing  more options  permanently  on the  screen, among  other
1712      minor improvements.
1713
1714    - Using the `H'  key, it is now possible to  select the CFF engine
1715      in both `ftview' and `ftdiff'.
1716
1717    - The new command line option `-H' for `ftbench' selects the Adobe
1718      CFF engine.
1719
1720    - It is  now possible  to directly select  the LCD  rendering mode
1721      with the keys `A'-`F' in  `ftview'.  The key mapping for cycling
1722      through LCD modes  has been changed from `K' and  `L' to `k' and
1723      `l', and  toggling custom LCD  filtering is no longer  mapped to
1724      key `F' but to key `L'.
1725
1726    - In `ftdiff',  key `x' toggles  between layout modes:  Either use
1727      the  advance width  (this is  new and  now the  default) or  the
1728      bounding box information to determine line breaks.
1729
1730    - For all demo  tools, the new command line option  `-v' shows the
1731      version.
1732
1733    - For the demo tools with a GUI, the new command line options `-w'
1734      and `-h' select  the width and the height of  the output window,
1735      respectively.
1736
1737    - The `ttdebug' program was broken and has been reactivated.  Note
1738      that this program is not compiled by default.
1739
1740
1741======================================================================
1742
1743CHANGES BETWEEN 2.4.10 and 2.4.11 (2012-Dec-20)
1744
1745  I. IMPORTANT BUG FIXES
1746
1747    - Some vulnerabilities in the  BDF implementation have been fixed.
1748      Users of this font format should upgrade.
1749
1750
1751  II. IMPORTANT CHANGES
1752
1753    - Subpixel  hinting support  has been  contributed by  Infinality,
1754      based on Greg Hitchcock's whitepaper at
1755
1756        https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
1757
1758      Originally, it was a separate patch available from
1759
1760        https://web.archive.org/web/20150710073951/http://www.infinality.net:80/blog/
1761
1762      and which has been integrated.
1763
1764      Note that  ClearType support is not  completely implemented!  In
1765      particular,  full support  for the  options `compatible_widths',
1766      `symmetrical_smoothing,  and  `bgr'  (via the  GETINFO  bytecode
1767      instruction) is missing.
1768
1769      Activation of  subpixel hinting  support can be  controlled with
1770      the `TT_CONFIG_OPTION_SUBPIXEL_HINTING' configuration option; it
1771      is switched off by default.  This feature is still experimental;
1772      we welcome test reports!
1773
1774    - Support for OpenType collections (OTC) has been added.
1775
1776    - Pure CFF fonts within an SFNT wrapper are now supported.
1777
1778
1779  III. MISCELLANEOUS
1780
1781    - Minor rendering improvements to the auto-hinter.
1782
1783    - `FT_GlyphSlot_Oblique' now uses a shear angle of 12°.
1784
1785    - Experimental support  to handle `property modules',  for example
1786      to control the  behaviour of the auto-hinter.   The API consists
1787      of two new functions, `FT_Property_Set' and `FT_Property_Get'.
1788
1789      The code is  still subject to change and should  not be used for
1790      production.
1791
1792    - The `ftdiff' demo program now supports UTF-8 encoded input files
1793      for option `-f'.
1794
1795    - Using keys `r' and `R', you can now adjust the stroker radius in
1796      the `ftview' demo program.
1797
1798    - Other, minor fixes and improvements.
1799
1800
1801======================================================================
1802
1803CHANGES BETWEEN 2.4.9 and 2.4.10 (2012-Jun-15)
1804
1805  I. IMPORTANT BUG FIXES
1806
1807    - Incremental glyph loading as needed by ghostscript was broken.
1808
1809
1810  II. MISCELLANEOUS
1811
1812    - A new  function `FT_Outline_EmboldenXY',  contributed by  Alexei
1813      Podtelezhnikov.
1814
1815    - In the `ftview' demo program, key `e' has been replaced with `x'
1816      and `y' to  embolden in  the horizontal and  vertical direction,
1817      respectively.
1818
1819    - The glyph  spacing computation  in `FT_GlyphSlot_Embolden'  (and
1820      similar code in `ftview') has been improved.
1821
1822    - Minor  improvements to  the TrueType  bytecode  interpreter  and
1823      glyph loader, the auto-hinter, and the B/W rasterizer.
1824
1825
1826======================================================================
1827
1828CHANGES BETWEEN 2.4.8 and 2.4.9 (2012-Mar-08)
1829
1830  I. IMPORTANT BUG FIXES
1831
1832    - Another round of fixes to better handle invalid fonts.   Many of
1833      them are vulnerabilities  (see CVE-2012-1126 up to CVE-2012-1144
1834      and SA48320) so all users should upgrade.
1835
1836
1837  II. MISCELLANEOUS
1838
1839    - The `ENCODING -1 <n>' format of BDF fonts is now supported.
1840
1841    - For BDF fonts,  support for the whole Unicode encoding range has
1842      been added.
1843
1844    - Better TTF support for x_ppem != y_ppem.
1845
1846    - `FT_Get_Advances' sometimes returned bogus values.
1847
1848    - The  demo  programs  no  longer  recognize  and  handle  default
1849      suffixes; you now have to always specify the complete font name.
1850
1851    - Better rendering and LCD mode cycling added to `ftview'.
1852
1853
1854======================================================================
1855
1856CHANGES BETWEEN 2.4.7 and 2.4.8 (2011-Nov-14)
1857
1858  I. IMPORTANT BUG FIXES
1859
1860    - Some vulnerabilities in handling CID-keyed PostScript fonts have
1861      been fixed; see CVE-2011-3439.
1862
1863
1864  II. MISCELLANEOUS
1865
1866    - Chris Liddell contributed a new API, `FT_Get_PS_Font_Value',  to
1867      retrieve most of the dictionary keys in Type 1 fonts.
1868
1869
1870======================================================================
1871
1872CHANGES BETWEEN 2.4.6 and 2.4.7 (2011-Oct-18)
1873
1874  I. IMPORTANT BUG FIXES
1875
1876    - Some  vulnerabilities in handling Type 1 fonts  have been fixed;
1877      see CVE-2011-3256.
1878
1879
1880  II. MISCELLANEOUS
1881
1882    - FreeType  now properly  handles ZapfDingbats  glyph names  while
1883      constructing a Unicode character map (for fonts which don't have
1884      one).
1885
1886
1887======================================================================
1888
1889CHANGES BETWEEN 2.4.5 and 2.4.6 (2011-Jul-29)
1890
1891  I. IMPORTANT BUG FIXES
1892
1893    - For TrueType based fonts, the ascender and descender values were
1894      incorrect sometimes  (off by a pixel if the ppem value was not a
1895      multiple of 5).   Depending on the use you might now  experience
1896      a different  layout; the  change should  result in  better, more
1897      consistent line spacing.
1898
1899    - Fix CVE-2011-0226  which causes a  vulnerability while  handling
1900      Type 1 fonts.
1901
1902    - BDF fonts  containing  glyphs with negative values  for ENCODING
1903      were  incorrectly  rejected.  This  bug has  been introduced  in
1904      FreeType version 2.2.0.
1905
1906    - David Bevan contributed a major revision of the FreeType stroker
1907      code:
1908
1909      . The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected.
1910
1911      . A new  line join style,  FT_STROKER_LINEJOIN_MITER_FIXED,  has
1912        been introduced to support PostScript and PDF miter joins.
1913
1914      . FT_STROKER_LINEJOIN_MITER_VARIABLE  has been introduced  as an
1915        alias for FT_STROKER_LINEJOIN_MITER.
1916
1917      . Various stroking glitches has been fixed.
1918
1919
1920  II. MISCELLANEOUS
1921
1922      - SFNT bitmap fonts which contain an outline glyph for `.notdef'
1923        only no longer set the FT_FACE_FLAG_SCALABLE flag.
1924
1925
1926======================================================================
1927
1928CHANGES BETWEEN 2.4.4 and 2.4.5 (2011-Jun-25)
1929
1930  I. IMPORTANT BUG FIXES
1931
1932    - A rendering regression  for second-order Bézier curves  has been
1933      fixed, introduced in 2.4.3.
1934
1935
1936  II. IMPORTANT CHANGES
1937
1938    - If autohinting  is not  explicitly disabled,  FreeType now  uses
1939      the autohinter if  a TrueType based font doesn't  contain native
1940      hints.
1941
1942    - The load flag FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH  has been made
1943      redundant and  is simply ignored;  this means that FreeType  now
1944      ignores the global advance width value in TrueType fonts.
1945
1946
1947  III. MISCELLANEOUS
1948
1949    - `FT_Sfnt_Table_Info' can now return the number of SFNT tables of
1950      a font.
1951
1952    - Support for PCF files compressed with bzip2 has been contributed
1953      by Joel  Klinghed.  To  make this  work, the  OS must  provide a
1954      bzip2 library.
1955
1956    - Bradley  Grainger  contributed  project  and  solution  files in
1957      Visual Studio 2010 format.
1958
1959    - Again some fixes to better handle broken fonts.
1960
1961    - Some improvements to the B/W rasterizer.
1962
1963    - Fixes to the cache module to improve robustness.
1964
1965    - Just  Fill Bugs contributed (experimental) code to compute  blue
1966      zones for CJK Ideographs, improving the alignment of  horizontal
1967      stems at the top or bottom edges.
1968
1969    - The `ftgrid' demo program  can now display  autohinter segments,
1970      to be toggled on and off with key `s'.
1971
1972
1973======================================================================
1974
1975CHANGES BETWEEN 2.4.3 and 2.4.4 (2010-Nov-28)
1976
1977  I. IMPORTANT BUG FIXES
1978
1979    - UVS support (TrueType/OpenType cmap format 14) support is fixed.
1980      This regression has been introduced in version 2.4.0.
1981
1982
1983  II. MISCELLANEOUS
1984
1985    - Detect tricky fonts (e.g. MingLiU)  by the lengths and checksums
1986      of Type42-persistent subtables (`cvt ', `fpgm', and `prep') when
1987      a TrueType font without family name is given.  The previous fix,
1988      introduced in 2.4.3,  was too rigorous,  causing many  subsetted
1989      fonts (mainly  from PDF files) displayed badly  because FreeType
1990      forced  rendering with  the TrueType bytecode engine  instead of
1991      the autohinter.
1992
1993    - Better support for 64bit platforms.
1994
1995    - More fixes to improve handling of broken fonts.
1996
1997
1998======================================================================
1999
2000CHANGES BETWEEN 2.4.2 and 2.4.3 (2010-Oct-03)
2001
2002  I. IMPORTANT BUG FIXES
2003
2004    - Fix rendering of certain cubic, S-shaped arcs.   This regression
2005      has been introduced in version 2.4.0.
2006
2007
2008  II. MISCELLANEOUS
2009
2010    - To  fix  the  above  mentioned  rendering  issue,  a  new spline
2011      flattening algorithm  has been  introduced which  speeds up both
2012      conic and cubic arcs.
2013
2014    - Handling of broken fonts has been further improved.
2015
2016
2017======================================================================
2018
2019CHANGES BETWEEN 2.4.1 and 2.4.2 (2010-Aug-06)
2020
2021  I. IMPORTANT BUG FIXES
2022
2023    - A stack overflow in CFF Type2 CharStrings interpreter is fixed.
2024
2025    - Handling Type 42 font deallocation was broken; additionally, the
2026      library is now more robust against malformed Type 42 fonts.
2027
2028
2029  II. MISCELLANEOUS
2030
2031    - Two new functions,  `FT_Reference_Library' (in FT_MODULE_H)  and
2032      `FT_Reference_Face'  (in  FT_FREETYPE_H),  have  been  added  to
2033      simplify life-cycle management.  A counter gets initialized to 1
2034      at the  time an  FT_Library (or  FT_Face) structure  is created.
2035      The  two  new   functions  increment  the  respective   counter.
2036      `FT_Done_Library' and `FT_Done_Face' then only destroy a library
2037      or face if the counter is 1, otherwise they simply decrement the
2038      counter.
2039
2040
2041======================================================================
2042
2043CHANGES BETWEEN 2.4.0 and 2.4.1 (2010-Jul-18)
2044
2045  I. IMPORTANT CHANGES
2046
2047    - A serious bug in the  CFF font module prevented  display of many
2048      glyphs in CFF fonts like `MinionPro-Regular.otf'.
2049
2050
2051======================================================================
2052
2053CHANGES BETWEEN 2.3.12 and 2.4.0 (2010-Jul-12)
2054
2055  I. IMPORTANT CHANGES
2056
2057    - Since May  2010, all  patents  regarding  the TrueType  bytecode
2058      interpreter have expired worldwide.  Consequently, we now define
2059      TT_CONFIG_OPTION_BYTECODE_INTERPRETER by  default (and  undefine
2060      TT_CONFIG_OPTION_UNPATENTED_HINTING).
2061
2062    - A new function `FT_Library_SetLcdFilterWeights' is available  to
2063      adjust the filter weights set by `FT_Library_SetLcdFilter'.
2064
2065
2066  II. MISCELLANEOUS
2067
2068    - Thanks to many reports from Robert Święcki, FreeType's stability
2069      in handling broken or damaged fonts is much improved.
2070
2071    - Support  for LCD  filter  control has  been  added to  the  demo
2072      programs `ftdiff' and `ftview'.
2073
2074
2075======================================================================
2076
2077CHANGES BETWEEN 2.3.11 and 2.3.12
2078
2079  I. IMPORTANT CHANGES
2080
2081    - For  `FT_Open_Face',  new  parameters  are  available  to ignore
2082      preferred family names: FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY and
2083      FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY.
2084
2085
2086  II. MISCELLANEOUS
2087
2088    - Support  for  incremental  font  loading  (controlled  with  the
2089      FT_CONFIG_OPTION_INCREMENTAL macro) is now active by default.
2090
2091    - Better support for vertical metrics.
2092
2093    - Various minor bug fixes.
2094
2095
2096======================================================================
2097
2098CHANGES BETWEEN 2.3.10 and 2.3.11
2099
2100  I. IMPORTANT BUG FIXES
2101
2102    - Version 2.3.10 broke PCF support.
2103
2104
2105======================================================================
2106
2107CHANGES BETWEEN 2.3.10 and 2.3.9
2108
2109  I. IMPORTANT BUG FIXES
2110
2111    - If all  ASCII digits in a  font have the  same (unscaled) width,
2112      the autohinter respects this and won't change it.
2113
2114    - TrueType fonts  are now  rasterized correctly  if the horizontal
2115      and vertical resolution differ.
2116
2117    - Type 1 fonts are now handled with increased precision internally
2118      to avoid serious rounding issues if non-integral coordinates are
2119      encountered.
2120
2121    - Horizontally  condensed CFF  fonts (using the font  matrix) were
2122      rendered  incorrectly.   This  bug  has  been  introduced  after
2123      release 2.3.5.
2124
2125
2126  II. IMPORTANT CHANGES
2127
2128    - Support for the SFNT cmap 13 table format (as defined by the new
2129      OpenType 1.6 specification) has been added.
2130
2131    - B/W rasterization  of well-hinted TrueType  fonts at small sizes
2132      has been greatly improved.
2133
2134    - Calculation  of  vertical  metrics in  OpenType  fonts has  been
2135      improved.
2136
2137
2138  III. MISCELLANEOUS
2139
2140    - It  is now  possible to  change  the emboldening  factor in  the
2141      `ftview' demo program with keys `e' and `E'.
2142
2143    - It is  now possible  to change the  slant value in  the `ftview'
2144      demo program with keys `s' and `S'.
2145
2146    - The  5-levels  grayscale  mode of  the `ftraster'  module (which
2147      FreeType doesn't use by default) was broken since version 2.3.0.
2148
2149    - Compilation of the  `ftgrays' and `ftraster' modules  was broken
2150      in stand-alone mode.
2151
2152    - Various fixes for compilation on 64bit and 16bit architectures.
2153
2154
2155======================================================================
2156
2157CHANGES BETWEEN 2.3.9 and 2.3.8
2158
2159  I. IMPORTANT BUG FIXES
2160
2161    - Very unfortunately, FreeType 2.3.8 contained a change that broke
2162      its  official ABI.  The  end result  is  that programs  compiled
2163      against previous versions of the library, but dynamically linked
2164      to  2.3.8 can  experience  memory corruption  if  they call  the
2165      `FT_Get_PS_Font_Info' function.
2166
2167      We recommend all users to  upgrade to 2.3.9 as soon as possible,
2168      or to downgrade to a previous  release of the library if this is
2169      not an option.
2170
2171      The  origin of the  bug is  that a  new field  was added  to the
2172      publicly  defined  `PS_FontInfoRec'  structure.   Unfortunately,
2173      objects of this  type can be stack or  heap allocated by callers
2174      of   `FT_Get_PS_Font_Info',  resulting   in   a  memory   buffer
2175      overwrite with its implementation in 2.3.8.
2176
2177      If  you want to  know whether  your code  is vulnerable  to this
2178      issue,  simply  search  for  the  substrings  `PS_FontInfo'  and
2179      `PS_Font_Info' in your source code.  If none is found, your code
2180      is safe and is not affected.
2181
2182      The FreeType team apologizes for the problem.
2183
2184    - The POSIX support  of MacOS resource-fork fonts  (Suitcase fonts
2185      and LaserWriter Type1 PostScript fonts) was broken in 2.3.8.  If
2186      FreeType2 is built without Carbon framework, these fonts are not
2187      handled correctly.  Version 2.3.7 didn't have this bug.
2188
2189    - `FT_Get_Advance' (and `FT_Get_Advances') returned bad values for
2190      almost all font formats except TrueType fonts.
2191
2192    - Fix a bug  in the SFNT  kerning table  loader/parser which could
2193      crash the engine if certain malformed tables were encountered.
2194
2195    - Composite SFNT bitmaps are now handled correctly.
2196
2197
2198  II. IMPORTANT CHANGES
2199
2200    - The   new  functions   `FT_Get_CID_Is_Internally_CID_keyed'  and
2201      `FT_Get_CID_From_Glyph_Index'  can be  used to  access CID-keyed
2202      CFF fonts  via CID  values.  This code  has been  contributed by
2203      Michael Toftdal.
2204
2205
2206  III. MISCELLANEOUS
2207
2208    - `FT_Outline_Get_InsideBorder'  returns   FT_STROKER_BORDER_RIGHT
2209      for empty outlines.  This was incorrectly documented.
2210
2211    - The `ftview' demo program now supports UTF-8 encoded strings.
2212
2213
2214======================================================================
2215
2216CHANGES BETWEEN 2.3.8 and 2.3.7
2217
2218  I. IMPORTANT BUG FIXES
2219
2220    - CID-keyed fonts in an SFNT wrapper were not handled correctly.
2221
2222    - The smooth renderer produced truncated images (on the right) for
2223      outline parts with negative horizontal values.  Most fonts don't
2224      contain outlines left  to the y coordinate axis, but  the effect
2225      was very noticeable for outlines processed with FT_Glyph_Stroke,
2226      using thick strokes.
2227
2228    - `FT_Get_TrueType_Engine_Type'  returned a  wrong  value if  both
2229      configuration  macros  TT_CONFIG_OPTION_BYTECODE_INTERPRETER and
2230      TT_CONFIG_OPTION_UNPATENTED_HINTING were defined.
2231
2232    - The  `face_index'  field  in   the  `FT_Face'  structure  wasn't
2233      initialized properly after calling FT_Open_Face and friends with
2234      a positive face index for CFFs,  WinFNTs, and, most importantly,
2235      for TrueType Collections (TTCs).
2236
2237
2238  II. IMPORTANT CHANGES
2239
2240    - Rudimentary support for Type 1  fonts and CID-keyed Type 1 fonts
2241      in an SFNT wrapper has been  added -- such fonts are used on the
2242      Mac.  The core  SFNT tables `TYP1' and `CID '  are passed to the
2243      PS Type 1  and CID-keyed PS font drivers;  other tables (`ALMX',
2244      `BBOX', etc.) are not supported yet.
2245
2246    - A  new interface  to extract  advance values  of glyphs  without
2247      loading their outlines has been added.  The functions are called
2248      `FT_Get_Advance' and `FT_Get_Advances'; they are defined in file
2249      `ftadvanc.h' (to be accessed as FT_ADVANCES_H).
2250
2251    - A new function `FT_Get_FSType_Flags' (in FT_FREETYPE_H) has been
2252      contributed  by   David  Bevan  to  access   the  embedding  and
2253      subsetting restriction information of fonts.
2254
2255
2256  III. MISCELLANEOUS
2257
2258    - FT_MulFix is now an inlined function; by default, assembler code
2259      is provided for x86 and ARM.  See FT_CONFIG_OPTION_INLINE_MULFIX
2260      and FT_CONFIG_OPTION_NO_ASSEMBLER (in ftoption.h) for more.
2261
2262    - The handling of `tricky' fonts  (this is, fonts which don't work
2263      with the  autohinter, needing the font  format's hinting engine)
2264      has been generalized and changed slightly:
2265
2266      . A new  face flag  FT_FACE_FLAG_TRICKY indicates that  the font
2267        format's  hinting engine is  necessary for  correct rendering.
2268        The macro FT_IS_TRICKY can be used to check this flag.
2269
2270      . FT_LOAD_NO_HINTING is now ignored for tricky fonts.  To really
2271        force  raw  loading  of  such fonts  (without  hinting),  both
2272        FT_LOAD_NO_HINTING  and FT_LOAD_NO_AUTOHINT  must  be used  --
2273        this is something which you probably never want to do.
2274
2275      . Tricky  TrueType fonts  always use  the  bytecode interpreter,
2276        either the patented or unpatented version.
2277
2278    - The  function  `FT_GlyphSlot_Own_Bitmap'  has  been  moved  from
2279      FT_SYNTHESIS_H to FT_BITMAP_H; it  is now part of the `official'
2280      API.   (The functions  in  FT_SYNTHESIS_H are  still subject  to
2281      change, however.)
2282
2283    - In the  `ftdiff'  demo  program you  can now  toggle the  use of
2284      FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH with key `a'.
2285
2286
2287======================================================================
2288
2289CHANGES BETWEEN 2.3.7 and 2.3.6
2290
2291  I. IMPORTANT BUG FIXES
2292
2293    - If the library  was compiled on an i386  platform using gcc, and
2294      compiler  option -O3 was  given, `FT_MulFix'  sometimes returned
2295      incorrect  results   which  could  have   caused  problems  with
2296      `FT_Request_Metrics'   and  `FT_Select_Metrics',   returning  an
2297      incorrect descender size.
2298
2299    - Pure CFFs without  subfonts were scaled incorrectly  if the font
2300      matrix  was  non-standard.  This  bug  has  been  introduced  in
2301      version 2.3.6.
2302
2303    - The  `style_name'  field  in  the  `FT_FaceRec'  structure often
2304      contained  a wrong  value for  Type 1  fonts.  This misbehaviour
2305      has been  introduced  in  version  2.3.6  while  trying  to  fix
2306      another   problem.   [Note,  however,   that   this   value   is
2307      informative only  since  the  used  algorithm to  extract  it is
2308      very simplistic.]
2309
2310
2311  II. IMPORTANT CHANGES
2312
2313    - Two      new      macros,      FT_OUTLINE_SMART_DROPOUTS     and
2314      FT_OUTLINE_EXCLUDE_STUBS,  have been introduced.   Together with
2315      FT_OUTLINE_IGNORE_DROPOUTS (which  was ignored previously) it is
2316      now possible to control the dropout mode  of the `raster' module
2317      (for B&W rasterization),   using  the   `flags'  field   in  the
2318      `FT_Outline' structure.
2319
2320    - The TrueType bytecode interpreter now passes the dropout mode to
2321      the B&W rasterizer.  This greatly increases the output for small
2322      ppem values of many fonts like `pala.ttf'.
2323
2324
2325======================================================================
2326
2327CHANGES BETWEEN 2.3.6 and 2.3.5
2328
2329  I. IMPORTANT BUG FIXES
2330
2331    - A  bunch of  potential security  problems have  been found.  All
2332      users should update.
2333
2334    - Microsoft  Unicode  cmaps  in  TrueType  fonts  are  now  always
2335      preferred over Apple cmaps.  This is not a bug per se, but there
2336      exist some buggy  fonts created for MS which  have broken  Apple
2337      cmaps.  This affects  only the automatic  selection of FreeType;
2338      it's always possible to manually select an Apple Unicode cmap if
2339      desired.
2340
2341    - Many bug fixes to the TrueType bytecode interpreter.
2342
2343    - Improved Mac support.
2344
2345    - Subsetted CID-keyed CFFs are now supported correctly.
2346
2347    - CID-keyed CFFs with subfonts which are scaled in a  non-standard
2348      way are now handled correctly.
2349
2350    - A call to FT_Open_Face with `face_index' < 0 crashed FreeType if
2351      the font was a Windows (bitmap) FNT/FON.
2352
2353
2354  II. IMPORTANT CHANGES
2355
2356    - The new function `FT_Get_CID_Registry_Ordering_Supplement' gives
2357      access to  those fields in a CID-keyed font.  The code  has been
2358      contributed by Derek Clegg.
2359
2360    - George Williams  contributed  code  to validate  the new  `MATH'
2361      OpenType  table (within  the `otvalid'  module).  The  `ftvalid'
2362      demo program has been extended accordingly.
2363
2364    - An API for cmap 14 support  (for Unicode Variant Selectors, UVS)
2365      has been contributed by George Williams.
2366
2367    - A new face flag FT_FACE_FLAG_CID_KEYED has been added,  together
2368      with a macro FT_IS_CID_KEYED which evaluates to 1 if the font is
2369      CID-keyed.
2370
2371
2372  III. MISCELLANEOUS
2373
2374    - Build support for symbian has been contributed.
2375
2376    - Better WGL4 glyph name support, contributed by Sergey Tolstov.
2377
2378    - Debugging output of the  various FT_TRACEX macros is now sent to
2379      stderr.
2380
2381    - The `ftview' demo program now provides artificial slanting too.
2382
2383    - The `ftvalid' demo  program has a new  option `-f' to select the
2384      font index.
2385
2386
2387======================================================================
2388
2389CHANGES BETWEEN 2.3.5 and 2.3.4
2390
2391  I. IMPORTANT BUG FIXES
2392
2393    - Some subglyphs in TrueType fonts were handled incorrectly due to
2394      a missing graphics state reinitialization.
2395
2396    - Large .Z files  (as distributed with some X11  packages) weren't
2397      handled correctly, making FreeType increase the heap stack in an
2398      endless loop.
2399
2400    - A large  number of  bugs have  been fixed  to avoid  crashes and
2401      endless loops with invalid fonts.
2402
2403
2404  II. IMPORTANT CHANGES
2405
2406    - The  two new  cache functions  `FTC_ImageCache_LookupScaler' and
2407      `FTC_SBit_Cache_LookupScaler' have been added to allow lookup of
2408      glyphs using an  `FTC_Scaler' object;  this makes it possible to
2409      use fractional pixel sizes in the cache.  The demo programs have
2410      been updated accordingly to use this feature.
2411
2412    - A new API  `FT_Get_CMap_Format' has been added to  get the  cmap
2413      format  of a  TrueType font.   This  is useful  in handling  PDF
2414      files.  The code has been contributed by Derek Clegg.
2415
2416    - The  auto-hinter  now  produces  better  output  by  default for
2417      non-Latin scripts  like Indic.   This was done by  using the CJK
2418      hinting module  as the default instead of the Latin one.  Thanks
2419      to Rahul Bhalerao for this suggestion.
2420
2421    - A new API `FT_Face_CheckTrueTypePatents'  has been added to find
2422      out  whether  a  given  TrueType  font  uses  patented  bytecode
2423      instructions.   The  `ft2demos' bundle  contains a  new  program
2424      called `ftpatchk' which demonstrates its usage.
2425
2426    - A  new  API  `FT_Face_SetUnpatentedHinting'  has  been  added to
2427      enable or disable the unpatented hinter.
2428
2429    - Support for Windows FON files in PE format  has been contributed
2430      by Dmitry Timoshkov.
2431
2432
2433  III. MISCELLANEOUS
2434
2435    - Vincent Richomme contributed Visual C++ project files for Pocket
2436      PCs.
2437
2438
2439======================================================================
2440
2441CHANGES BETWEEN 2.3.4 and 2.3.3
2442
2443  I. IMPORTANT BUG FIXES
2444
2445    - A serious  bug  in  the  handling  of bitmap  fonts (and  bitmap
2446      strikes of outline fonts) has been introduced in 2.3.3.
2447
2448
2449======================================================================
2450
2451CHANGES BETWEEN 2.3.3 and 2.3.2
2452
2453  I. IMPORTANT BUG FIXES
2454
2455    - Remove a serious regression in the TrueType bytecode interpreter
2456      that was introduced  in version 2.3.2.  Note that  this does not
2457      disable  the  improvements  introduced  to  the  interpreter  in
2458      version 2.3.2,  only some ill  cases that occurred  with certain
2459      fonts (though a few popular ones).
2460
2461    - The auto-hinter now  ignores single-point contours for computing
2462      blue zones.   This bug  created `wavy' baselines  when rendering
2463      text  with  various  fonts  that  use these  contours  to  model
2464      mark-attach points  (these are points that  are never rasterized
2465      and are placed outside of the glyph's real outline).
2466
2467    - The `rsb_delta' and `lsb_delta' glyph slot fields are now set to
2468      zero for mono-spaced fonts.  Otherwise code that uses them would
2469      essentially ruin the fixed-advance property.
2470
2471    - Fix  CVE-2007-1351 which  can  cause an  integer overflow  while
2472      parsing  BDF fonts,  leading to  a potentially  exploitable heap
2473      overflow condition.
2474
2475
2476  II. MISCELLANEOUS
2477
2478    - Fixed compilation issues on some 64-bit platforms (see ChangeLog
2479      for details).
2480
2481    - A new demo  program `ftdiff' has been added  to compare TrueType
2482      hinting, FreeType's auto  hinting, and rendering without hinting
2483      in three columns.
2484
2485
2486======================================================================
2487
2488CHANGES BETWEEN 2.3.2 and 2.3.1
2489
2490  I. IMPORTANT BUG FIXES
2491
2492    - FreeType  returned incorrect  kerning information  from TrueType
2493      fonts when the bytecode  interpreter was enabled.  This happened
2494      due to a typo introduced in version 2.3.0.
2495
2496    - Negative  kerning  values  from   PFM  files  are  now  reported
2497      correctly  (they were read  as 16-bit  unsigned values  from the
2498      file).
2499
2500    - Fixed  a small  memory leak  when `FT_Init_FreeType'  failed for
2501      some reason.
2502
2503    - The Postscript hinter placed and sized very thin and ghost stems
2504      incorrectly.
2505
2506    - The TrueType bytecode  interpreter has been fixed to  get rid of
2507      most of the  rare differences seen in comparison  to the Windows
2508      font loader.
2509
2510
2511  II. IMPORTANT CHANGES
2512
2513    - The auto-hinter  now better deals  with serifs and  corner cases
2514      (e.g.,  glyph '9'  in Arial  at 9pt,  96dpi).  It  also improves
2515      spacing  adjustments and doesn't  change widths  for non-spacing
2516      glyphs.
2517
2518    - Many   Mac-specific   functions   are  deprecated   (but   still
2519      available);  modern replacements  have been  provided  for them.
2520      See the documentation in file `ftmac.h'.
2521
2522
2523======================================================================
2524
2525CHANGES BETWEEN 2.3.1 and 2.3.0
2526
2527  I. IMPORTANT BUG FIXES
2528
2529    - The TrueType interpreter sometimes returned incorrect horizontal
2530      metrics due to a bug in the handling of the SHZ instruction.
2531
2532    - A typo  in  a  security  check  introduced  after  version 2.2.1
2533      prevented FreeType to render some glyphs in CFF fonts.
2534
2535
2536======================================================================
2537
2538CHANGES BETWEEN 2.3.0 and 2.2.1
2539
2540  I. IMPORTANT BUG FIXES
2541
2542    - The  PCF font  loader  is  now much  more  robust while  loading
2543      malformed font files.
2544
2545    - Various memory leaks have been found and fixed.
2546
2547    - The TrueType name loader now deals properly with some fonts that
2548      encode their  names in UTF-16 (the specification  was vague, and
2549      the code incorrectly assumed UCS-4).
2550
2551    - Fixed the TrueType bytecode  loader to deal properly with subtle
2552      monochrome/gray  issues  when   scaling  the  CVT.   Some  fonts
2553      exhibited bad rendering artifacts otherwise.
2554
2555    - `FT_GlyphSlot_Embolden' now  supports vertical layouts correctly
2556      (it mangled the vertical advance height).
2557
2558    - Fixed byte  endian issues  of `ftmac.c' to  support Mac OS  X on
2559      i386.
2560
2561    - The  PFR  font loader  no  longer  erroneously  tags font  files
2562      without any outlines as FT_FACE_FLAG_SCALABLE.
2563
2564
2565  II. NEW API FUNCTIONS
2566
2567    - `FT_Library_SetLcdFilter' allows you  to select a special filter
2568      to be  applied to the bitmaps generated  by `FT_Render_Glyph' if
2569      one of the FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V modes has
2570      been  selected.  This filter  is used  to reduce  color fringes;
2571      several  settings are  available  through the  FT_LCD_FILTER_XXX
2572      enumeration.
2573
2574      Its  declaration   and  documentation  can  be   found  in  file
2575      `include/freetype/ftlcdfil.h'   (to  be   accessed   with  macro
2576      FT_LCD_FILTER_H).
2577
2578      *IMPORTANT*:     This      function     returns     an     error
2579      (FT_Err_Unimplemented_Feature) in default  builds of the library
2580      for patent reasons.  See below.
2581
2582    - `FT_Get_Gasp'  allows you  to query  the flags  of  the TrueType
2583      `gasp' table for  a given character pixel size.   This is useful
2584      to duplicate  the text rendering  of MS Windows when  the native
2585      bytecode  interpreter is  enabled (which  isn't the  default for
2586      other patent reasons).
2587
2588      Its  declaration   and  documentation  can  be   found  in  file
2589      `include/freetype/ftgasp.h'   (to   be   accessed   with   macro
2590      FT_GASP_H).
2591
2592
2593  III. IMPORTANT CHANGES
2594
2595    - The auto-hinter has been tuned a lot to improve its results with
2596      serif fonts, resulting in much better font rendering of many web
2597      pages.
2598
2599    - The unpatented  hinter is now part  of the default  build of the
2600      library; we  have added  code to automatically  support `tricky'
2601      fonts that need it.
2602
2603      This means  that FreeType should `just work'  with certain Asian
2604      fonts, like  MingLiU, which cannot properly be  loaded without a
2605      bytecode interpreter,  but which fortunately  do not use  any of
2606      the patented  bytecode opcodes.  We detect these  fonts by name,
2607      so please  report any font file  that doesn't seem  to work with
2608      FreeType, and  we shall do what we  can to support it  in a next
2609      release.
2610
2611      Note  that  the API  hasn't  changed,  so  you can  still  force
2612      unpatented hinting with a special parameter to `FT_Open_Face' as
2613      well.  This  might be useful in  same cases; for  example, a PDF
2614      reader might present  a user option to activate  it to deal with
2615      certain  `tricky'   embedded  fonts  which   cannot  be  clearly
2616      identified.
2617
2618      If you are  a developer for embedded systems,  you might want to
2619      *disable*  the   feature  to  save  code   space  by  undefining
2620      TT_CONFIG_OPTION_UNPATENTED_HINTING in file `ftoption.h'.
2621
2622    - LCD-optimized rendering is now  *disabled* in all default builds
2623      of  the  library,  mainly   due  to  patent  issues.   For  more
2624      information see:
2625
2626      https://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html
2627
2628      A  new  configuration macro  FT_CONFIG_OPTION_SUBPIXEL_RENDERING
2629      has been introduced in  `ftoption.h'; manually define it in this
2630      file if you want to re-enable the feature.
2631
2632      The  change only  affects the  implementation, not  the FreeType
2633      API.  This means that clients don't need to be modified, because
2634      the library still generates  LCD decimated bitmaps, but with the
2635      added constraint that R=G=B on each triplet.
2636
2637      The  displayed result  should  be equal  to normal  anti-aliased
2638      rendering.
2639
2640      Additionally,  if   FT_CONFIG_OPTION_SUBPIXEL_RENDERING  is  not
2641      defined, the new  `FT_Library_SetLcdFilter' function returns the
2642      FT_Err_Unimplemented_Feature error code.
2643
2644    - Some computation bugs in  the TrueType bytecode interpreter were
2645      found,  which  allow us  to  get rid  of  very  subtle and  rare
2646      differences we had experienced with the Windows renderer.
2647
2648    - It is now possible to cross-compile the library easily.  See the
2649      file `docs/INSTALL.CROSS' for details.
2650
2651    - The file `src/base/ftmac.c' now contains code for Mac OS X only;
2652      its  deprecated function  `FT_GetFile_From_Mac_Font_Name' always
2653      returns an  error even if the QuickDraw  framework is available.
2654      The previous version has been moved to `builds/mac/ftmac.c'.
2655
2656      Selecting  configure option `--with-quickdraw-carbon'  makes the
2657      build process use the original `ftmac.c' file instead of the Mac
2658      OS X-only version.
2659
2660
2661  IV. MISCELLANEOUS
2662
2663    - Various performance and memory footprint optimizations have been
2664      performed on  the TrueType and CFF font  loaders, sometimes with
2665      very drastic  benefits (e.g., the  TrueType loader is  now about
2666      25% faster;  FreeType should use  less heap memory  under nearly
2667      all conditions).
2668
2669    - The anti-aliased rasterizer has been optimized and is now 15% to
2670      25%  percent  faster than  in  previous  versions, depending  on
2671      content.
2672
2673    - The Type 1 loader has been improved; as an example, it now skips
2674      top-level dictionaries properly.
2675
2676    - Better support for Mac  fonts on POSIX systems, plus compilation
2677      fixes for Mac OS X on ppc64 where `ftmac.c' cannot be built.
2678
2679    - Configuration  without `--with-old-mac-fonts'  does  not include
2680      `ftmac.c' (this was the behaviour in FreeType version 2.1.10).
2681
2682    - The TrueTypeGX validator (gxvalid) checks the order of glyph IDs
2683      in the kern table.
2684
2685
2686======================================================================
2687
2688CHANGES BETWEEN 2.2.1 and 2.2
2689
2690  I. IMPORTANT BUG FIXES
2691
2692    - Various integer overflows have been fixed.
2693
2694    - PFB fonts with MacOS resource fork weren't  handled correctly on
2695      non-MacOS platforms.
2696
2697
2698======================================================================
2699
2700CHANGES BETWEEN 2.2 and 2.1.10
2701
2702(not released officially)
2703
2704  I. IMPORTANT BUG FIXES
2705
2706    - Vertical metrics for SFNT fonts were incorrect sometimes.
2707
2708    - The FT_HAS_KERNING macro always returned 0.
2709
2710    - CFF OpenType  fonts didn't  return correct vertical  metrics for
2711      glyphs with outlines.
2712
2713    - If FreeType was compiled without hinters, all font formats based
2714      on PS outlines weren't scaled correctly.
2715
2716
2717  II. IMPORTANT CHANGES
2718
2719    - Version 2.2 no longer exposes its internals, this is, the header
2720      files  located in  the `include/freetype/internal'  directory of
2721      the source package are not  copied anymore by the `make install'
2722      command.  Consequently, a number of rogue clients which directly
2723      access  FreeType's  internal   functions  and  structures  won't
2724      compile without modification.
2725
2726      We provide  patches for  most of those  rogue clients.   See the
2727      following page for more information:
2728
2729        https://www.freetype.org/freetype2/patches/rogue-patches.html
2730
2731      Note that, as  a convenience to our Unix  desktop users, version
2732      2.2 is *binary* compatible with FreeType 2.1.7, which means that
2733      installing this  release on  an existing distribution  shall not
2734      break any working desktop.
2735
2736    - FreeType's build  mechanism has been redesigned.   With GNU make
2737      it  is  now  sufficient  in   most  cases  to  edit  two  files:
2738      `modules.cfg',  to  select   the  library  components,  and  the
2739      configuration  file  `include/freetype/config/ftoption.h' (which
2740      can be copied to the objects directory).  Removing unused module
2741      directories   to    prevent   its   compilation    and   editing
2742      `include/freetype/config/ftmodule.h' is no longer necessary.
2743
2744    - The  LIGHT  hinting algorithm  produces  more pleasant  results.
2745      Also, using the  FT_LOAD_TARGET_LIGHT flags within FT_Load_Glyph
2746      always forces auto-hinting, as a special exception.  This allows
2747      you to experiment with it  even if you have enabled the TrueType
2748      bytecode interpreter in your build.
2749
2750    - The auto hinter now employs a new algorithm for CJK fonts, based
2751      on Akito  Hirai's patch.   Note that this  only works  for fonts
2752      with a Unicode charmap at the moment.
2753
2754    - The following callback function  types have changed slightly (by
2755      adding the `const' keyword where appropriate):
2756
2757        FT_Outline_MoveToFunc
2758        FT_Outline_LineToFunc
2759        FT_Outline_ConicToFunc
2760        FT_Outline_CubicToFunc
2761        FT_SpanFunc
2762        FT_Raster_RenderFunc
2763
2764        FT_Glyph_TransformFunc
2765        FT_Renderer_RenderFunc
2766        FT_Renderer_TransformFunc
2767
2768      Note that this doesn't affect binary backward compatibility.
2769
2770    - On MacOS,  new APIs have  been added as replacements  for legacy
2771      APIs:  `FT_New_Face_From_FSRef'  for  `FT_New_Face_From_FSSpec',
2772      and              `FT_GetFile_From_Mac_ATS_Name'              for
2773      `FT_GetFile_From_Mac_Name'.  Legacy APIs are still available, if
2774      FreeType is built without disabling them.
2775
2776    - A new  API `FT_Select_Size'  has been added  to select  a bitmap
2777      strike  by its  index.   Code using  other  functions to  select
2778      bitmap strikes should be updated to use this function.
2779
2780    - A  new API  `FT_Get_SubGlyph_Info'  has been  added to  retrieve
2781      subglyph data.  This can be  used by rogue clients which used to
2782      access the internal headers to get the corresponding data.
2783
2784    - In 2.1.10, the behaviour of `FT_Set_Pixel_Sizes' was changed for
2785      BDF/PCF fonts,  and only  for them.  This  causes inconsistency.
2786      In this release,  we undo the change.  The  intent of the change
2787      in 2.1.10  is to allow  size selection through  real dimensions,
2788      which can now be done through `FT_Request_Size'.
2789
2790    - Some security  issues were discovered  and fixed in the  CFF and
2791      Type  1 loader, causing  crashes of  FreeType by  malformed font
2792      files.
2793
2794
2795  III. MISCELLANEOUS
2796
2797    - The documentation  for FT_LOAD_TARGET_XXX and FT_RENDER_MODE_XXX
2798      values now better reflects its usage and differences: One set is
2799      used to specify the hinting algorithm, the other to specify  the
2800      pixel rendering mode.
2801
2802    - `FT_New_Face' and `FT_New_Face_From_FSSpec' in ftmac.c have been
2803      changed to count supported scalable faces (sfnt, LWFN) only, and
2804      to  return the  number of  available faces  via face->num_faces.
2805      Unsupported bitmap faces (fbit, NFNT) are ignored.
2806
2807    - builds/unix/configure  has been  improved for  MacOS X.   It now
2808      automatically checks available  functions in Carbon library, and
2809      prepare to use newest  functions by default.  Options to specify
2810      the  dependencies of  each Carbon  APIs (FSSpec,  FSRef, old/new
2811      QuickDraw, ATS)  are available too.  By manual  disabling of all
2812      QuickDraw   functionality,  FreeType   can   be  built   without
2813      `deprecated   function'   warnings    on   MacOS   10.4.x,   but
2814      FT_GetFile_Mac_Name  in  ftmac.c  then  is changed  to  a  dummy
2815      function, and returns an `unimplemented' error.  For details see
2816      builds/mac/README.
2817
2818    - SFNT cmap handling has been  improved, mainly to run much faster
2819      with CJK fonts.
2820
2821    - A   new  function   `FT_Get_TrueType_Engine_Type   (declared  in
2822      `FT_MODULE_H')  is  provided  to  determine the  status  of  the
2823      TrueType   bytecode  interpreter   compiled  into   the  library
2824      (patented, unpatented, unimplemented).
2825
2826    - Vertical metrics of glyphs are  synthesized if the font does not
2827      provide such information.  You can tell whether  the metrics are
2828      synthesized or not by checking the FT_FACE_FLAG_VERTICAL flag of
2829      the face.
2830
2831    - The demo programs  `ftview' and  `ftstring' have been  rewritten
2832      for better readability.   `ftview' has a new switch `-p' to test
2833      FT_New_Memory_Face (instead of FT_New_Face).
2834
2835    - FreeType now honours bit 1 in the `head' table of TrueType fonts
2836      (meaning `left sidebearing point at x=0').  This helps with some
2837      buggy fonts.
2838
2839    - Rudimentary support for Adobe's new `SING Glyphlet' format.  See
2840
2841        https://www.adobe.com/content/dam/acom/en/devnet/font/pdfs/5148.SING_Tutorial.pdf
2842
2843      for more information.
2844
2845    - The `ftdump'  program from the `ft2demos' bundle  now shows some
2846      information about charmaps.  It  also supports a new switch `-v'
2847      to increase verbosity.
2848
2849    - Better AFM support.  This includes track kerning support.
2850
2851
2852======================================================================
2853
2854CHANGES BETWEEN 2.1.10 and 2.1.9
2855
2856  I. IMPORTANT BUG FIXES
2857
2858    - The size comparison for BDF and PCF files could fail sometimes.
2859
2860    - Some  CFF files  were still not  loaded  correctly.   Patch from
2861      Derek Noonburg.
2862
2863    - The stroker still had some serious bugs.
2864
2865    - Boris  Letocha  fixed a  bug in  the  TrueType interpreter:  The
2866      NPUSHW instruction wasn't skipped correctly in IF clauses.  Some
2867      fonts like `Helvetica 75 Bold' failed.
2868
2869    - Another  serious  bug  in  handling  TrueType hints  caused many
2870      distortions.  It has been introduced in version 2.1.8, and it is
2871      highly recommended to upgrade.
2872
2873    - FreeType didn't properly parse empty Type 1 glyphs.
2874
2875    - An unbound dynamic buffer growth was fixed in the PFR loader.
2876
2877    - Several bugs have been fixed in the cache sub-system.
2878
2879    - FreeType behaved incorrectly when resizing two distinct but very
2880      close character pixel sizes through `FT_Set_Char_Size' (Savannah
2881      bug #12263).
2882
2883    - The auto-hinter didn't work properly for fonts without a Unicode
2884      charmap -- it even refused to load the glyphs.
2885
2886
2887  II. IMPORTANT CHANGES
2888
2889    - Many fixes have been applied to drastically reduce the amount of
2890      heap   memory   used   by   FreeType,   especially   when  using
2891      memory-mapped font files  (which is the default on Unix  systems
2892      which support them).
2893
2894    - The auto-hinter  has been replaced with a new module, called the
2895      `auto-fitter'.  It consumes  less memory  than its  predecessor,
2896      and it is  prepared to support non-latin scripts  better in next
2897      releases.
2898
2899    - George Williams  contributed code to read  kerning data from PFM
2900      files.
2901
2902    - FreeType   now   uses    the   TT_NAME_ID_PREFERRED_FAMILY   and
2903      TT_NAME_ID_PREFERRED_SUBFAMILY   strings   (if   available)  for
2904      setting  family  and  style in SFNT  fonts  (patch from Kornfeld
2905      Eliyahu Peter).
2906
2907    - A  new  API `FT_Sfnt_Table_Info'  (in FT_TRUETYPE_TABLES_H)  has
2908      been added to retrieve name and size information of SFNT tables.
2909
2910    - A new API `FT_OpenType_Validate' (in FT_OPENTYPE_VALIDATE_H) has
2911      been added to validate OpenType tables  (BASE, GDEF, GPOS, GSUB,
2912      JSTF).   After validation  it is  no longer  necessary to  check
2913      for errors in those tables while accessing them.
2914
2915      Note that  this module might  be moved to another library in the
2916      future  to avoid  a tight  dependency between  FreeType and  the
2917      OpenType specification.
2918
2919    - A new API in FT_BITMAP_H  (`FT_Bitmap_New', `FT_Bitmap_Convert',
2920      `FT_Bitmap_Copy',  `FT_Bitmap_Embolden',  `FT_Bitmap_Done')  has
2921      been added.   Its  use is  to convert an  FT_Bitmap structure in
2922      1bpp, 2bpp,  4bpp, or 8bpp  format into  another 8bpp FT_Bitmap,
2923      probably using a different pitch, and to further manipulate it.
2924
2925    - A new  API `FT_Outline_Embolden'  (in FT_OUTLINE_H) gives  finer
2926      control how outlines are emboldened.
2927
2928    - `FT_GlyphSlot_Embolden' (in FT_SYNTHESIS_H)  now handles bitmaps
2929      also (code contributed  by Chia I Wu).  Note that this  function
2930      is still experimental and may be replaced with a better API.
2931
2932    - The method  how BDF and PCF  bitmap fonts  are accessed has been
2933      refined.   Formerly,   FT_Set_Pixel_Sizes  and  FT_Set_Char_Size
2934      were  synonyms in  FreeType's  BDF and PCF interface.  This  has
2935      changed now.  FT_Set_Pixel_Sizes  should be  used to  select the
2936      actual  font dimensions  (the `strike',  which is the sum of the
2937      `FONT_ASCENT'    and    `FONT_DESCENT'    properties),     while
2938      FT_Set_Char_Size  selects  the  `nominal' size  (the `PIXELSIZE'
2939      property).  In both functions, the width parameter is ignored.
2940
2941
2942  III. MISCELLANEOUS
2943
2944    - The BDF driver  no longer converts  all returned bitmaps  with a
2945      depth of 2bpp or 4bpp to a depth of 8bpp.  The documentation has
2946      not  mentioned  this  explicitly,  but  implementors  might have
2947      relied on this after looking into the source files.
2948
2949    - A new option `--ftversion' has been  added to freetype-config to
2950      return the FreeType version.
2951
2952    - The  memory  debugger  has  been  updated   to  dump  allocation
2953      statistics on  all allocation  sources in the library.   This is
2954      useful to  spot greedy  allocations when  loading and processing
2955      fonts.
2956
2957    - We removed a huge array of constant pointers to constant strings
2958      in the `psnames' module.   The problem was that  compilations in
2959      PIC mode (i.e.,  when generating a  Unix shared object/dll)  put
2960      the array  into the non-shared  writable section of  the library
2961      since absolute pointers are not relocatable by nature.
2962
2963      This reduces the memory consumption by approximately 16KByte per
2964      process linked  to FreeType.   We now also store  the array in a
2965      compressed form (as a trie) which saves about 20KByte of code as
2966      well.
2967
2968    - Kirill  Smelkov provided  patches to make  src/raster/ftraster.c
2969      compile stand-alone again.
2970
2971
2972======================================================================
2973
2974CHANGES BETWEEN 2.1.9 and 2.1.8
2975
2976  I. IMPORTANT BUG FIXES
2977
2978    - The function  `FT_Get_CharMap_Index' was only declared,  without
2979      any  real  code.   For  consistency,  it  has  been  renamed  to
2980      `FT_Get_Charmap_Index'.   (This function is needed  to implement
2981      cmap caches.)
2982
2983    - `FT_Outline_Get_BBox'  sometimes returned  incorrect values  for
2984      conic outlines (e.g., for TrueType fonts).
2985
2986    - Handling of `bhed' table has been fixed.
2987
2988    - The TrueType driver with enabled byte code interpreter sometimes
2989      returned artifacts due to incorrect rounding.  This bug has been
2990      introduced after version 2.1.4.
2991
2992    - The BDF driver dropped the last glyph in the font.
2993
2994    - The BDF driver now uses the DEFAULT_CHAR property (if available)
2995      to select a glyph shape for the undefined glyph.
2996
2997    - The stroker failed for closed outlines and single points.
2998
2999
3000  II. IMPORTANT CHANGES
3001
3002    - George  Williams   contributed  code  to   handle  Apple's  font
3003      distortion technology found in GX fonts (`avar', `cvar', `fvar',
3004      and `gvar' tables;  the Multiple Masters  API has been  slightly
3005      extended to cope with the new functionality).
3006
3007    - The `FT_GlyphSlotRec' structure has been extended:  The elements
3008      `lsb_delta' and  `rsb_delta' give the difference  between hinted
3009      and  unhinted  left and right  side bearings  if autohinting  is
3010      active.  Using those values can improve the inter-letter spacing
3011      considerably.   See the documentation of  `FT_GlyphSlotRec'  and
3012      the `ftstring' demo program how to use it.
3013
3014    - Loading TrueType and Type 1 fonts has been made much faster.
3015
3016    - The stroker is  no longer experimental (but the  cache subsystem
3017      still is).
3018
3019
3020  III. MISCELLANEOUS
3021
3022    - A new  documentation file  `formats.txt' describes various  font
3023      formats supported (and not supported) by FreeType.
3024
3025
3026======================================================================
3027
3028CHANGES BETWEEN 2.1.8 and 2.1.7
3029
3030  I. IMPORTANT BUG FIXES
3031
3032    - The native  TrueType hinter contained some  bugs which prevented
3033      some fonts to be rendered correctly, most notably Legendum.otf.
3034
3035    - The PostScript hinter now produces improved results.
3036
3037    - The  linear advance  width  and height  values were  incorrectly
3038      rounded,  making  them virtually  unusable  if  not loaded  with
3039      FT_LOAD_LINEAR_DESIGN.
3040
3041    - Indexing CID-keyed CFF fonts is  now working: The glyph index is
3042      correctly  treated as a  CID, similar  to FreeType's  CID driver
3043      module.  Note that CID CMap support is still missing.
3044
3045    - The FT_FACE_FLAG_GLYPH_NAMES flag  is now  set correctly for all
3046      font formats.
3047
3048    - Some subsetted Type 1  fonts weren't parsed correctly.  This bug
3049      has been introduced in 2.1.7.  In summary, the Type 1 parser has
3050      become more robust.
3051
3052    - Non-decimal numbers weren't parsed correctly in PS fonts.
3053
3054    - The WinFNT driver now correctly reports FT_ENCODING_NONE for all
3055      but one encoding.  Use  the new FT_WinFNT_ID_XXX values together
3056      with `FT_Get_WinFNT_Header' to get the WinFNT charset ID.
3057
3058    - The descender metrics (face->size->metrics.descender) for WinFNT
3059      bitmap fonts had the wrong sign.
3060
3061    - The (emulated) `seac' support for CFF fonts was broken.
3062
3063    - The `flex' operator didn't work for CFF fonts.
3064
3065    - PS glyphs  which  use  the   `hintmask'  operator  haven't  been
3066      rendered correctly in some cases.
3067
3068    - Metrics for BDF and PCF bitmap font formats have been fixed.
3069
3070    - Autohinting  is now  disabled for  glyphs  which  are vertically
3071      distorted  or mirrored  (using a  transformation matrix).   This
3072      fixes a bug which produced zero-height glyphs.
3073
3074    - The   `freetype-config'   script   now  handles   --prefix   and
3075      --exec-prefix correctly; it also  returns the proper --rpath (or
3076      -R) value if FreeType has been built as a shared library.
3077
3078
3079  II. IMPORTANT CHANGES
3080
3081    - Both  PCF  and BDF  drivers  now  handle  the SETWIDTH_NAME  and
3082      ADD_STYLE_NAME    properties.     Values    are   appended    to
3083      face->style_name; example: `Bold SemiCondensed'.
3084
3085    - The PCF driver now handles bitmap  fonts compressed with the LZW
3086      algorithm (extension .pcf.Z, compressed with `compress').
3087
3088    - A  new  API   function  `FT_Get_CMap_Language_ID'  (declared  in
3089      `tttables.h')  is  available  to   get  the  language  ID  of  a
3090      TrueType/SFNT cmap.
3091
3092    - The hexadecimal format of  data after the `StartData' command in
3093      CID-keyed Type 1 fonts is now supported.  While this can't occur
3094      in  file-based   fonts,  it  can   happen  in  document-embedded
3095      resources of PostScript documents.
3096
3097    - Embedded bitmaps in SFNT-based CFF fonts are now supported.
3098
3099    - A simple  API is  now available  to control  FreeType's  tracing
3100      mechanism if compiled  with FT_DEBUG_LEVEL_TRACE.   See the file
3101      `ftdebug.h' for more details.
3102
3103    - YAMATO Masatake contributed improved  handling of MacOS resource
3104      forks on non-MacOS platforms (for example, Linux can mount MacOS
3105      file systems).
3106
3107    - Support for MacOS has been improved; there is now a new function
3108      `FT_New_Face_From_FSSpec'  similar to `FT_New_Face'  except that
3109      it accepts an FSSpec instead of a path.
3110
3111    - The cache sub-system has been rewritten.
3112
3113      - There is now support for deinstallation of faces.
3114
3115      - A new  API function `FTC_Manager_RemoveFaceID'  has been added
3116        to  delete  all  `idle'  nodes  that  correspond  to  a  given
3117        FTC_FaceID.  All `locked' nodes  (i.e., those with a reference
3118        count > 0), will be modified to prevent them from appearing in
3119        further  lookups (they  will  be cleaned  normally when  their
3120        reference count reaches 0).
3121
3122      - There  is  now  support  for point  scaling  (i.e.,  providing
3123        character sizes in points + dpis, instead of pixels).
3124
3125      - Three abstract cache classes are now available:
3126
3127          FTC_GCache:  Used to store  one glyph  item per  cache node,
3128                      with the ability to group common attributes into
3129                      `families'.      This    replaces     the    old
3130                      FTC_GlyphCache class.
3131
3132          FTC_ICache: Used to store one FT_Glyph per cache node.  This
3133                      extends  FTC_GCache.  Family  definition, family
3134                      comparison, and  glyph loading are  however left
3135                      to sub-classes.
3136
3137          FTC_SCache: Used to  store up to 16 small  bitmaps per cache
3138                      node.    This    extends   FTC_GCache.    Family
3139                      definition, family  comparison and glyph loading
3140                      are however left to sub-classes.
3141
3142      - The file `src/cache/ftcbasic.c' implements:
3143
3144          FTC_ImageCache: Extends    FTC_ICache;   implements   family
3145                          definitions and glyph loading similar to the
3146                          old API.
3147
3148          FTC_SBitCache: Extends    FTC_SCache,    implements   family
3149                         definitions and glyph  loading similar to the
3150                         old API
3151
3152        Client  applications  should  be  able to  extend  FTC_GCache,
3153        FTC_ICache, or FTC_SCache much more easily (i.e., less code to
3154        write, and  less callbacks).  For example,  one could envision
3155        caches  that are  capable of  storing  transformed (obliqued),
3156        stroked,   emboldened,   or   colored   glyph   images.    Use
3157        `ftcbasic.c' as an example.
3158
3159      - All public  APIs are now  in `include/freetype/ftcache.h', (to
3160        be    accessed   as    `FT_CACHE_H').     The   contents    of
3161        `include/freetype/cache/' is only  needed by applications that
3162        wish to implement their own caches.
3163
3164      - There were some major performance improvements through the use
3165        of  various programming  tricks.   Cache hits  are  up to  70%
3166        faster than in the old code.
3167
3168      - The  FTC_CMapCache has  been simplified.  Charmaps can only be
3169        accessed by  index right now.  There  is also a  new API named
3170        `FT_Charmap_GetIndex' for this purpose.
3171
3172      - The  demo programs  have been  updated to  the new  code.  The
3173        previous versions will not work with the current one.
3174
3175      - Using  an invalid face  index in FT_Open_Face and friends  now
3176        causes an error even if the font contains a single face only.
3177
3178
3179  III. MISCELLANEOUS
3180
3181    - Wolfgang Domröse contributed support files for building FreeType
3182      on the Atari using the PureC compiler.  Note that the Atari is a
3183      16bit platform.
3184
3185    - Vitaliy Pasternak contributed project files for VS.NET 2003.
3186
3187
3188======================================================================
3189
3190CHANGES BETWEEN 2.1.7 and 2.1.6
3191
3192  I. IMPORTANT BUG FIXES
3193
3194    - Updated  to newest  libtool  version, fixing  build problems  on
3195      various platforms.
3196
3197    - On  Unix  platforms,  `make  install' didn't  copy  the  correct
3198      `ftconfig.h' file.
3199
3200  Note that version 2.1.7  contains the same library  C source code as
3201  version 2.1.6.
3202
3203
3204======================================================================
3205
3206CHANGES BETWEEN 2.1.6 and 2.1.5
3207
3208  I. IMPORTANT BUG FIXES
3209
3210    - The PFR  font driver didn't  load kerning tables  correctly, and
3211      the functions in FT_PFR_H didn't work at all.
3212
3213    - Type 1 font  files in  binary format  (PFB) with  an end-of-file
3214      indicator weren't accepted by the FreeType engine.
3215
3216    - Fonts which contain /PaintType  and /StrokeWidth no longer cause
3217      a segfault.  This bug has been introduced in version 2.1.5.
3218
3219    - Fonts  loaded  with   FT_LOAD_RENDER  no  longer  cause  strange
3220      results.  This bug has been introduced in version 2.1.5.
3221
3222    - Some  Windows   (bitmap)  FNT/FON  files   couldn't  be  handled
3223      correctly.
3224
3225
3226  II. IMPORTANT CHANGES
3227
3228    - The internal  module API  has been heavily  changed in  favor of
3229      massive simplifications within the font engine.  This also means
3230      that authors of third-party modules must adapt their code to the
3231      new scheme.
3232
3233      NOTE:  THE NEW SCHEME IS NOT COMPLETED YET.  PLEASE WAIT UNTIL A
3234      FINAL ANNOUNCEMENT!
3235
3236    - The PostScript  parser has been enhanced to  handle comments and
3237      strings   correctly.   Additionally,   more  syntax   forms  are
3238      recognized.
3239
3240    - Added the  optional unpatented hinting system  for TrueType.  It
3241      allows  typefaces which  need hinting  to produce  correct glyph
3242      forms (e.g., Chinese typefaces  from Dynalab) to work acceptably
3243      without infringing Apple patents.   This system is compiled only
3244      if  TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING  is  defined  in
3245      ftoption.h (activated by default).
3246
3247
3248  III. MISCELLANEOUS
3249
3250    - There  is now  a guard  in the  public header  files  to protect
3251      against inclusion of freetype.h from FreeType 1.
3252
3253    - Direct inclusion of freetype.h  and other public header files no
3254      longer works.  You have to use the documented scheme
3255
3256        #include <ft2build.h>
3257        #include FT_FREETYPE_H
3258
3259      to load freetype.h with  a symbolic name.  This protects against
3260      renaming  of public  header  files (which  shouldn't happen  but
3261      actually  has, avoiding two  public header  files with  the same
3262      name).
3263
3264
3265======================================================================
3266
3267CHANGES BETWEEN 2.1.5 and 2.1.4
3268
3269  I. IMPORTANT BUG FIXES
3270
3271    - Parsing the /CIDFontName field  now removes the leading slash to
3272      be in sync with other font drivers.
3273
3274    - gzip support was buggy.  Some fonts could not be read.
3275
3276    - Fonts which  have nested subglyphs  more than one level  deep no
3277      longer cause a segfault.
3278
3279    - Creation of synthetic  cmaps for fonts in CFF  format was broken
3280      partially.
3281
3282    - Numeric  font  dictionary entries  for  synthetic  fonts are  no
3283      longer overwritten.
3284
3285    - The font matrix  wasn't applied to the advance  width for Type1,
3286      CID, and  CFF fonts.  This caused problems  when loading certain
3287      synthetic Type 1 fonts like `Helvetica Narrow'.
3288
3289    - The test  for the charset registry  in BDF and PCF  fonts is now
3290      case-insensitive.
3291
3292    - FT_Vector_Rotate  sometimes  returned   strange  values  due  to
3293      rounding errors.
3294
3295    - The  PCF  driver  now  returns  the  correct  number  of  glyphs
3296      (including an artificial `notdef' glyph at index 0).
3297
3298    - FreeType now  supports buggy CMaps  which are contained  in many
3299      CJK fonts from Dynalab.
3300
3301    - Opening  an invalid  font  on a  Mac  caused a  segfault due  to
3302      double-freeing memory.
3303
3304    - BDF  fonts  with  more   than  32768  glyphs  weren't  supported
3305      properly.
3306
3307
3308  II. IMPORTANT CHANGES
3309
3310    - Accessing bitmap font formats has been synchronized.  To do that
3311      the FT_Bitmap_Size  structure has  been extended to  contain new
3312      fields `size', `x_ppem', and `y_ppem'.
3313
3314    - The FNT driver now returns multiple faces, not multiple strikes.
3315
3316    - The `psnames'  module has been  updated to the Adobe  Glyph List
3317      version 2.0.
3318
3319    - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
3320
3321    - The algorithm for guessing the font style has been improved.
3322
3323    - For fonts in SFNT format, root->height is no longer increased if
3324      the line gap  is zero.  There exist fonts  (containing e.g. form
3325      drawing  characters) which  intentionally have  a zero  line gap
3326      value.
3327
3328    - ft_glyph_bbox_xxx  flags   are  now  deprecated   in  favour  of
3329      FT_GLYPH_BBOX_XXX.
3330
3331    - ft_module_xxx   flags   are   now   deprecated  in   favour   of
3332      FT_MODULE_XXX.
3333
3334    - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB}      are     now
3335      deprecated               in               favour              of
3336      FT_ENCODING_{SJIS,GB2312,BIG5,WANSUNG,JOHAB}  -- those encodings
3337      are not specific to Microsoft.
3338
3339
3340  III. MISCELLANEOUS
3341
3342    - The  autohinter  has been  further  improved;  for example,  `m'
3343      glyphs now retain its vertical symmetry.
3344
3345    - Partial support of Mac fonts on non-Mac platforms.
3346
3347    - `make   refdoc'   (after   first   `make')   builds   the   HTML
3348      documentation.  You need Python for this.
3349
3350    - The make build system should  now work more reliably on DOS-like
3351      platforms.
3352
3353    - Support for  EMX gcc  and Watson C/C++  compilers on  MS-DOS has
3354      been added.
3355
3356    - Better VMS build support.
3357
3358    - Support for the pkg-config  package by providing a `freetype.pc'
3359      file.
3360
3361    - New configure option --with-old-mac-fonts for Darwin.
3362
3363    - Some source files have been  renamed (mainly to fit into the 8.3
3364      naming scheme).
3365
3366
3367======================================================================
3368
3369CHANGES BETWEEN 2.1.4 and 2.1.3
3370
3371  I. IMPORTANT BUG FIXES
3372
3373    - Updated  to newest  libtool  version, fixing  build problems  on
3374      various platforms.
3375
3376    - A fix  in the Gzip stream  reader: It couldn't  read certain .gz
3377      files properly due to a  small typo.  In certain cases, FreeType
3378      could  also loop  endlessly  when trying  to  load tiny  gzipped
3379      files.
3380
3381    - The configure script now tries  to use the system-wide zlib when
3382      it  finds one  (instead of  the  copy found  in src/gzip).   And
3383      `freetype-config' has  been updated to return  relevant flags in
3384      this case when invoked with `--libs' (e.g. `-lzlib').
3385
3386    - Certain fonts couldn't be loaded  by 2.1.3 because they lacked a
3387      Unicode   charmap  (e.g.   SYMBOL.TTF).    FreeType  erroneously
3388      rejected them.
3389
3390    - The CFF loader was modified to accept fonts which only contain a
3391      subset of  their reference charset.  This  prevented the correct
3392      use of PDF-embedded fonts.
3393
3394    - The logic to detect Unicode charmaps has been modified.  This is
3395      required to  support fonts which include both  16-bit and 32-bit
3396      charmaps (like very  recent asian ones) using the  new 10 and 12
3397      SFNT formats.
3398
3399    - The TrueType  loader now limits  the depth of  composite glyphs.
3400      This is necessary to prevent broken fonts to break the engine by
3401      blowing the stack with recursive glyph definitions.
3402
3403    - The CMap cache is now  capable of managing UCS-4 character codes
3404      that   are   mapped   through   extended  charmaps   in   recent
3405      TrueType/OpenType fonts.
3406
3407    - The   cache  sub-system   now  properly   manages  out-of-memory
3408      conditions  instead of  blindly  reporting them  to the  caller.
3409      This means that it will try to empty the cache before restarting
3410      its allocations to see if that can help.
3411
3412    - The  PFR driver  didn't return  the list  of  available embedded
3413      bitmaps properly.
3414
3415    - There was  a nasty  memory leak when  using embedded  bitmaps in
3416      certain font formats.
3417
3418
3419  II. IMPORTANT CHANGES
3420
3421    - David Chester  contributed some enhancements  to the auto-hinter
3422      that  significantly increase  the  quality of  its output.   The
3423      Postscript hinter was also improved in several ways.
3424
3425    - The FT_RENDER_MODE_LIGHT render mode was implemented.
3426
3427    - A new  API function called `FT_Get_BDF_Property'  has been added
3428      to FT_BDF_H to  retrieve BDF properties from BDF  _and_ PCF font
3429      files.   THIS  IS  STILL  EXPERIMENTAL,  since  it  hasn't  been
3430      properly tested yet.
3431
3432    - A Windows FNT specific API has been added, mostly to access font
3433      headers.  This is used by Wine.
3434
3435    - TrueType tables  without an `hmtx' table are  now tolerated when
3436      an  incremental interface  is  used.  This  happens for  certain
3437      Type42 fonts passed from Ghostscript to FreeType.
3438
3439    - The PFR font driver is  now capable of returning the font family
3440      and style  names when  they are available  (instead of  the sole
3441      `FontID').   This  is  performed  by parsing  an  *undocumented*
3442      portion of the font file!
3443
3444
3445  III. MISCELLANEOUS
3446
3447    - The path stroker in FT_STROKER_H has entered beta stage.  It now
3448      works very  well, but  its interface might  change a bit  in the
3449      future.  More on this in later releases.
3450
3451    - The documentation for  FT_Size_Metrics didn't appear properly in
3452      the API reference.
3453
3454    - The file docs/VERSION.DLL has been updated to explain versioning
3455      with FreeType  (i.e., comparing release/libtool/so  numbers, and
3456      how to use them in autoconf scripts).
3457
3458    - The  installation  documentation  has been  seriously  revamped.
3459      Everything is now in the `docs' directory.
3460
3461
3462======================================================================
3463
3464CHANGES BETWEEN 2.1.3 and 2.1.2
3465
3466  I. IMPORTANT BUG FIXES
3467
3468    - FT_Vector_Transform  had  been  incorrectly modified  in  2.1.2,
3469      resulting  in  incorrect   transformations  being  applied  (for
3470      example, rotations were processed in opposite angles).
3471
3472    - The format  8 and 12 TrueType charmap  enumeration routines have
3473      been fixed (FT_Get_Next_Char returned invalid values).
3474
3475    - The  PFR font driver  returned incorrect  advance widths  if the
3476      outline  and metrics resolution  defined in  the font  file were
3477      different.
3478
3479    - FT_Glyph_To_Bitmap now returns  successfully when called with an
3480      FT_BitmapGlyph argument (it previously returned an error).
3481
3482    - A bug  in the Type 1  loader that prevented  valid font bounding
3483      boxes to be loaded from multiple master fonts.
3484
3485    - The SFNT  validation code has been rewritten.   FreeType can now
3486      load `broken'  fonts that were  usable on Windows, but  not with
3487      previous versions of the library.
3488
3489    - The computation of bearings in the BDF driver has been fixed.
3490
3491    - The Postscript hinter crashed when trying to hint certain glyphs
3492      (more precisely,  when trying to  apply hints to an  empty glyph
3493      outline).
3494
3495    - The  TrueType glyph  loader  now supports  composites in  `Apple
3496      format'  (they differ slightly  from Microsoft/OpenType  ones in
3497      the way transformation offsets are computed).
3498
3499    - FreeType was  very slow at opening certain  asian CID/CFF fonts,
3500      due to  fixed increment  in dynamic array  re-allocations.  This
3501      has  been changed  to  exponential behaviour  to get  acceptable
3502      performance.
3503
3504
3505
3506  II. IMPORTANT CHANGES
3507
3508    - The PCF driver now supports gzip-compressed font files natively.
3509      This means that  you will be able to use  all these bitmap fonts
3510      that  come with  XFree86 with  FreeType (and  libXft/libXft2, by
3511      extension).
3512
3513    - The  automatic and  postscript hinters  have both  been updated.
3514      This  results in  a relatively  important increase  of rendering
3515      quality since  many nasty defaults have been suppressed.  Please
3516      visit the web page:
3517
3518        https://www.freetype.org/hinting/smooth-hinting.html
3519
3520      for additional details on this topic.
3521
3522    - The `load_flags' parameter of `FT_Load_Glyph' is now an FT_Int32
3523      (instead  of just  being  an FT_Int).   This  breaks source  and
3524      binary  compatibility for  16bit systems  only,  while retaining
3525      both of them for 32 and 64 bit ones.
3526
3527      Some new flags have been added consequently:
3528
3529        FT_LOAD_NO_AUTOHINT   :: Disable the use of the auto-hinter
3530                                 (but not native format hinters).
3531
3532        FT_LOAD_TARGET_NORMAL :: Hint and render for normal
3533                                 anti-aliased displays.
3534
3535        FT_LOAD_TARGET_MONO   :: Hint and render for 1-bit displays.
3536
3537        FT_LOAD_TARGET_LCD    :: Hint and render for horizontal RGB or
3538                                 BGR subpixel displays (like LCD
3539                                 screens).  THIS IS STILL
3540                                 EXPERIMENTAL!
3541
3542        FT_LOAD_TARGET_LCD_V  :: Same as FT_LOAD_TARGET_LCD, for
3543                                 vertical subpixel displays (like
3544                                 rotated LCD screens).  THIS IS STILL
3545                                 EXPERIMENTAL!
3546
3547      FT_LOAD_MONOCHROME   is  still   supported,  but   only  affects
3548      rendering, not the hinting.
3549
3550      Note that the `ftview'  demo program available in the `ft2demos'
3551      package  has been  updated to  support LCD-optimized  display on
3552      non-paletted displays (under Win32 and X11).
3553
3554    - The  PFR  driver  now  supports embedded  bitmaps  (all  formats
3555      supported), and returns correct kerning metrics for all glyphs.
3556
3557    - The TrueType charmap loader  now supports certain `broken' fonts
3558      that load under Windows without problems.
3559
3560    - The cache API has been slightly modified (it's still a beta!):
3561
3562       - The type  FTC_ImageDesc has been removed; it  is now replaced
3563         by  FTC_ImageTypeRec.   Note that  one  of  its  fields is  a
3564         `load_flag' parameter for FT_Load_Glyph.
3565
3566       - The  field  `num_grays' of  FT_SBitRec  has  been changed  to
3567         `max_grays'  in  order to  fit  within  a  single byte.   Its
3568         maximum value is thus 255 (instead of 256 as previously).
3569
3570
3571  III. MISCELLANEOUS
3572
3573    - Added support  for the  DESTDIR variable during  `make install'.
3574      This simplifies packaging of FreeType.
3575
3576    - Included modified  copies of the  ZLib sources in  `src/gzip' in
3577      order to support  gzip-compressed PCF fonts.  We do  not use the
3578      system-provided  zlib  for  now,   though  this  is  a  probable
3579      enhancement for future releases.
3580
3581    - The DocMaker tool used to generate the on-line API reference has
3582      been   completely    rewritten.    It   is    now   located   in
3583      `src/tools/docmaker/docmaker.py'.  Features:
3584
3585        - better cross-referenced output
3586        - more polished output
3587        - uses Python regular expressions  (though it didn't speed the
3588          program)
3589        - much  more  modular structure,  which  allows for  different
3590          `backends'  in  order to  generate  HTML,  XML, or  whatever
3591          format.
3592
3593      One can regenerate the API reference by calling:
3594
3595         python src/tools/docmaker/docmaker.py \
3596                --prefix=ft2 \
3597                --title=FreeType-2.1.3 \
3598                --output=<outputdirectory>
3599                include/freetype/*.h \
3600                include/freetype/config/*.h \
3601                include/freetype/cache/*.h
3602
3603    - A new, experimental, support for incremental font loading (i.e.,
3604      loading  of fonts  where the  glyphs are  not in  the  font file
3605      itself, but provided by an external component, like a Postscript
3606      interpreter) has been added by Graham Asher.  This is still work
3607      in progress, however.
3608
3609    - A new,  EXPERIMENTAL, path stroker  has been added.   It doesn't
3610      suffer  from  severe  rounding  errors  and  treat  bezier  arcs
3611      directly.  Still work in progress (i.e. not part of the official
3612      API).   See  the file  <freetype/ftstroker.h>  for  some of  the
3613      details.
3614
3615    - The massive  re-formatting of sources and  internal re-design is
3616      still under-way.  Many  internal functions, constants, and types
3617      have been renamed.
3618
3619
3620======================================================================
3621
3622CHANGES BETWEEN 2.1.2 and 2.1.1
3623
3624  I. IMPORTANT BUG FIXES
3625
3626    - Many  font drivers didn't  select a  Unicode charmap  by default
3627      when a new face  was opened (with the FT_CONFIG_OPTION_USE_CMAPS
3628      options enabled),  causing many applications  to not be  able to
3629      display text correctly with the 2.1.x releases.
3630
3631    - The  PFR driver had  a bug  in its  composite loading  code that
3632      produces incorrectly placed accents with many fonts.
3633
3634    - The Type42 driver crashed sometimes due to a nasty bug.
3635
3636    - The Type 1 custom encoding  charmap didn't handle the case where
3637      the first glyph index wasn't 0.
3638
3639    - A  serious  typo  in  the  TrueType  composite  loader  produced
3640      incorrectly placed  glyphs in fonts  like `Wingdings' and  a few
3641      others.
3642
3643
3644  II. MISCELLANEOUS
3645
3646    - The Win32  Visual C++ project  file has been updated  to include
3647      the PFR driver as well.
3648
3649    - `freetype.m4' is  now installed by default by  `make install' on
3650      Unix systems.
3651
3652    - The function  FT_Get_PS_Font_Info now works with  CID and Type42
3653      fonts as well.
3654
3655
3656======================================================================
3657
3658CHANGES BETWEEN 2.1.1 and 2.1.0
3659
3660  I. IMPORTANT BUG FIXES
3661
3662    - The  `version_info'  returned   by  `freetype-config'  in  2.1.0
3663      returned an invalid value.  It now returns 9:1:3 (2.0.9 returned
3664      9:0:3).
3665
3666    - Version 2.1.0  couldn't be linked against  applications on Win32
3667      and  Amiga systems  due  to  a new  debug  function that  wasn't
3668      properly   propagated  to   the  system-specific   directory  in
3669      `builds'.
3670
3671    - Various MacOS and Mac OS X specific fixes.
3672
3673    - Fixed  a bug in  the TrueType  charmap validation  routines that
3674      made version  2.1.0 too restrictive  -- many popular  fonts have
3675      been rejected.
3676
3677    - There was  still a very small difference  between the monochrome
3678      glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the
3679      bytecode  interpreter enabled.   This was  caused by  an invalid
3680      flag setting in the TrueType glyph loader, making the rasterizer
3681      change  its  drop-out   control  mode.   Now  the results should
3682      _really_ be completely identical.
3683
3684    - The TrueType name table loader has been improved to support many
3685      popular  though buggy Asian  fonts.  It  now ignores  empty name
3686      entries,  invalid  pointer offsets  and  a  few other  incorrect
3687      subtleties.  Moreover,  name strings  are now loaded  on demand,
3688      which reduces the memory load  of many faces (e.g. the ARIAL.TTF
3689      font file contains a 10kByte name table with 70 names).
3690
3691    - Fixed a bug in the Postscript hinter that prevented family blues
3692      substitution to happen correctly.
3693
3694
3695  II. NEW FEATURES
3696
3697    - Three new font drivers in this release:
3698
3699      * A  BDF  font driver,  contributed  by  Franco Zappa  Nardelli,
3700        heavily  modified   by  Werner  Lemberg.    It  also  supports
3701        anti-aliased bitmaps (using a slightly extended BDF format).
3702
3703      * A Type42  font driver, contributed by Roberto  Alameda.  It is
3704        still experimental but seems to work relatively well.
3705
3706      * A PFR  font driver, contributed  by David Turner  himself.  It
3707        doesn't  support PFR  hinting --  note that  BitStream  has at
3708        least two patents on this format!
3709
3710
3711  III. MISCELLANEOUS
3712
3713    - The  cache  sub-system has  been  optimized  in important  ways.
3714      Cache hits are now significantly faster.  For example, using the
3715      CMap cache is about  twice faster than calling FT_Get_Char_Index
3716      on most platforms.  Similarly, using an SBit cache is about five
3717      times faster  than loading the  bitmaps from a bitmap  file, and
3718      300 to  500 times  faster than generating  them from  a scalable
3719      format.
3720
3721      Note that  you should recompile  your sources if you  designed a
3722      custom  cache  class for  the  FT2  Cache  subsystem, since  the
3723      changes performed are source, but not binary, compatible.
3724
3725
3726======================================================================
3727
3728CHANGES BETWEEN 2.1.0 and 2.0.9
3729
3730  I. IMPORTANT BUG FIXES
3731
3732    - The  TrueType bytecode  interpreter  has been  fixed to  produce
3733      _exactly_ the same output as FreeType 1.x.  Previous differences
3734      were due  to slightly distinct  fixed-point computation routines
3735      used to perform dot products and vector length measurements.
3736
3737      It seems  that native TrueType hinting  is _extremely_ sensitive
3738      to  rounding errors.  The  required vector  computation routines
3739      have been optimized and placed within the `ttinterp.c' file.
3740
3741    - Fixed the parsing of accelerator tables in the PCF font driver.
3742
3743    - Fixed the Type1 glyph loader  routine used to compute the font's
3744      maximum advance width.
3745
3746
3747  II. NEW FEATURES
3748
3749    - The `configure' script used on Unix systems has been modified to
3750      check  that  GNU  Make  is  being used  to  build  the  library.
3751      Otherwise,  it  will display  a  message  proposing  to use  the
3752      GNUMAKE environment variable to name it.
3753
3754      The Unix-specific file README.UNX has been modified accordingly.
3755
3756
3757  III. MISCELLANEOUS
3758
3759    - The  FreeType  License in  `docs/FTL.TXT'  has  been updated  to
3760      include  a  proposed preferred  disclaimer.   If  you are  using
3761      FreeType in your products, you are encouraged (but not mandated)
3762      to use the following text in your documentation:
3763
3764      """
3765        Portions of this software are copyright © 1996-2002 The
3766        FreeType Project (www.freetype.org).  All rights reserved.
3767      """
3768
3769    - The default size of the render pool has been reduced to 16kByte.
3770      This  shouldn't result  in any  noticeable  performance penalty,
3771      unless you are  using the engine as-is to  render very large and
3772      complex glyphs.
3773
3774    - The  FreeType 2  redesign has  begun.  More  information  can be
3775      found at this URL:
3776
3777        https://www.freetype.org/freetype2/redesign.html
3778
3779      The following  internal changes  have been performed  within the
3780      sources of this release:
3781
3782        - Many   internal  types   have  been   renamed   to  increase
3783          consistency.   The  following  should  be true,  except  for
3784          public types:
3785
3786            * All structure  types have a name ending  in `Rec' (short
3787              for `record').
3788
3789            * A  pointer-to-structure type  has the  same name  as the
3790              structure, _without_ the `Rec' suffix.
3791
3792              Example:
3793
3794                typedef struct FooRec_
3795                {
3796                  ...
3797
3798                } FooRec, *Foo;
3799
3800        - Many   internal  macros  have   been  renamed   to  increase
3801          consistency.  The following should be true:
3802
3803            * All  macros  have a  name  beginning  with `FT_'.   This
3804              required a few changes like
3805
3806                ALLOC   => FT_ALLOC
3807                FREE    => FT_FREE
3808                REALLOC => FT_REALLOC
3809
3810            * All  macros are completely  UPPERCASE.  This  required a
3811              few changes like:
3812
3813                READ_Short  => FT_READ_SHORT
3814                NEXT_Short  => FT_NEXT_SHORT
3815                GET_ULongLE => FT_GET_ULONG_LE
3816                MEM_Set     => FT_MEM_SET
3817                MEM_Copy    => FT_MEM_COPY
3818                etc.
3819
3820            * Whenever   possible,   all   macro  names   follow   the
3821              FT_<OBJECT>_<METHOD> pattern.  For example
3822
3823                ACCESS_Frame   => FT_FRAME_ENTER
3824                FORGET_Frame   => FT_FRAME_EXIT
3825                EXTRACT_Frame  => FT_FRAME_EXTRACT
3826                RELEASE_Frame  => FT_FRAME_RELEASE
3827
3828                FILE_Pos       => FT_STREAM_POS
3829                FILE_Seek      => FT_STREAM_SEEK
3830                FILE_Read      => FT_STREAM_READ
3831                FILE_ReadAt    => FT_STREAM_READ_AT
3832                READ_Fields    => FT_STREAM_READ_FIELDS
3833
3834        - Many  internal functions  have  been renamed  to follow  the
3835          FT_<Object>_<Method> pattern.  For example:
3836
3837            FT_Seek_Stream       => FT_Stream_Seek
3838            FT_Read_Stream_At    => FT_Stream_ReadAt
3839            FT_Done_Stream       => FT_Stream_Close
3840            FT_New_Stream        => FT_Stream_Open
3841            FT_New_Memory_Stream => FT_Stream_OpenMemory
3842            FT_Extract_Frame     => FT_Stream_ExtractFrame
3843
3844          Note that method names do not contain `_'.
3845
3846        - The FT_ALLOC_ARRAY  and FT_REALLOC_ARRAY have  been replaced
3847          with  FT_NEW_ARRAY and  FT_RENEW_ARRAY which  do not  take a
3848          type  as the  fourth argument.   Instead, the  array element
3849          type  size is computed  automatically from  the type  of the
3850          target pointer used.
3851
3852        - A  new object  class, FT_CMap,  has been  introduced.  These
3853          internal  objects are  used to  model character  maps.  This
3854          eases  the support  of additional  charmap types  within the
3855          engine.
3856
3857        - A new  configuration file named `ftstdlib.h'  has been added
3858          to `include/freetype/config'.  It  is used to define aliases
3859          for  _every_ routine  of the  ISO  C library  that the  font
3860          engine   uses.    Each    aliases   has   a   `ft_'   prefix
3861          (e.g. `ft_strlen' is an alias for `strlen').
3862
3863          This is  used to  ease the porting  of FreeType 2  to exotic
3864          runtime environments where the ISO C Library isn't available
3865          (e.g.  XFree86 extension modules).
3866
3867      More details are available in the `ChangeLog' file.
3868
3869
3870======================================================================
3871
3872CHANGES BETWEEN 2.0.9 and 2.0.8
3873
3874  I. IMPORTANT BUG FIXES
3875
3876    - Certain fonts like `foxjump.ttf' contain broken name tables with
3877      invalid entries and wild offsets.  This caused FreeType to crash
3878      when trying to load them.
3879
3880      The  SFNT `name'  table  loader has  been  fixed to  be able  to
3881      support these strange fonts.
3882
3883      Moreover, the code  in charge of processing this  table has been
3884      changed  to always favour  Windows-formatted entries  over other
3885      ones.  Hence,  a font that works  on Windows but not  on the Mac
3886      will  load cleanly in  FreeType and  report accurate  values for
3887      Family & PostScript names.
3888
3889    - The CID font driver has been fixed.  It unfortunately returned a
3890      Postscript   Font   name   with   a   leading   slash,   as   in
3891      `/MunhwaGothic-Regular'.
3892
3893    - FreeType  2 should now  compile fine  on AIX  4.3.3 as  a shared
3894      library.
3895
3896    - A  bug  in the  Postscript  hinter  has  been found  and  fixed,
3897      removing un-even stem widths at small pixel sizes (like 14-17).
3898
3899      This  improves the  quality of  a certain  number  of Postscript
3900      fonts.
3901
3902
3903  II. NEW FEATURES
3904
3905    - A  new function  named  `FT_Library_Version' has  been added  to
3906      return  the current  library's major,  minor, and  patch version
3907      numbers.   This is  important since  the  macros FREETYPE_MAJOR,
3908      FREETYPE_MINOR,  and  FREETYPE_PATCH  cannot  be used  when  the
3909      library is dynamically linked by a program.
3910
3911    - Two   new  APIs   have  been   added:   `FT_Get_First_Char'  and
3912      `FT_Get_Next_Char'.
3913
3914      Together,  these can  be used  to iterate  efficiently  over the
3915      currently  selected  charmap of  a  given  face.   Read the  API
3916      reference for more details.
3917
3918
3919  III. MISCELLANEOUS
3920
3921    - The FreeType sources are  under heavy internal re-factoring.  As
3922      a consequence,  we have created  a branch named `STABLE'  on the
3923      CVS to hold all future releases/fixes in the 2.0.x family.
3924
3925      The  HEAD  branch  now  contains  the  re-factored  sources  and
3926      shouldn't  be used for  testing or  packaging new  releases.  In
3927      case you  would like  to access the  2.0.9 sources from  our CVS
3928      repository, use the tag `VER-2-0-9'.
3929
3930
3931======================================================================
3932
3933CHANGES BETWEEN 2.0.8 and 2.0.7
3934
3935  I. IMPORTANT BUG FIXES
3936
3937    - There was  a small but  nasty bug in  `freetype-config.in' which
3938      caused the `freetype-config' script to fail on Unix.
3939
3940      This didn't prevent the installation  of the library or even its
3941      execution, but caused problems  when trying to compile many Unix
3942      packages that depend on it.
3943
3944    - Some TrueType or OpenType fonts embedded in PDF documents do not
3945      have  a  'cmap',  'post'  and  'name'  as  is  required  by  the
3946      specification.  FreeType no longer refuses to load such fonts.
3947
3948    - Various fixes to the PCF font driver.
3949
3950
3951======================================================================
3952
3953CHANGES BETWEEN 2.0.7 and 2.0.6
3954
3955  I. IMPORTANT BUG FIXES
3956
3957    - Fixed  two  bugs in  the  Type 1  font  driver.   The first  one
3958      resulted in a memory leak in subtle cases.  The other one caused
3959      FreeType to crash when  trying to load `.gsf' files (Ghostscript
3960      so-called Postscript fonts).
3961
3962      (This  made _many_  KDE applications  crash on  certain systems.
3963       FreeType _is_ becoming a critical system component on Linux :-)
3964
3965    - Fixed a memory leak in the CFF font driver.
3966
3967    - Fixed a memory leak in the PCF font driver.
3968
3969    - Fixed       the        Visual       C++       project       file
3970      `builds/win32/visualc/freetype.dsp' since  it didn't include the
3971      Postscript hinter component, causing errors at build time.
3972
3973    - Fixed a  small rendering bug  in the anti-aliased  renderer that
3974      only  occurred when  trying to  draw  thin (less  than 1  pixel)
3975      strokes.
3976
3977    - Fixed  `builds/unix/freetype2.a4' which  is used  to  generate a
3978      valid `freetype2.m4' for use with autoconf.
3979
3980    - Fixed the OpenVMS Makefiles.
3981
3982
3983  II. MISCELLANEOUS
3984
3985    - Added  `configure'  and   `install'  scripts  to  the  top-level
3986      directory.  A GNU-style installation is thus now easily possible
3987      with
3988
3989        ./configure  <options>
3990        make
3991        make install
3992
3993
3994======================================================================
3995
3996CHANGES BETWEEN 2.0.6 and 2.0.5
3997
3998  I. IMPORTANT BUG FIXES
3999
4000    - It wasn't possible to load embedded bitmaps when the auto-hinter
4001      was used.  This is now fixed.
4002
4003    - The TrueType  font driver  didn't load some  composites properly
4004      (the  sub-glyphs  were  slightly  shifted,  and  this  was  only
4005      noticeable when using monochrome rendering).
4006
4007    - Various  fixes  to the  auto-hinter.   They  merely improve  the
4008      output of sans-serif fonts.   Note that there are still problems
4009      with serifed fonts and composites (accented characters).
4010
4011    - All scalable  font drivers erroneously  returned un-fitted glyph
4012      advances when hinting was  requested.  This created problems for
4013      a number  of layout applications.  This  is a very  old bug that
4014      got  undetected mainly  because most  test/demo  program perform
4015      rounding explicitly or implicitly (through the cache).
4016
4017    - `FT_Glyph_To_Bitmap' did erroneously  modify the source glyph in
4018      certain cases.
4019
4020    - `glnames.py'  still contained  a bug  that made  FreeType return
4021      invalid names for certain glyphs.
4022
4023    - The  library crashed  when  loading certain  Type  1 fonts  like
4024      `sadn.pfb'  (`Stalingrad  Normal'),   which  appear  to  contain
4025      pathetic font info dictionaries.
4026
4027    - The TrueType glyph  loader is now much more  paranoid and checks
4028      everything when loading a given glyph image.  This was necessary
4029      to avoid problems (crashes and/or memory overwrites) with broken
4030      fonts that came from a really buggy automatic font converter.
4031
4032
4033  II. IMPORTANT UPDATES AND NEW FEATURES
4034
4035    - Important updates to the Mac-specific parts of the library.
4036
4037    - The caching sub-system has  been completely re-designed, and its
4038      API has  evolved (the  old one is  still supported  for backward
4039      compatibility).
4040
4041      The documentation for it is  not yet completed, sorry.  For now,
4042      you are encouraged to continue  using the old API.  However, the
4043      ftview  demo program in  the ft2demos  package has  already been
4044      updated to use the new caching functions.
4045
4046    - A new charmap cache is provided too.  See `FTC_CMapCache'.  This
4047      is useful to perform  character code -> glyph index translations
4048      quickly, without the need for an opened FT_Face.
4049
4050    - A NEW POSTSCRIPT HINTER module  has been added to support native
4051      hints in  the following  formats: PostScript Type  1, PostScript
4052      CID, and CFF/CEF.
4053
4054      Please test!  Note that  the auto-hinter produces better results
4055      for a number of  badly-hinted fonts (mostly auto-generated ones)
4056      though.
4057
4058    - A memory debugger is now  part of the standard FreeType sources.
4059      To      enable      it,      define      FT_DEBUG_MEMORY      in
4060      <freetype/config/ftoption.h>, and recompile the library.
4061
4062      Additionally, define  the _environment_ variable FT_DEBUG_MEMORY
4063      and run any program using FreeType.  When the library is exited,
4064      a  summary  of memory  footprints  and  possible  leaks will  be
4065      displayed.
4066
4067      This works transparently with  _any_ program that uses FreeType.
4068      However, you  will need a lot  of memory to  use this (allocated
4069      blocks are never  released to the heap to  detect double deletes
4070      easily).
4071
4072
4073  III. MISCELLANEOUS
4074
4075    - We  are  aware  of  subtle  differences between  the  output  of
4076      FreeType  versions   1  and  2  when  it   comes  to  monochrome
4077      TrueType-hinted glyphs.   These are  most probably due  to small
4078      differences in the monochrome rasterizers and will be worked out
4079      in an upcoming release.
4080
4081    - We have decided to fork the sources in a `stable' branch, and an
4082      `unstable' one, since FreeType  is becoming a critical component
4083      of many Unix systems.
4084
4085      The next  bug-fix releases of  the library will be  named 2.0.7,
4086      2.0.8, etc.,  while the `2.1'  branch will contain a  version of
4087      the sources where we will start major reworking of the library's
4088      internals, in order to produce FreeType 2.2.0 (or even 3.0) in a
4089      more distant future.
4090
4091      We  also hope  that this  scheme will  allow much  more frequent
4092      releases than in the past.
4093
4094
4095======================================================================
4096
4097CHANGES BETWEEN 2.0.5 and 2.0.4
4098
4099  NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER.  THIS MODULE
4100  WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
4101
4102  - Fixed a bug that made  certain glyphs, like `Cacute', `cacute' and
4103    `lslash'  unavailable from Unicode  charmaps of  Postscript fonts.
4104    This prevented the correct display of Polish text, for example.
4105
4106  - The kerning table of Type 1 fonts was loaded by FreeType, when its
4107    AFM    file    was    attached    to    its    face,    but    the
4108    FT_FACE_FLAG_HAS_KERNING   bit  flags   was  not   set  correctly,
4109    preventing FT_Get_Kerning to return meaningful values.
4110
4111  - Improved  SFNT (TrueType  & OpenType)  charmap  support.  Slightly
4112    better performance, as well as support for the new formats defined
4113    by the OpenType 1.3 specification (8, 10, and 12)
4114
4115  - Fixed a  serious typo in `src/base/ftcalc.c'  which caused invalid
4116    computations in certain rare cases, producing ugly artefacts.
4117
4118  - The  size  of the  EM  square is  computed  with  a more  accurate
4119    algorithm for Postscript fonts.   The old one caused slight errors
4120    with embedded fonts found in PDF documents.
4121
4122  - Fixed  a  bug in  the  cache  manager  that prevented  normal  LRU
4123    behaviour  within the cache  manager, causing  unnecessary reloads
4124    (for FT_Face and FT_Size objects only).
4125
4126  - Added  a new  function named  `FT_Get_Name_Index' to  retrieve the
4127    glyph index of a given glyph name, when found in a face.
4128
4129  - Added  a new function  named `FT_Get_Postscript_Name'  to retrieve
4130    the `unique' Postscript font name of a given face.
4131
4132  - Added   a   new   public   header  size   named   FT_SIZES_H   (or
4133    <freetype/ftsizes.h>) providing  new FT_Size-management functions:
4134    FT_New_Size, FT_Activate_Size, FT_Done_Size.
4135
4136  - Fixed a  reallocation bug that  generated a dangling  pointer (and
4137    possibly    memory    leaks)    with    Postscript    fonts    (in
4138    src/psaux/psobjs.c).
4139
4140  - Many fixes for 16-bit correctness.
4141
4142  - Removed many pedantic compiler warnings from the sources.
4143
4144  - Added an Amiga build directory in `builds/amiga'.
4145
4146
4147======================================================================
4148
4149CHANGES BETWEEN 2.0.4 and 2.0.3
4150
4151  - Fixed a rather annoying bug that was introduced in 2.0.3.  Namely,
4152    the font  transformation set through  FT_Set_Transform was applied
4153    twice to auto-hinted glyphs, resulting in incorrectly rotated text
4154    output.
4155
4156  - Fixed _many_  compiler warnings.   FT2 should now  compile cleanly
4157    with Visual  C++'s most pedantic warning level  (/W4).  It already
4158    compiled fine with GCC and a few other compilers.
4159
4160  - Fixed a bug  that prevented the linear advance  width of composite
4161    TrueType glyphs to be correctly returned.
4162
4163  - Fixed    the    Visual    C++    project    files    located    in
4164    `builds/win32/visualc' (previous versions  used older names of the
4165    library).
4166
4167  - Many  32-bit constants  have an  `L' appended  to their  value, in
4168    order to improve the 16-bitness  of the code.  Someone is actually
4169    trying to use FT2 on an Atari ST machine!
4170
4171  - Updated  the  `builds/detect.mk' file  in  order to  automatically
4172    build FT2  on AIX systems.   AIX uses `/usr/sbin/init'  instead of
4173    `/sbin/init' and wasn't previously  detected as a Unix platform by
4174    the FreeType build system.
4175
4176  - Updated  the  Unix-specific  portions  of the  build  system  (new
4177    libtool version, etc.).
4178
4179  - The  SFNT kerning  loader now  ensures  that the  table is  sorted
4180    (since some problem fonts do not meet this requirement).
4181
4182
4183=======================================================================
4184
4185CHANGES BETWEEN 2.0.3 and 2.0.2
4186
4187  I. CHANGES TO THE MODULES / FONT DRIVERS
4188
4189    - THE  AUTO-HINTER HAS  BEEN SLIGHTLY  IMPROVED, in  order  to fix
4190      several annoying artefacts, mainly:
4191
4192        - Blue  zone alignment  of  horizontal stems  wasn't performed
4193          correctly, resulting in artefacts  like the `d' being placed
4194          one pixel below the `b' in some fonts like Time New Roman.
4195
4196        - Overshoot thresholding  wasn't performed correctly, creating
4197          unpleasant artefacts at large character pixel sizes.
4198
4199        - Composite glyph loading has  been simplified.  This gets rid
4200          of  various artefacts  where the  components of  a composite
4201          glyphs were not correctly spaced.
4202
4203      These are  the last changes to the  current auto-hinting module.
4204      A new  hinting sub-system is currently  in the work  in order to
4205      support native hints  in Type 1 / CFF /  OpenType fonts, as well
4206      as globally improve rendering.
4207
4208    - The  PCF  driver has  been  fixed.   It  reported invalid  glyph
4209      dimensions for the fonts available on Solaris.
4210
4211    - The Type  1, CID and CFF  drivers have been modified  to fix the
4212      computation of the EM size.
4213
4214    - The Type 1  driver has been fixed to avoid  a dangerous bug that
4215      crashed the library with non-conforming fonts (i.e. ones that do
4216      not place the .notdef glyph at position 0).
4217
4218    - The TrueType  driver had a  rather subtle bug  (dangling pointer
4219      when loading  composite glyphs) that could crash  the library in
4220      rare occasions!
4221
4222
4223  II. HIGH-LEVEL API CHANGES
4224
4225    - The error  code enumeration values have been  changed.  An error
4226      value  is decomposed  in  a  generic error  code,  and a  module
4227      number.  see <freetype/fterrors.h> for details.
4228
4229    - A   new  public   header   file  has   been  introduced,   named
4230      FT_TRIGONOMETRY_H    (include/freetype/fttrigon.h),    providing
4231      trigonometric functions to  compute sines, cosines, arctangents,
4232      etc. with 16.16 fixed precision.  The implementation is based on
4233      the CORDIC  algorithm and is very fast  while being sufficiently
4234      accurate.
4235
4236
4237  III. INTERNALS
4238
4239    - Added  BeOS-specific files  in the  old build  sub-system.  Note
4240      that no changes were required to compile the library with Jam.
4241
4242    - The  configuration  is now  capable  of automatically  detecting
4243      64-bit integers  on a set  of predefined compilers  (GCC, Visual
4244      C++, Borland C++) and will use them by default.  This provides a
4245      small performance boost.
4246
4247    - A  small memory leak  that happened  when opening  0-sized files
4248      (duh!)  have been fixed.
4249
4250    - Fixed bezier  stack depth  bug in the  routines provided  by the
4251      FT_BBOX_H  header   file.   Also  fixed  similar   bugs  in  the
4252      rasterizers.
4253
4254    - The outline bounding  box code has been rewritten  to use direct
4255      computations,  instead of  bezier sub-division,  to  compute the
4256      exact bounding box of glyphs.   This is slightly slower but more
4257      accurate.
4258
4259    - The build system has been  improved and fixed, mainly to support
4260      `make'  on Windows  2000  correctly, avoid  problems with  `make
4261      distclean' on non Unix systems, etc.
4262
4263    - Hexadecimal  constants  have been  suffixed  with  `U' to  avoid
4264      problems with certain compilers on 64-bit platforms.
4265
4266    - A new directory named `src/tools' has been created.  It contains
4267      Python scripts and simple unit test programs used to develop the
4268      library.
4269
4270    - The DocMaker tool has been  moved from `docs' to `src/tools' and
4271      has been updated with the following:
4272
4273         - Now accepts the `--title=XXXX' or `-t XXXX' option from the
4274           command line to set the project's name in the generated API
4275           reference.
4276
4277         - Now accepts the `--output=DIR'  or `-o DIR' option from the
4278           command line to set  the output directory for all generated
4279           HTML files.
4280
4281         - Now accepts the `--prefix=XXXX' or `-p XXX' option from the
4282           command  line  to  set  the  file prefix  to  use  for  all
4283           generated HTML files.
4284
4285         - Now generates the current  time/data on each generated page
4286           in order to distinguish between versions.
4287
4288      DocMaker  can be  used with  other  projects now,  not only  FT2
4289      (e.g. MLib, FTLayout, etc.).
4290
4291
4292======================================================================
4293
4294CHANGES BETWEEN 2.0.2 and 2.0.1
4295
4296  I. CHANGES TO THE MODULES / FONT DRIVERS
4297
4298    - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
4299      avoid legal problems  with the Apple patents.  It  seems that we
4300      mistakenly  turned this option  on in  previous releases  of the
4301      build.
4302
4303      Note that if  you want to use the  bytecode interpreter in order
4304      to get high-quality TrueType  rendering, you will need to toggle
4305      by        hand        the        definition        of        the
4306      TT_CONFIG_OPTION_BYTECODE_INTERPRETER   macro    in   the   file
4307      `include/freetype/config/ftoption.h'.
4308
4309    - The CFF driver has been improved by Tom Kacvinsky and Sander van
4310      der Wal:
4311
4312      * Support for `seac' emulation.
4313      * Support for `dotsection'.
4314      * Support for retrieving glyph names through
4315        `FT_Get_Glyph_Name'.
4316
4317      The first two items are necessary to correctly a large number of
4318      Type 1 fonts converted to the CFF formats by Adobe Acrobat.
4319
4320    - The Type 1 driver was also improved by Tom & others:
4321
4322      * Better EM size computation.
4323      * Better support for synthetic (transformed) fonts.
4324      * The  Type 1  driver returns  the charstrings  corresponding to
4325        each glyph in the  `glyph->control_data' field after a call to
4326        `FT_Load_Glyph' (thanks Ha Shao).
4327
4328    - Various other bugfixes, including the following:
4329
4330      * Fixed a nasty memory leak in the Type 1 driver.
4331      * The autohinter  and the pcf  driver used static  writable data
4332        when they shouldn't.
4333      * Many casts were added to  make the code more 64-bits safe.  It
4334        also now compiles on Windows XP 64-bits without warnings.
4335      * Some incorrect writable statics were removed in the `autohint'
4336        and `pcf' drivers.  FreeType 2 now compiles on Epoc again.
4337
4338
4339  II. CHANGES TO THE HIGH-LEVEL API
4340
4341    - The library header files inclusion scheme has been changed.  The
4342      old scheme looked like:
4343
4344        #include <freetype/freetype.h>
4345        #include <freetype/ftglyph.h>
4346        #include <freetype/ftcache.h>
4347        #include <freetype/cache/ftimage.h>
4348
4349      Now you should use:
4350
4351        #include <ft2build.h>
4352        #include FT_FREETYPE_H
4353        #include FT_GLYPH_H
4354        #include FT_CACHE_H
4355        #include FT_CACHE_IMAGE_H
4356
4357      NOTE THAT  THE OLD  INCLUSION SCHEME WILL  STILL WORK  WITH THIS
4358      RELEASE.  HOWEVER, WE  DO NOT GUARANTEE THAT THIS  WILL STILL BE
4359      TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1).
4360
4361      The  file <ft2build.h>  is used  to define  the  header filename
4362      macros.  The complete and  commented list of macros is available
4363      in the API reference under the section name `Header File Macros'
4364      in Chapter I.
4365
4366      For more information, see section I of the following document:
4367
4368        https://www.freetype.org/freetype2/docs/tutorial/step1.html
4369
4370    - Many, many comments have been added to the public source file in
4371      order to  automatically generate  the API Reference  through the
4372      `docmaker.py' Python script.
4373
4374      The latter has been updated  to support the grouping of sections
4375      in chapters and better index sort.  See:
4376
4377        https://www.freetype.org/freetype2/docs/reference/ft2-toc.html
4378
4379
4380  III. CHANGES TO THE BUILD PROCESS
4381
4382    - If you  are not  building FreeType 2  with its own  build system
4383      (but with your own Makefiles or project files), you will need to
4384      be  aware that  the  build  process has  changed  a little  bit.
4385
4386      You don't  need to put the  `src' directory in  the include path
4387      when  compiling  any FT2  component.   Instead,  simply put  the
4388      component's directory in the current include path.
4389
4390      So, if you were doing something like:
4391
4392        cc -c -Iinclude -Isrc src/base/ftbase.c
4393
4394      change the line to:
4395
4396        cc -c -Iinclude -Isrc/base src/base/ftbase.c
4397
4398      If you were doing something like:
4399
4400        cd src/base
4401        cc -c -I../../include -I.. ftbase.c
4402
4403      change it to:
4404
4405        cd src/base
4406        cc -c -I../../include ftbase.c
4407
4408
4409======================================================================
4410
4411CHANGES BETWEEN 2.0.1 and 2.0
4412
4413  2.0.1 introduces a few changes:
4414
4415    - Fixed many bugs related to  the support of CFF / OpenType fonts.
4416      These  formats are  now much  better supported  though  there is
4417      still work planned to  deal with charset tables and PDF-embedded
4418      CFF files that use the old `seac' command.
4419
4420    - The  library could not  be compiled  in debug  mode with  a very
4421      small  number   of  C  compilers   whose  pre-processors  didn't
4422      implement the `##'  directive correctly (i.e. per se  the ANSI C
4423      specification!)  An elegant fix was found.
4424
4425    - Added  support for  the  free Borland  command-line C++  Builder
4426      compiler.   Use `make  setup bcc32'.   Also fixed  a  few source
4427      lines that generated new warnings with BCC32.
4428
4429    - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
4430      a conic Bezier arc.
4431
4432    - Updated the INSTALL file to add IDE compilation.
4433
4434    - Other  minor bug  fixes,  from  invalid Type  1  style flags  to
4435      correct   support   of  synthetic   (obliqued)   fonts  in   the
4436      auto-hinter, better support for embedded bitmaps in a SFNT font.
4437
4438    - Fixed some problems with `freetype-config'.
4439
4440  Finally, the `standard' scheme for including FreeType headers is now
4441  gradually changing,  but this will  be explained in a  later release
4442  (probably 2.0.2).
4443
4444  And very  special thanks to Tom Kacvinsky  and YAMANO-UCHI Hidetoshi
4445  for their contributions!
4446
4447
4448======================================================================
4449
4450CHANGES BETWEEN beta8 and 2.0
4451
4452  - Changed  the default  installation  path for  public headers  from
4453    `include/freetype' to `include/freetype2'.
4454
4455    Also added a new `freetype-config' that is automatically generated
4456    and installed  on Unix and  Cygwin systems.  The script  itself is
4457    used to retrieve the current  install path, C compilation flags as
4458    well as linker flags.
4459
4460  - Fixed several small bugs:
4461
4462    * Incorrect max advance width for fixed-pitch Type 1 fonts.
4463    * Incorrect glyph names for certain TrueType fonts.
4464    * The  glyph advance  was not  copied when  FT_Glyph_To_Bitmap was
4465      called.
4466    * The  linearHoriAdvance  and  linearVertAdvance  fields  were not
4467      correctly returned for glyphs processed by the auto-hinter.
4468    * `type1z'  renamed back to  `type1'; the  old `type1'  module has
4469      been removed.
4470
4471  - Revamped the  build system  to make it  a lot more  generic.  This
4472    will  allow us  to  re-use  nearly un-modified  in  lots of  other
4473    projects (including FreeType Layout).
4474
4475  - Changed `cid' to use `psaux' too.
4476
4477  - Added the  cache sub-system.  See <freetype/ftcache.h>  as well as
4478    the sources  in `src/cache'.  Note  that it compiles but  is still
4479    untested for now.
4480
4481  - Updated `docs/docmaker.py', a draft  API reference is available at
4482    https://web.archive.org/web/20001215173400/http://www.freetype.org:80/ft2api.html.
4483
4484  - Changed `type1' to use `psaux'.
4485
4486  - Created a  new module named  `psaux' to hold  the Type 1 &  Type 2
4487    parsing routines.  It should be  used by `type1', `cid', and `cff'
4488    in the future.
4489
4490  - Fixed an important bug in `FT_Glyph_Get_CBox'.
4491
4492  - Fixed  some compiler  warnings  that happened  since the  TrueType
4493    bytecode decoder was deactivated by default.
4494
4495  - Fixed two memory leaks:
4496
4497    * The    memory   manager   (16    bytes)   isn't    released   in
4498      FT_Done_FreeType!
4499    * Using custom input streams, the  copy of the original stream was
4500      never released.
4501
4502  - Fixed the  auto-hinter by performing automatic  computation of the
4503    `filling direction' of each glyph.   This is done through a simple
4504    and  fast approximation, and  seems to  work (problems  spotted by
4505    Werner though).  The Arphic fonts are a lot nicer though there are
4506    still a lot of things to do to handle Asian fonts correctly.
4507
4508
4509======================================================================
4510
4511BETA-8 (RELEASE CANDIDATE) CHANGES
4512
4513  - Deactivated the TrueType bytecode interpreter by default.
4514
4515  - Deactivated the `src/type1' font driver.  Now `src/type1z' is used
4516    by default.
4517
4518  - Updates to the build system.  We now compile the library correctly
4519    under  Unix  system  through  `configure' which  is  automatically
4520    called on the first `make' invocation.
4521
4522  - Added the auto-hinting module!  Fixing some bugs here and there.
4523
4524  - Found some bugs in the  composite loader (seac) of the Type1-based
4525    font drivers.
4526
4527  - Renamed the directory `freetype2/config' to `freetype2/builds' and
4528    updated all relevant files.
4529
4530  - Found a memory leak in the `type1' driver.
4531
4532  - Incorporated Tom's patches to  support flex operators correctly in
4533    OpenType/CFF fonts.  Now all I need is to support pure CFF and CEF
4534    fonts to be done with this driver :-)
4535
4536  - Added the  Windows FNT/FON driver in `src/winfonts'.   For now, it
4537    always  `simulates'   a  Unicode  charmap,  so   it  shouldn't  be
4538    considered completed right now.
4539
4540    It  is there  to be  more a  proof of  concept than  anything else
4541    anyway.  The driver is a single  C source file, that compiles to 3
4542    Kb of code.
4543
4544    I'm  still working on  the PCF/BDF  drivers, but  I'm too  lazy to
4545    finish them now.
4546
4547  - CHANGES TO THE HIGH-LEVEL API
4548
4549    * FT_Get_Kerning has a new parameter that allows you to select the
4550      coordinates of the kerning  vector (font units, scaled, scaled +
4551      grid-fitted).
4552    * The  outline functions are  now in <freetype/ftoutln.h>  and not
4553      part of <freetype/freetype.h> anymore.
4554    * <freetype/ftmodule.h>    now     contains    declarations    for
4555       FT_New_Library, FT_Done_Library, FT_Add_Default_Modules.
4556    * The so-called convenience  functions have moved from `ftoutln.c'
4557      to  `ftglyph.c',  and  are  thus available  with  this  optional
4558      component    of   the   library.     They   are    declared   in
4559      <freetype/ftglyph.h> now.
4560    * Anti-aliased  rendering is now  the default  for FT_Render_Glyph
4561      (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
4562      To generate a monochrome bitmap, use ft_render_mode_mono, or the
4563      FT_LOAD_MONOCHROME     flag    in    FT_Load_Glyph/FT_Load_Char.
4564      FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
4565    * <freetype/freetype.h>  now include <freetype/config/ftconfig.h>,
4566      solving a few headaches :-)
4567    * The type FT_GlyphSlotRec has now a `library' field.
4568
4569  - CHANGES TO THE `ftglyph.h' API
4570
4571    This API has  been severely modified in order  to make it simpler,
4572    clearer, and more  efficient.  It certainly now looks  like a real
4573    `glyph factory'  object, and allows client  applications to manage
4574    (i.e.  transform,  bbox  and  render) glyph  images  without  ever
4575    knowing their original format.
4576
4577  - Added  support  for CID-keyed  fonts  to  the  CFF driver.   Maybe
4578    support for pure CFF + CEF fonts should come in?
4579
4580  - Cleaned up  source code in order  to avoid two  functions with the
4581    same name.  Also  changed the names of the  files in `type1z' from
4582    `t1XXXX' to `z1XXXX' in order to avoid any conflicts.
4583
4584    `make multi' now works well :-)
4585
4586    Also removed the use of `cidafm' for now, even if the source files
4587    are  still there.  This  functionality will  certainly  go into  a
4588    specific module.
4589
4590  - ADDED SUPPORT FOR THE AUTO-HINTER
4591
4592    It  works :-) I  have a  demo program  which simply  is a  copy of
4593    `ftview'       that      does       a      `FT_Add_Module(library,
4594    &autohinter_module_class)' after  library initialization, and Type
4595    1 & OpenType/CFF fonts are now hinted.
4596
4597    CID  fonts are  not hinted,  as they  include no  charmap  and the
4598    auto-hinter doesn't include  `generic' global metrics computations
4599    yet.
4600
4601    Now, I need to release this thing to the FreeType 2 source.
4602
4603  - CHANGES TO THE RENDERER MODULES
4604
4605    The  monochrome  and smooth  renderers  are  now  in two  distinct
4606    directories, namely `src/raster1' and `src/smooth'.  Note that the
4607    old `src/renderer' is now gone.
4608
4609    I ditched  the 5-gray-levels renderers.  Basically,  it involved a
4610    simple #define toggle in 'src/raster1/ftraster.c'.
4611
4612    FT_Render_Glyph,  FT_Outline_Render  &  FT_Outline_Get_Bitmap  now
4613    select the best renderer  available, depending on render mode.  If
4614    the current renderer for a  given glyph image format isn't capable
4615    of supporting  the render mode, another  one will be  found in the
4616    library's list.   This means that client applications  do not need
4617    to  switch or  set  the  renderers themselves  (as  in the  latest
4618    change), they'll get what they want automatically.  At last.
4619
4620    Changed the demo programs accordingly.
4621
4622  - MAJOR INTERNAL REDESIGN:
4623
4624    A lot of internal modifications  have been performed lately on the
4625    source in order to provide the following enhancements:
4626
4627    * More generic module support:
4628
4629      The FT_Module  type is  now defined to  represent a handle  to a
4630      given  module.   The  file  <freetype/ftmodule.h>  contains  the
4631      FT_Module_Class definition, as well as the module-loading public
4632      API.
4633
4634      The  FT_Driver type  is still  defined, and  still  represents a
4635      pointer to  a font driver.  Note that  FT_Add_Driver is replaced
4636      by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc.
4637
4638    * Support for generic glyph image types:
4639
4640      The FT_Renderer  type is a pointer  to a module  used to perform
4641      various operations on glyph image.
4642
4643      Each renderer is  capable of handling images in  a single format
4644      (e.g. ft_glyph_format_outline).  Its functions are used to:
4645
4646      - transform an glyph image
4647      - render a glyph image into a bitmap
4648      - return the control box (dimensions) of a given glyph image
4649
4650      The scan converters `ftraster.c' and `ftgrays.c' have been moved
4651      to the new directory `src/renderer', and are used to provide two
4652      default renderer modules.
4653
4654      One corresponds  to the `standard' scan-converter,  the other to
4655      the `smooth' one.
4656
4657      he  current  renderer  can  be  set  through  the  new  function
4658      FT_Set_Renderer.
4659
4660      The old raster-related function FT_Set_Raster, FT_Get_Raster and
4661      FT_Set_Raster_Mode have now disappeared, in favor of the new:
4662
4663        FT_Get_Renderer
4664        FT_Set_Renderer
4665
4666      See the file <freetype/ftrender.h> for more details.
4667
4668      These  changes  were  necessary  to properly  support  different
4669      scalable formats in the future, like bi-color glyphs, etc.
4670
4671    * Glyph loader object:
4672
4673      A  new  internal  object,  called  a  'glyph  loader'  has  been
4674      introduced in the base layer.  It is used by all scalable format
4675      font drivers to load glyphs and composites.
4676
4677      This object  has been  created to reduce  the code size  of each
4678      driver,  as  each  one  of  them  basically  re-implemented  its
4679      functionality.
4680
4681      See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
4682      more information.
4683
4684    * FT_GlyphSlot has new fields:
4685
4686      In  order   to  support  extended  features   (see  below),  the
4687      FT_GlyphSlot structure has a few new fields:
4688
4689      linearHoriAdvance:
4690
4691        This  field  gives  the   linearly  scaled  (i.e.  scaled  but
4692        unhinted) advance  width for the  glyph, expressed as  a 16.16
4693        fixed pixel value.  This is useful to perform WYSIWYG text.
4694
4695      linearVertAdvance:
4696        This field  gives the linearly  scaled advance height  for the
4697        glyph  (relevant in  vertical  glyph layouts  only).  This  is
4698        useful to perform WYSIWYG text.
4699
4700        Note that  the two above field replace  the removed `metrics2'
4701        field in the glyph slot.
4702
4703      advance:
4704        This field is a vector  that gives the transformed advance for
4705        the glyph.   By default, it corresponds to  the advance width,
4706        unless  FT_LOAD_VERTICAL_LAYOUT  was  specified  when  calling
4707        FT_Load_Glyph or FT_Load_Char.
4708
4709      bitmap_left:
4710        This  field gives  the  distance in  integer  pixels from  the
4711        current pen position  to the left-most pixel of  a glyph image
4712        IF IT IS  A BITMAP.  It is only valid  when the `format' field
4713        is set to `ft_glyph_format_bitmap', for example, after calling
4714        the new function FT_Render_Glyph.
4715
4716      bitmap_top:
4717        This  field gives  the  distance in  integer  pixels from  the
4718        current pen position (located on the baseline) to the top-most
4719        pixel of the  glyph image IF IT IS  A BITMAP.  Positive values
4720        correspond to upwards Y.
4721
4722      loader:
4723        This  is a  new  private  field for  the  glyph slot.   Client
4724        applications should not touch it.
4725
4726
4727    * Support for transforms and direct rendering in FT_Load_Glyph:
4728
4729      Most of the functionality found in <freetype/ftglyph.h> has been
4730      moved to the core library.  Hence, the following:
4731
4732      - A   transform   can   be   specified  for   a   face   through
4733        FT_Set_Transform.  this transform  is applied by FT_Load_Glyph
4734        to  scalable glyph  images (i.e.  NOT TO  BITMAPS)  before the
4735        function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM
4736        was set in the load flags.
4737
4738      - Once  a  glyph image  has  been  loaded,  it can  be  directly
4739        converted  to  a  bitmap  by  using  the  new  FT_Render_Glyph
4740        function.  Note that this  function takes the glyph image from
4741        the glyph slot,  and converts it to a  bitmap whose properties
4742        are returned  in `face.glyph.bitmap', `face.glyph.bitmap_left'
4743        and `face.glyph.bitmap_top'.  The  original native image might
4744        be lost after the conversion.
4745
4746      - When using the new  bit flag FT_LOAD_RENDER, the FT_Load_Glyph
4747        and   FT_Load_Char   functions   will   call   FT_Render_Glyph
4748        automatically when needed.
4749
4750  - Reformatted all  modules source  code in order  to get rid  of the
4751    basic data types redefinitions (i.e. `TT_Int' instead of `FT_Int',
4752    `T1_Fixed'  instead  of  `FT_Fixed').  Hence  the  format-specific
4753    prefixes like  `TT_', `T1_',  `T2_' and `CID_'  are only  used for
4754    relevant structures.
4755
4756
4757======================================================================
4758
4759OLD CHANGES FOR BETA 7
4760
4761  - bug-fixed the  OpenType/CFF parser.  It  now loads and displays my
4762    two  fonts nicely,  but I'm  pretty certain  that more  testing is
4763    needed :-)
4764
4765  - fixed the crummy Type 1 hinter, it now handles accented characters
4766    correctly (well, the accent is  not always well placed, but that's
4767    another problem..)
4768
4769  - added the CID-keyed Type 1 driver in `src/cid'.  Works pretty well
4770    for only 13 Kb of code  ;-) Doesn't read AFM files though, nor the
4771    really useful CMAP files..
4772
4773  - fixed  two  bugs  in  the  smooth  renderer  (src/base/ftgrays.c).
4774    Thanks to Boris Letocha for spotting them and providing a fix.
4775
4776  - fixed potential `divide by zero' bugs in ftcalc.c.
4777
4778  - added source  code for  the OpenType/CFF driver  (still incomplete
4779    though..)
4780
4781  - modified the  SFNT driver slightly  to perform more  robust header
4782    checks  in TT_Load_SFNT_Header.  This prevents certain  font files
4783    (e.g.  some  Type  1  Multiple  Masters)  from  being  incorrectly
4784    `recognized' as TrueType font files..
4785
4786  - moved a lot of stuff from  the TrueType driver to the SFNT module,
4787    this   allows   greater   code   re-use   between   font   drivers
4788    (e.g. TrueType, OpenType, Compact-TrueType, etc..)
4789
4790  - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
4791    to minimally speed it up..
4792
4793  - added  support for  Multiple Master  fonts in  `type1z'.  There is
4794    also a new file named <freetype/ftmm.h> which defines functions to
4795    manage them from client applications.
4796
4797    The new file `src/base/ftmm.c' is also optional to the engine..
4798
4799  - various  formatting changes (e.g.  EXPORT_DEF ->  FT_EXPORT_DEF) +
4800    small bug fixes in FT_Load_Glyph, the `type1' driver, etc..
4801
4802  - a minor fix to the Type 1 driver to let them apply the font matrix
4803    correctly (used for many oblique fonts..)
4804
4805  - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
4806    to use %p instead of %lx).  Thanks to Karl Robillard.
4807
4808  - fixed  some bugs  in  the sbit  loader (src/base/sfnt/ttsbit.c)  +
4809    added  a new flag,  FT_LOAD_CROP_BITMAP to  query that  bitmaps be
4810    cropped when  loaded from a file  (maybe I should  move the bitmap
4811    cropper to the base layer ??).
4812
4813  - changed the default  number of gray levels of  the smooth renderer
4814    to 256  (instead of  the previous 128).  Of course, the  human eye
4815    can't see any difference ;-)
4816
4817  - removed TT_MAX_SUBGLYPHS,  there is no static limit  on the number
4818    of subglyphs in a TrueType font now..
4819
4820
4821======================================================================
4822
4823OLD CHANGES 16 May 2000
4824
4825  - tagged `BETA-6'  in the  CVS tree.  This one is a  serious release
4826    candidate even though it doesn't incorporate the auto-hinter yet..
4827
4828  - various obsolete files were removed, and copyright header updated
4829
4830  - finally  updated  the  standard   raster  to  fix  the  monochrome
4831    rendering bug + re-enable  support for 5-gray levels anti-aliasing
4832    (suck, suck..)
4833
4834  - created new header files, and modified sources accordingly:
4835
4836     <freetype/fttypes.h>
4837       - simple FreeType types, without the API
4838     <freetype/internal/ftmemory.h>
4839       - definition of memory-management macros
4840
4841  - added   the   `DSIG'   (OpenType   Digital   Signature)   tag   to
4842    <freetype/tttags.h>
4843
4844  - light update/cleaning of the build system + changes to the sources
4845    in  order  to  get  rid  of _all_  compiler  warnings  with  three
4846    compilers, i.e:
4847
4848    gcc with `-ansi -pedantic -Wall -W', Visual C++ with `/W3 /WX' and
4849    LCC
4850
4851    IMPORTANT NOTE FOR WIN32-LCC USERS:
4852    |
4853    |  It seems the C pre-processor  that comes with LCC is broken, it
4854    |  doesn't  recognize  the  ANSI  standard  directives  #  and  ##
4855    |  correctly   when  one  of   the  argument  is  a  macro.  Also,
4856    |  something like:
4857    |
4858    |     #define F(x)  print##x
4859    |
4860    |     F(("hello"))
4861    |
4862    |  will get incorrectly translated to:
4863    |
4864    |     print "hello")
4865    |
4866    |  by its pre-processor.  For this reason, you simply cannot build
4867    |  FreeType 2 in debug mode with this compiler..
4868
4869  - yet  another massive grunt work.  I've  changed the  definition of
4870    the EXPORT_DEF,  EXPORT_FUNC, BASE_DEF &  BASE_FUNC macros.  These
4871    now take an argument, which is the function's return value type.
4872
4873    This  is necessary to  compile FreeType  as a  DLL on  Windows and
4874    OS/2.  Depending on the compiler used, a compiler-specific keyword
4875    like  __export or __system  must be  placed before  (VisualC++) or
4876    after (BorlandC++) the type..
4877
4878    Of course, this needed a lot of changes throughout the source code
4879    to make it compile again...  All cleaned up now, apparently..
4880
4881    Note also  that there is a  new EXPORT_VAR macro  defined to allow
4882    the   _declaration_    of   an   exportable    public   (constant)
4883    variable.  This  is  the   case  of  the  raster  interfaces  (see
4884    ftraster.h and ftgrays.h), as well as each module's interface (see
4885    sfdriver.h, psdriver.h, etc..)
4886
4887  - new feature: it  is now possible to pass  extra parameters to font
4888                 drivers  when creating  a new  face object.  For now,
4889                 this capability is unused.  It could however prove to
4890                 be useful in a near future..
4891
4892      the FT_Open_Args structure was  changes, as well as the internal
4893      driver interface  (the specific `init_face'  module function has
4894      now a different signature).
4895
4896  - updated the tutorial (not finished though).
4897
4898  - updated the top-level BUILD  document
4899
4900  - fixed  a  potential memory  leak  that  could  occur when  loading
4901    embedded bitmaps.
4902
4903  - added     the     declaration     of     FT_New_Memory_Face     in
4904    <freetype/freetype.h>, as  it was  missing from the  public header
4905    (the implementation was already in `ftobjs.c').
4906
4907  - the file <freetype/fterrors.h> has been seriously updated in order
4908    to allow  the automatic generation  of error message tables.   See
4909    the comments within it for more information.
4910
4911  - major directory  hierarchy re-organisation.  This was done for two
4912    things:
4913
4914      * first,  to ease  the `manual'  compilation of  the  library by
4915        requiring at lot less include paths :-)
4916
4917      * second,  to  allow  external  programs to  effectively  access
4918        internal  data  fields.  For example,  this  can be  extremely
4919        useful if  someone wants  to write a  font producer or  a font
4920        manager on top of FreeType.
4921
4922    Basically, you  should now use  the 'freetype/' prefix  for header
4923    inclusion, as in:
4924
4925        #include <freetype/freetype.h>
4926        #include <freetype/ftglyph.h>
4927
4928    Some new include sub-directories are available:
4929
4930     a. the  `freetype/config' directory,  contains two files  used to
4931        configure  the  build  of  the  library.  Client  applications
4932        should  not need  to look  at these  normally, but they can if
4933        they want.
4934
4935        #include <freetype/config/ftoption.h>
4936        #include <freetype/config/ftconfig.h>
4937
4938     b. the `freetype/internal'  directory, contains header files that
4939        describes library  internals.  These are the header files that
4940        were  previously  found  in  the `src/base'  and  `src/shared'
4941        directories.
4942
4943
4944    As  usual, the build  system and  the demos  have been  updated to
4945    reflect the change..
4946
4947    Here's a layout of the new directory hierarchy:
4948
4949    TOP_DIR
4950      include/
4951         freetype/
4952            freetype.h
4953            ...
4954            config/
4955              ftoption.h
4956              ftconfig.h
4957              ftmodule.h
4958
4959            internal/
4960              ftobjs.h
4961              ftstream.h
4962              ftcalc.h
4963              ...
4964
4965      src/
4966         base/
4967            ...
4968
4969         sfnt/
4970         psnames/
4971         truetype/
4972         type1/
4973         type1z/
4974
4975
4976    Compiling a module is now  much easier, for example, the following
4977    should work when in the TOP_DIR directory on an ANSI build:
4978
4979       gcc -c -I./include -I./src/base src/base/ftbase.c
4980       gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
4981       etc..
4982
4983    (of course, using -Iconfig/<system> if you provide system-specific
4984     configuration files).
4985
4986  - updated the structure of FT_Outline_Funcs in order to allow direct
4987    coordinate scaling within  the outline decomposition routine (this
4988    is  important for virtual  `on' points  with TrueType  outlines) +
4989    updates to the rasters to support this..
4990
4991  - updated  the OS/2  table  loading code  in `src/sfnt/ttload.c'  in
4992    order to support version 2 of the table (see OpenType 1.2 spec)
4993
4994  - created  `include/tttables.h'  and  `include/t1tables.h' to  allow
4995    client applications to access some of  the SFNT and T1 tables of a
4996    face  with  a  procedural  interface (see  `FT_Get_Sfnt_Table')  +
4997    updates to internal source files to reflect the change..
4998
4999  - some  cleanups in  the source  code to  get rid  of  warnings when
5000    compiling with the `-Wall -W -ansi -pedantic' options in gcc.
5001
5002  - debugged and moved the smooth renderer to `src/base/ftgrays.c' and
5003    its header to `include/ftgrays.h'
5004
5005  - updated TT_MAX_SUBGLYPHS  to 96 as some CJK  fonts have composites
5006    with up to 80 sub-glyphs !! Thanks to Werner
5007
5008
5009======================================================================
5010
5011OLD CHANGES - 14-apr-2000
5012
5013  - fixed  a bug  in  the  TrueType glyph  loader  that prevented  the
5014    correct loading of some CJK glyphs in mingli.ttf
5015
5016  - improved the standard Type 1 hinter in `src/type1'
5017
5018  - fixed two bugs  in the experimental Type 1  driver in `src/type1z'
5019    to handle the new XFree86 4.0 fonts (and a few other ones..)
5020
5021  - the smooth  renderer is now  complete and supports  sub-banding to
5022    render large glyphs  at high speed.  However, it is still  located
5023    in `demos/src/ftgrays.c' and should move to the  library itself in
5024    the next  beta.  NOTE: The  smooth  renderer  doesn't  compile  in
5025    stand-alone mode anymore, but this should be fixed RSN..
5026
5027  - introduced convenience  functions to  more easily deal  with glyph
5028    images, see  `include/ftglyph.h' for more details, as  well as the
5029    new  demo program  named `demos/src/ftstring.c'  that demonstrates
5030    its use
5031
5032  - implemented  FT_LOAD_NO_RECURSE in  both the  TrueType and  Type 1
5033    drivers  (this  is required  by  the  auto-hinter  to improve  its
5034    results).
5035
5036  - changed   the  raster   interface,  in   order  to   allow  client
5037    applications  to   provide  their   own  span-drawing   callbacks.
5038    However,   only   the   smooth   renderer   supports   this.   See
5039    `FT_Raster_Params' in the file `include/ftimage.h'.
5040
5041  - fixed  a small bug  in FT_MulFix  that caused  incorrect transform
5042    computation!
5043
5044  - Note: The tutorial is out-of-date.
5045
5046
5047======================================================================
5048
5049OLD CHANGES - 12-mar-2000
5050
5051  - changed  the  layout  of  configuration  files  :  now,  all  ANSI
5052    configuration         files         are         located         in
5053    `freetype2/config'.  System-specific over-rides  can be  placed in
5054    `freetype2/config/<system>'.
5055
5056  - moved all configuration macros to `config/ftoption.h'
5057
5058  - improvements in the Type 1 driver with AFM support
5059
5060  - changed the fields  in the FT_Outline structure :  the old `flags'
5061    array is re-named `tags', while all ancient flags are encoded into
5062    a single unsigned int named `flags'.
5063
5064  - introduced     new      flags     in     FT_Outline.flags     (see
5065    ft_outline_.... enums in `ftimage.h').
5066
5067  - changed outline functions to `FT_Outline_<action>' syntax
5068
5069  - added a smooth anti-alias renderer to the demonstration programs
5070
5071  - added Mac graphics driver (thanks Just)
5072
5073  - FT_Open_Face  changed  in  order   to  received  a  pointer  to  a
5074    FT_Open_Args descriptor..
5075
5076  - various  cleanups,  a  few  more API  functions  implemented  (see
5077    FT_Attach_File)
5078
5079  - updated some docs
5080
5081
5082======================================================================
5083
5084OLD CHANGES - 22-feb-2000
5085
5086  - introduced the `psnames' module.  It is used to:
5087
5088      o convert  a Postscript glyph  name into the  equivalent Unicode
5089        character code (used by the  Type 1 driver(s) to synthesize on
5090        the fly a Unicode charmap).
5091
5092      o provide an  interface to retrieve the Postscript  names of the
5093        Macintosh,  Adobe  Standard &  Adobe  Expert character  codes.
5094        (the Macintosh  names are  used by the  SFNT-module postscript
5095        names support routines, while the other two tables are used by
5096        the Type 1 driver(s)).
5097
5098  - introduced the `type1z' alternate Type 1 driver.  This is a (still
5099    experimental) driver  for the Type  1 format that  will ultimately
5100    replace the one  in `src/type1'.  It uses pattern matching to load
5101    data from the font, instead of a finite  state analyzer.  It works
5102    much better than the `old' driver with `broken' fonts.  It is also
5103    much smaller (under 15 Kb).
5104
5105  - the  Type 1  drivers (both  in `src/type1'  and  `src/type1z') are
5106    nearly  complete.  They  both  provide automatic  Unicode  charmap
5107    synthesis through  the `psnames' module.  No re-encoding vector is
5108    needed.  (note  that they  still  leak  memory  due to  some  code
5109    missing, and I'm getting lazy).
5110
5111    Trivial AFM support has been added to read kerning information but
5112    wasn't exactly tested as it should ;-)
5113
5114  - The TrueType  glyph loader has  been seriously rewritten  (see the
5115    file  `src/truetype/ttgload.c'.  It is now  much, much  simpler as
5116    well as  easier to read,  maintain and understand  :-) Preliminary
5117    versions introduced a  memory leak that has been  reported by Jack
5118    Davis, and is now fixed..
5119
5120  - introduced  the new  `ft_glyph_format_plotter', used  to represent
5121    stroked outlines  like Windows `Vector' fonts, and  certain Type 1
5122    fonts  like `Hershey'.  The corresponding  raster will  be written
5123    soon.
5124
5125  - FT_New_Memory_Face  is  gone.  Likewise,  FT_Open_Face has  a  new
5126    interface that uses a structure  to describe the input stream, the
5127    driver (if required), etc..
5128
5129
5130TODO
5131
5132  - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
5133
5134  - Add a function like FT_Load_Character(face, char_code, load_flags)
5135    that  would   really  embed  a  call   to  FT_Get_Char_Index  then
5136    FT_Load_Glyph to ease developer's work.
5137
5138  - Update the tutorial!
5139
5140  - consider adding  support for Multiple  Master fonts in the  Type 1
5141    drivers.
5142
5143  - Test the AFM routines of the  Type 1 drivers to check that kerning
5144    information is returned correctly.
5145
5146  - write a decent auto-gridding component  !! We need this to release
5147    FreeType 2.0 gold !
5148
5149
5150less urgent needs:
5151
5152  - add a CFF/Type2 driver
5153  - add a BDF driver
5154  - add a FNT/PCF/HBF driver
5155  - add a Speedo driver from the X11 sources
5156
5157
5158======================================================================
5159
5160OLDER CHANGES - 27-jan-2000
5161
5162  - updated the  `sfnt' module  interface to allow  several SFNT-based
5163    drivers to co-exist peacefully
5164
5165  - updated  the `T1_Face'  type  to better  separate Postscript  font
5166    content  from the  rest of  the FT_Face  structure.  Might be used
5167    later by the CFF/Type2 driver..
5168
5169  - added an experimental replacement Type 1 driver featuring advanced
5170    (and speedy) pattern matching to retrieve the data from postscript
5171    fonts.
5172
5173  - very minor  changes in the implementation  of FT_Set_Char_Size and
5174    FT_Set_Pixel_Sizes (they now implement default to lighten the font
5175    driver's code).
5176
5177
5178======================================================================
5179
5180OLD MESSAGE
5181
5182This file summarizes the changes  that occurred  since the last `beta'
5183of FreeType 2. Because the list is important, it has been divided into
5184separate sections:
5185
5186Table Of Contents:
5187
5188    I   High-Level Interface (easier !)
5189   II   Directory Structure
5190  III   Glyph Image Formats
5191   IV   Build System
5192    V   Portability
5193   VI   Font Drivers
5194
5195
5196----------------------------------------------------------------------
5197
5198High-Level Interface:
5199
5200  The high-level API has been considerably simplified.  Here is how:
5201
5202    - resource objects have disappeared.  this means that face objects
5203      can now be created with  a single function call (see FT_New_Face
5204      and FT_Open_Face)
5205
5206    - when calling  either FT_New_Face  & FT_Open_Face, a  size object
5207      and a glyph slot object  are automatically created for the face,
5208      and can  be accessed  through `face->glyph' and  `face->size' if
5209      one really  needs to.   In most cases,  there's no need  to call
5210      FT_New_Size or FT_New_Glyph.
5211
5212    - similarly,  FT_Load_Glyph  now  only  takes  a  `face'  argument
5213      (instead  of a  glyph  slot  and a  size).  Also,  its  `result'
5214      parameter is  gone, as the glyph  image type is  returned in the
5215      field `face->glyph.format'
5216
5217    - the list  of available  charmaps is directly  accessible through
5218      `face->charmaps', counting `face->num_charmaps'  elements.  Each
5219      charmap  has an  'encoding'  field which  specifies which  known
5220      encoding it deals with.  Valid values are, for example:
5221
5222          ft_encoding_unicode      (for ASCII, Latin-1 and Unicode)
5223          ft_encoding_apple_roman
5224          ft_encoding_sjis
5225          ft_encoding_adobe_standard
5226          ft_encoding_adobe_expert
5227
5228      other  values may  be added  in the  future.  Each charmap still
5229      holds  its `platform_id'  and `encoding_id'  values in  case the
5230      encoding is too exotic for the current library
5231
5232
5233----------------------------------------------------------------------
5234
5235Directory Structure:
5236
5237  Should seem obvious to most of you:
5238
5239     freetype/
5240         config/        -- configuration sub-makefiles
5241            ansi/
5242            unix/       -- platform-specific configuration files
5243            win32/
5244            os2/
5245            msdos/
5246
5247         include/       -- public header  files, those to  be included
5248                           directly by client apps
5249
5250         src/           -- sources of the library
5251           base/        -- the base layer
5252           sfnt/        -- the sfnt `driver'  (see the drivers section
5253                           below)
5254           truetype/    -- the truetype driver
5255           type1/       -- the type1 driver
5256           shared/      -- some header files shared between drivers
5257
5258         demos/         -- demos/tools
5259
5260         docs/          -- documentation (a bit empty for now)
5261
5262
5263----------------------------------------------------------------------
5264
5265Glyph Image Formats:
5266
5267  Drivers are now able to  register new glyph image formats within the
5268  library.  For  now, the  base layer supports  of course  bitmaps and
5269  vector  outlines, but  one  could imagine  something different  like
5270  colored bitmaps, bi-color vectors or whatever else (Metafonts anyone
5271  ??).
5272
5273  See  the   file  `include/ftimage.h'.   Note  also  that   the  type
5274  FT_Raster_Map  is gone,  and  is now  replaced  by FT_Bitmap,  which
5275  should encompass all known bitmap types.
5276
5277  Each new  image format  must provide at  least one `raster',  i.e. a
5278  module capable of  transforming the glyph image into a bitmap.  It's
5279  also possible  to change the default  raster used for  a given glyph
5280  image format.
5281
5282  The default outline  scan-converter now uses 128 levels  of grays by
5283  default,  which tends  to smooth  many  things.  Note that the  demo
5284  programs have been updated significantly in order to display these..
5285
5286
5287----------------------------------------------------------------------
5288
5289Build system:
5290
5291  You still need  GNU Make to build the library.  The build system has
5292  been very seriously re-vamped in order to provide things like :
5293
5294   - automatic host platform  detection (reverting to 'config/ansi' if
5295     it is not detected, with pseudo-standard compilation flags)
5296
5297   - the ability to compile from the Makefiles with very different and
5298     exotic compilers.  Note that linking the library can be difficult
5299     for some platforms.
5300
5301     For example, the file `config/win32/lcclib.bat' is invoked by the
5302     build system to create the `.lib' file with LCC-Win32 because its
5303     librarian  has too  many flaws  to be  invoked directly  from the
5304     Makefile.
5305
5306  Here's how it works:
5307
5308  - the first time you type `make',  the build system runs a series of
5309    sub-makefiles  in order  to detect  your host  platform.  It  then
5310    dumps what it found, and creates a file called `config.mk' in  the
5311    current  directory.  This is a  sub-Makefile used  to  define many
5312    important Make variables used to build the library.
5313
5314  - the second time, the build system detects the `config.mk' then use
5315    it  to  build the  library.  All object  files  go  into 'obj'  by
5316    default,  as well  as the  library file,  but this  can  easily be
5317    changed.
5318
5319  Note that  you can run `make  setup' to force  another host platform
5320  detection  even   if  a  `config.mk'  is  present   in  the  current
5321  directory.  Another solution  is  simply to  delete  the file,  then
5322  re-run make.
5323
5324  Finally, the  default compiler  for all platforms  is gcc  (for now,
5325  this will hopefully changed in the future).  You can however specify
5326  a different  compiler by specifying  it after the 'setup'  target as
5327  in:
5328
5329      gnumake setup lcc         on Win32 to use the LCC compiler
5330      gnumake setup visualc     on Win32 to use Visual C++
5331
5332  See  the file  `config/<system>/detect.mk' for  a list  of supported
5333  compilers for your platforms.
5334
5335  It should be relatively easy  to write new detection rules files and
5336  config.mk..
5337
5338  Finally, to  build the demo programs,  go to `demos'  and launch GNU
5339  Make, it will use the `config.mk'  in the top directory to build the
5340  test programs..
5341
5342
5343----------------------------------------------------------------------
5344
5345Portability:
5346
5347  In  the  previous  beta,  a  single FT_System  object  was  used  to
5348  encompass  all  low-level  operations like  thread  synchronisation,
5349  memory management and i/o access.  This has been greatly simplified:
5350
5351    - thread synchronisation  has been dropped, for  the simple reason
5352      that the library  is already re-entrant, and that  if you really
5353      need  two  threads accessing  the  same  FT_Library, you  should
5354      really synchronize access to it yourself with a simple mutex.
5355
5356    - memory  management is  performed  through a  very simple  object
5357      called `FT_Memory',  which really is a table  containing a table
5358      of pointers to  functions like malloc, realloc and  free as well
5359      as some user data (closure).
5360
5361    - resources have disappeared (they created more problems than they
5362      solved), and  i/o management have  been simplified greatly  as a
5363      result.  Streams are  defined through  FT_Stream objects,  which
5364      can be either memory-based or disk-based.
5365
5366      Note that  each face  has its own  stream, which is  closed only
5367      when  the  face object  is  destroyed.  Hence,  a function  like
5368      TT_Flush_Face in 1.x cannot be directly  supported.  However, if
5369      you really need something like  this, you can easily tailor your
5370      own streams  to achieve the same  feature at a  lower level (and
5371      use FT_Open_Face instead of FT_New_Face to create the face).
5372
5373  See the file  `include/ftsystem.h' for more details, as  well as the
5374  implementations found in `config/unix' and `config/ansi'.
5375
5376
5377----------------------------------------------------------------------
5378
5379Font Drivers:
5380
5381  The  Font Driver  interface has  been modified  in order  to support
5382  extensions & versioning.
5383
5384
5385  The  list of  the font  drivers that  are statically  linked  to the
5386  library at compile time is  managed through a new configuration file
5387  called `config/<platform>/ftmodule.h'.
5388
5389  This  file is  autogenerated  when  invoking  `make modules'.   This
5390  target  will  parse  all  sub-directories  of  'src', looking  for a
5391  `module.mk' rules  file, used  to describe  the driver to  the build
5392  system.
5393
5394  Hence, one  should call  `make modules' each  time a font  driver is
5395  added or removed from the `src' directory.
5396
5397  Finally, this  version  provides  a `pseudo-driver'  in  `src/sfnt'.
5398  This  driver  doesn't  support  font  files  directly, but  provides
5399  services used by all TrueType-like font drivers.  Hence, its code is
5400  shared between  the TrueType & OpenType  font formats,  and possibly
5401  more formats to come if we're lucky..
5402
5403
5404----------------------------------------------------------------------
5405
5406Extensions support:
5407
5408  The extensions support is inspired by the one found in 1.x.
5409
5410  Now, each font driver has  its own `extension registry', which lists
5411  which extensions  are available  for the font  faces managed  by the
5412  driver.
5413
5414  Extension ids are  now strings, rather than 4-byte  tags, as this is
5415  usually more readable.
5416
5417  Each extension has:
5418    - some data, associated to each face object
5419    - an interface (table of function pointers)
5420
5421  An extension  that is format-specific should  simply register itself
5422  to the correct font driver.  Here is some example code:
5423
5424   // Registering an extensions
5425   //
5426   FT_Error  FT_Init_XXXX_Extension( FT_Library  library )
5427   {
5428     FT_DriverInterface*  tt_driver;
5429
5430     driver = FT_Get_Driver( library, "truetype" );
5431     if (!driver) return FT_Err_Unimplemented_Feature;
5432
5433     return FT_Register_Extension( driver, &extension_class );
5434   }
5435
5436
5437   // Implementing the extensions
5438   //
5439   FT_Error  FT_Proceed_Extension_XXX( FT_Face  face )
5440   {
5441     FT_XXX_Extension            ext;
5442     FT_XXX_Extension_Interface  ext_interface;
5443
5444     ext = FT_Get_Extension( face, "extensionid", &ext_interface );
5445     if (!ext) return error;
5446
5447     return ext_interface->do_it(ext);
5448   }
5449
5450------------------------------------------------------------------------
5451
5452Copyright (C) 2000-2021 by
5453David Turner, Robert Wilhelm, and Werner Lemberg.
5454
5455This  file  is  part  of the  FreeType  project, and may  only be  used,
5456modified,  and  distributed  under  the  terms of  the FreeType  project
5457license, LICENSE.TXT.   By continuing to use, modify, or distribute this
5458file you  indicate that  you have  read the  license and understand  and
5459accept it fully.
5460
5461
5462Local Variables:
5463version-control: never
5464coding: utf-8
5465End:
5466
5467--- end of CHANGES ---
5468