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