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