~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/3rdparty/freetype/docs/CHANGES

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-08-24 04:09:09 UTC
  • Revision ID: james.westby@ubuntu.com-20050824040909-xmxe9jfr4a0w5671
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
LATEST CHANGES BETWEEN 2.1.9 and 2.1.8
 
3
 
 
4
  I. IMPORTANT BUG FIXES
 
5
 
 
6
    - The function  `FT_Get_CharMap_Index' was only declared,  without
 
7
      any  real  code.   For  consistency,  it  has  been  renamed  to
 
8
      `FT_Get_Charmap_Index'.   (This function is needed  to implement
 
9
      cmap caches.)
 
10
 
 
11
    - `FT_Outline_Get_BBox'  sometimes returned  incorrect values  for
 
12
      conic outlines (e.g., for TrueType fonts).
 
13
 
 
14
    - Handling of `bhed' table has been fixed.
 
15
 
 
16
    - The TrueType driver with enabled byte code interpreter sometimes
 
17
      returned artifacts due to incorrect rounding.  This bug has been
 
18
      introduced after version 2.1.4.
 
19
 
 
20
    - The BDF driver dropped the last glyph in the font.
 
21
 
 
22
    - The BDF driver now uses the DEFAULT_CHAR property (if available)
 
23
      to select a glyph shape for the undefined glyph.
 
24
 
 
25
 
 
26
  II. IMPORTANT CHANGES
 
27
 
 
28
    - George  Williams   contributed  code  to   handle  Apple's  font
 
29
      distortion technology found in GX fonts (`avar', `cvar', `fvar',
 
30
      and `gvar' tables;  the Multiple Masters  API has been  slightly
 
31
      extended to cope with the new functionality).
 
32
 
 
33
    - The `FT_GlyphSlotRec' structure has been extended:  The elements
 
34
      `lsb_delta' and  `rsb_delta' give the difference  between hinted
 
35
      and  unhinted  left and right  side bearings  if autohinting  is
 
36
      active.  Using those values can improve the inter-letter spacing
 
37
      considerably.   See the documentation of  `FT_GlyphSlotRec'  and
 
38
      the `ftstring' demo program how to use it.
 
39
 
 
40
 
 
41
  III. MISCELLANEOUS
 
42
 
 
43
    - A new  documentation file  `formats.txt' describes various  font
 
44
      formats supported (and not supported) by FreeType.
 
45
 
 
46
 
 
47
======================================================================
 
48
 
 
49
LATEST CHANGES BETWEEN 2.1.8 and 2.1.7
 
50
 
 
51
  I. IMPORTANT BUG FIXES
 
52
 
 
53
    - The native  TrueType hinter contained some  bugs which prevented
 
54
      some fonts to be rendered correctly, most notably Legendum.otf.
 
55
 
 
56
    - The PostScript hinter now produces improved results.
 
57
 
 
58
    - The  linear advance  width  and height  values were  incorrectly
 
59
      rounded,  making  them virtually  unusable  if  not loaded  with
 
60
      FT_LOAD_LINEAR_DESIGN.
 
61
 
 
62
    - Indexing CID-keyed CFF fonts is  now working: The glyph index is
 
63
      correctly  treated as a  CID, similar  to FreeType's  CID driver
 
64
      module.  Note that CID CMap support is still missing.
 
65
 
 
66
    - The FT_FACE_FLAGS_GLYPH_NAMES flag is now  set correctly for all
 
67
      font formats.
 
68
 
 
69
    - Some subsetted Type 1  fonts weren't parsed correctly.  This bug
 
70
      has been introduced in 2.1.7.  In summary, the Type 1 parser has
 
71
      become more robust.
 
72
 
 
73
    - Non-decimal numbers weren't parsed correctly in PS fonts.
 
74
 
 
75
    - The WinFNT driver now correctly reports FT_ENCODING_NONE for all
 
76
      but one encoding.  Use  the new FT_WinFNT_ID_XXX values together
 
77
      with FT_Get_WinFNT_Header() to get the WinFNT charset ID.
 
78
 
 
79
    - The descender metrics (face->size->metrics.descender) for WinFNT
 
80
      bitmap fonts had the wrong sign.
 
81
 
 
82
    - The (emulated) `seac' support for CFF fonts was broken.
 
83
 
 
84
    - The `flex' operator didn't work for CFF fonts.
 
85
 
 
86
    - PS glyphs  which  use  the   `hintmask'  operator  haven't  been
 
87
      rendered correctly in some cases.
 
88
 
 
89
    - Metrics for BDF and PCF bitmap font formats have been fixed.
 
90
 
 
91
    - Autohinting  is now  disabled for  glyphs  which  are vertically
 
92
      distorted  or mirrored  (using a  transformation matrix).   This
 
93
      fixes a bug which produced zero-height glyphs.
 
94
 
 
95
    - The   `freetype-config'   script   now  handles   --prefix   and
 
96
      --exec-prefix correctly; it also  returns the proper --rpath (or
 
97
      -R) value if FreeType has been built as a shared library.
 
98
 
 
99
 
 
100
  II. IMPORTANT CHANGES
 
101
 
 
102
    - Both  PCF  and BDF  drivers  now  handle  the SETWIDTH_NAME  and
 
103
      ADD_STYLE_NAME    properties.     Values    are   appended    to
 
104
      face->style_name; example: `Bold SemiCondensed'.
 
105
 
 
106
    - The PCF driver now handles bitmap  fonts compressed with the LZW
 
107
      algorithm (extension .pcf.Z, compressed with `compress').
 
108
 
 
109
    - A  new  API   function  `FT_Get_CMap_Language_ID'  (declared  in
 
110
      `tttables.h')  is  available  to   get  the  language  ID  of  a
 
111
      TrueType/SFNT cmap.
 
112
 
 
113
    - The hexadecimal format of  data after the `StartData' command in
 
114
      CID-keyed Type 1 fonts is now supported.  While this can't occur
 
115
      in  file-based   fonts,  it  can   happen  in  document-embedded
 
116
      resources of PostScript documents.
 
117
 
 
118
    - Embedded bitmaps in SFNT-based CFF fonts are now supported.
 
119
 
 
120
    - A simple  API is  now available  to control  FreeType's  tracing
 
121
      mechanism if compiled  with FT_DEBUG_LEVEL_TRACE.   See the file
 
122
      `ftdebug.h' for more details.
 
123
 
 
124
    - YAMATO Masatake contributed improved  handling of MacOS resource
 
125
      forks on non-MacOS platforms (for example, Linux can mount MacOS
 
126
      file systems).
 
127
 
 
128
    - Support for MacOS has been improved; there is now a new function
 
129
      `FT_New_Face_From_FSSpec'  similar to `FT_New_Face'  except that
 
130
      it accepts an FSSpec instead of a path.
 
131
 
 
132
    - The cache sub-system has been rewritten.
 
133
 
 
134
      - There is now support for deinstallation of faces.
 
135
 
 
136
      - A new  API function `FTC_Manager_RemoveFaceID'  has been added
 
137
        to  delete  all  `idle'  nodes  that  correspond  to  a  given
 
138
        FTC_FaceID.  All `locked' nodes  (i.e., those with a reference
 
139
        count > 0), will be modified to prevent them from appearing in
 
140
        further  lookups (they  will  be cleaned  normally when  their
 
141
        reference count reaches 0).
 
142
 
 
143
      - There  is  now  support  for point  scaling  (i.e.,  providing
 
144
        character sizes in points + dpis, instead of pixels).
 
145
 
 
146
      - Three abstract cache classes are now available:
 
147
 
 
148
          FTC_GCache:  Used to store  one glyph  item per  cache node,
 
149
                      with the ability to group common attributes into
 
150
                      `families'.      This    replaces     the    old
 
151
                      FTC_GlyphCache class.
 
152
 
 
153
          FTC_ICache: Used to store one FT_Glyph per cache node.  This
 
154
                      extends  FTC_GCache.  Family  definition, family
 
155
                      comparison, and  glyph loading are  however left
 
156
                      to sub-classes.
 
157
 
 
158
          FTC_SCache: Used to  store up to 16 small  bitmaps per cache
 
159
                      node.    This    extends   FTC_GCache.    Family
 
160
                      definition, family  comparison and glyph loading
 
161
                      are however left to sub-classes.
 
162
 
 
163
      - The file `src/cache/ftcbasic.c' implements:
 
164
 
 
165
          FTC_ImageCache: Extends    FTC_ICache;   implements   family
 
166
                          definitions and glyph loading similar to the
 
167
                          old API.
 
168
 
 
169
          FTC_SBitCache: Extends    FTC_SCache,    implements   family
 
170
                         definitions and glyph  loading similar to the
 
171
                         old API
 
172
 
 
173
        Client  applications  should  be  able to  extend  FTC_GCache,
 
174
        FTC_ICache, or FTC_SCache much more easily (i.e., less code to
 
175
        write, and  less callbacks).  For example,  one could envision
 
176
        caches  that are  capable of  storing  transformed (obliqued),
 
177
        stroked,   emboldened,   or   colored   glyph   images.    Use
 
178
        `ftcbasic.c' as an example.
 
179
 
 
180
      - All public  APIs are now  in `include/freetype/ftcache.h', (to
 
181
        be    accessed   as    `FT_CACHE_H').     The   contents    of
 
182
        `include/freetype/cache/' is only  needed by applications that
 
183
        wish to implement their own caches.
 
184
 
 
185
      - There were some major performance improvements through the use
 
186
        of  various programming  tricks.   Cache hits  are  up to  70%
 
187
        faster than in the old code.
 
188
 
 
189
      - The  FTC_CMapCache has  been simplied.   Charmaps can  only be
 
190
        accessed by  index right now.  There  is also a  new API named
 
191
        `FT_Charmap_GetIndex' for this purpose.
 
192
 
 
193
      - The  demo programs  have been  updated to  the new  code.  The
 
194
        previous versions will not work with the current one.
 
195
 
 
196
      - Using  an invalid face  index in FT_Open_Face and friends  now
 
197
        causes an error even if the font contains a single face only.
 
198
 
 
199
 
 
200
  III. MISCELLANEOUS
 
201
 
 
202
    - Wolfgang Domrļæ½se contributed support files for building FreeType
 
203
      on the Atari using the PureC compiler.  Note that the Atari is a
 
204
      16bit platform.
 
205
 
 
206
    - Vitaliy Pasternak contributed project files for VS.NET 2003.
 
207
 
 
208
 
 
209
======================================================================
 
210
 
 
211
LATEST CHANGES BETWEEN 2.1.7 and 2.1.6
 
212
 
 
213
  I. IMPORTANT BUG FIXES
 
214
 
 
215
    - Updated  to newest  libtool  version, fixing  build problems  on
 
216
      various platforms.
 
217
 
 
218
    - On  Unix  platforms,  `make  install' didn't  copy  the  correct
 
219
      `ftconfig.h' file.
 
220
 
 
221
  Note that version 2.1.7  contains the same library  C source code as
 
222
  version 2.1.6.
 
223
 
 
224
 
 
225
======================================================================
 
226
 
 
227
LATEST CHANGES BETWEEN 2.1.6 and 2.1.5
 
228
 
 
229
  I. IMPORTANT BUG FIXES
 
230
 
 
231
    - The PFR  font driver didn't  load kerning tables  correctly, and
 
232
      the functions in FT_PFR_H didn't work at all.
 
233
 
 
234
    - Type 1 font  files in  binary format  (PFB) with  an end-of-file
 
235
      indicator weren't accepted by the FreeType engine.
 
236
 
 
237
    - Fonts which contain /PaintType  and /StrokeWidth no longer cause
 
238
      a segfault.  This bug has been introduced in version 2.1.5.
 
239
 
 
240
    - Fonts  loaded  with   FT_LOAD_RENDER  no  longer  cause  strange
 
241
      results.  This bug has been introduced in version 2.1.5.
 
242
 
 
243
    - Some  Windows   (bitmap)  FNT/FON  files   couldn't  be  handled
 
244
      correctly.
 
245
 
 
246
 
 
247
  II. IMPORTANT CHANGES
 
248
 
 
249
    - The internal  module API  has been heavily  changed in  favor of
 
250
      massive simplifications within the font engine.  This also means
 
251
      that authors of third-party modules must adapt their code to the
 
252
      new scheme.
 
253
 
 
254
      NOTE:  THE NEW SCHEME IS NOT COMPLETED YET.  PLEASE WAIT UNTIL A
 
255
      FINAL ANNOUNCEMENT!
 
256
 
 
257
    - The PostScript  parser has been enhanced to  handle comments and
 
258
      strings   correctly.   Additionally,   more  syntax   forms  are
 
259
      recognized.
 
260
 
 
261
    - Added the  optional unpatented hinting system  for TrueType.  It
 
262
      allows  typefaces which  need hinting  to produce  correct glyph
 
263
      forms (e.g., Chinese typefaces  from Dynalab) to work acceptably
 
264
      without infringing Apple patents.   This system is compiled only
 
265
      if  TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING  is  defined  in
 
266
      ftoption.h (activated by default).
 
267
 
 
268
 
 
269
  III. MISCELLANEOUS
 
270
 
 
271
    - There  is now  a guard  in the  public header  files  to protect
 
272
      against inclusion of freetype.h from FreeType 1.
 
273
 
 
274
    - Direct inclusion of freetype.h  and other public header files no
 
275
      longer works.  You have to use the documented scheme
 
276
 
 
277
        #include <ft2build.h>
 
278
        #include FT_FREETYPE_H
 
279
 
 
280
      to load freetype.h with  a symbolic name.  This protects against
 
281
      renaming  of public  header  files (which  shouldn't happen  but
 
282
      actually  has, avoiding two  public header  files with  the same
 
283
      name).
 
284
 
 
285
 
 
286
======================================================================
 
287
 
 
288
LATEST CHANGES BETWEEN 2.1.5 and 2.1.4
 
289
 
 
290
  I. IMPORTANT BUG FIXES
 
291
 
 
292
    - Parsing the /CIDFontName field  now removes the leading slash to
 
293
      be in sync with other font drivers.
 
294
 
 
295
    - gzip support was buggy.  Some fonts could not be read.
 
296
 
 
297
    - Fonts which  have nested subglyphs  more than one level  deep no
 
298
      longer cause a segfault.
 
299
 
 
300
    - Creation of synthetic  cmaps for fonts in CFF  format was broken
 
301
      partially.
 
302
 
 
303
    - Numeric  font  dictionary entries  for  synthetic  fonts are  no
 
304
      longer overwritten.
 
305
 
 
306
    - The font matrix  wasn't applied to the advance  width for Type1,
 
307
      CID, and  CFF fonts.  This caused problems  when loading certain
 
308
      synthetic Type 1 fonts like `Helvetica Narrow'.
 
309
 
 
310
    - The test  for the charset registry  in BDF and PCF  fonts is now
 
311
      case-insensitive.
 
312
 
 
313
    - FT_Vector_Rotate  sometimes  returned   strange  values  due  to
 
314
      rounding errors.
 
315
 
 
316
    - The  PCF  driver  now  returns  the  correct  number  of  glyphs
 
317
      (including an artificial `notdef' glyph at index 0).
 
318
 
 
319
    - FreeType now  supports buggy CMaps  which are contained  in many
 
320
      CJK fonts from Dynalab.
 
321
 
 
322
    - Opening  an invalid  font  on a  Mac  caused a  segfault due  to
 
323
      double-freeing memory.
 
324
 
 
325
    - BDF  fonts  with  more   than  32768  glyphs  weren't  supported
 
326
      properly.
 
327
 
 
328
 
 
329
  II. IMPORTANT CHANGES
 
330
 
 
331
    - Accessing bitmap font formats has been synchronized.  To do that
 
332
      the FT_Bitmap_Size  structure has  been extended to  contain new
 
333
      fields `size', `x_ppem', and `y_ppem'.
 
334
 
 
335
    - The FNT driver now returns multiple faces, not multiple strikes.
 
336
 
 
337
    - The `psnames'  module has been  updated to the Adobe  Glyph List
 
338
      version 2.0.
 
339
 
 
340
    - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
 
341
 
 
342
    - The algorithm for guessing the font style has been improved.
 
343
 
 
344
    - For fonts in SFNT format, root->height is no longer increased if
 
345
      the line gap  is zero.  There exist fonts  (containing e.g. form
 
346
      drawing  characters) which  intentionally have  a zero  line gap
 
347
      value.
 
348
 
 
349
    - ft_glyph_bbox_xxx  flags   are  now  deprecated   in  favour  of
 
350
      FT_GLYPH_BBOX_XXX.
 
351
 
 
352
    - ft_module_xxx   flags   are   now   deprecated  in   favour   of
 
353
      FT_MODULE_XXX.
 
354
 
 
355
    - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB}      are     now
 
356
      deprecated               in               favour              of
 
357
      FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB}  -- those encodings
 
358
      are not specific to Microsoft.
 
359
 
 
360
 
 
361
  III. MISCELLANEOUS
 
362
 
 
363
    - The  autohinter  has been  further  improved;  for example,  `m'
 
364
      glyphs now retain its vertical symmetry.
 
365
 
 
366
    - Partial support of Mac fonts on non-Mac platforms.
 
367
 
 
368
    - `make   refdoc'   (after   first   `make')   builds   the   HTML
 
369
      documentation.  You need Python for this.
 
370
 
 
371
    - The make build system should  now work more reliably on DOS-like
 
372
      platforms.
 
373
 
 
374
    - Support for  EMX gcc  and Watson C/C++  compilers on  MS-DOS has
 
375
      been added.
 
376
 
 
377
    - Better VMS build support.
 
378
 
 
379
    - Support for the pkg-config  package by providing a `freetype.pc'
 
380
      file.
 
381
 
 
382
    - New configure option --with-old-mac-fonts for Darwin.
 
383
 
 
384
    - Some source files have been  renamed (mainly to fit into the 8.3
 
385
      naming scheme).
 
386
 
 
387
 
 
388
======================================================================
 
389
 
 
390
LATEST CHANGES BETWEEN 2.1.4 and 2.1.3
 
391
 
 
392
  I. IMPORTANT BUG FIXES
 
393
 
 
394
    - Updated  to newest  libtool  version, fixing  build problems  on
 
395
      various platforms.
 
396
 
 
397
    - A fix  in the Gzip stream  reader: It couldn't  read certain .gz
 
398
      files properly due to a  small typo.  In certain cases, FreeType
 
399
      could  also loop  endlessly  when trying  to  load tiny  gzipped
 
400
      files.
 
401
 
 
402
    - The configure script now tries  to use the system-wide zlib when
 
403
      it  finds one  (instead of  the  copy found  in src/gzip).   And
 
404
      "freetype-config" has  been updated to return  relevant flags in
 
405
      this case when invoked with "--libs" (e.g. "-lzlib").
 
406
 
 
407
    - Certain fonts couldn't be loaded  by 2.1.3 because they lacked a
 
408
      Unicode   charmap  (e.g.   SYMBOL.TTF).    FreeType  erroneously
 
409
      rejected them.
 
410
 
 
411
    - The CFF loader was modified to accept fonts which only contain a
 
412
      subset of  their reference charset.  This  prevented the correct
 
413
      use of PDF-embedded fonts.
 
414
 
 
415
    - The logic to detect Unicode charmaps has been modified.  This is
 
416
      required to  support fonts which include both  16-bit and 32-bit
 
417
      charmaps (like very  recent asian ones) using the  new 10 and 12
 
418
      SFNT formats.
 
419
 
 
420
    - The TrueType  loader now limits  the depth of  composite glyphs.
 
421
      This is necessary to prevent broken fonts to break the engine by
 
422
      blowing the stack with recursive glyph definitions.
 
423
 
 
424
    - The CMap cache is now  capable of managing UCS-4 character codes
 
425
      that   are   mapped   through   extended  charmaps   in   recent
 
426
      TrueType/OpenType fonts.
 
427
 
 
428
    - The   cache  sub-system   now  properly   manages  out-of-memory
 
429
      conditions  instead of  blindly  reporting them  to the  caller.
 
430
      This means that it will try to empty the cache before restarting
 
431
      its allocations to see if that can help.
 
432
 
 
433
    - The  PFR driver  didn't return  the list  of  available embedded
 
434
      bitmaps properly.
 
435
 
 
436
    - There was  a nasty  memory leak when  using embedded  bitmaps in
 
437
      certain font formats.
 
438
 
 
439
 
 
440
  II. IMPORTANT CHANGES
 
441
 
 
442
    - David Chester  contributed some enhancements  to the auto-hinter
 
443
      that  significantly increase  the  quality of  its output.   The
 
444
      Postscript hinter was also improved in several ways.
 
445
 
 
446
    - The FT_RENDER_MODE_LIGHT render mode was implemented.
 
447
 
 
448
    - A new  API function called `FT_Get_BDF_Property'  has been added
 
449
      to FT_BDF_H to  retrieve BDF properties from BDF  _and_ PCF font
 
450
      files.   THIS  IS  STILL  EXPERIMENTAL,  since  it  hasn't  been
 
451
      properly tested yet.
 
452
 
 
453
    - A Windows FNT specific API has been added, mostly to access font
 
454
      headers.  This is used by Wine.
 
455
 
 
456
    - TrueType tables  without an "hmtx" table are  now tolerated when
 
457
      an  incremental interface  is  used.  This  happens for  certain
 
458
      Type42 fonts passed from Ghostscript to FreeType.
 
459
 
 
460
    - The PFR font driver is  now capable of returning the font family
 
461
      and style  names when  they are available  (instead of  the sole
 
462
      "FontID").   This  is  performed  by parsing  an  *undocumented*
 
463
      portion of the font file!
 
464
 
 
465
 
 
466
  III. MISCELLANEOUS
 
467
 
 
468
    - The path stroker in FT_STROKER_H has entered beta stage.  It now
 
469
      works very  well, but  its interface might  change a bit  in the
 
470
      future.  More on this in later releases.
 
471
 
 
472
    - The documentation for  FT_Size_Metrics didn't appear properly in
 
473
      the API reference.
 
474
 
 
475
    - The file docs/VERSION.DLL has been updated to explain versioning
 
476
      with FreeType  (i.e., comparing release/libtool/so  numbers, and
 
477
      how to use them in autoconf scripts).
 
478
 
 
479
    - The  installation  documentation  has been  seriously  revamped.
 
480
      Everything is now in the "docs" directory.
 
481
 
 
482
 
 
483
======================================================================
 
484
 
 
485
LATEST CHANGES BETWEEN 2.1.3 and 2.1.2
 
486
 
 
487
  I. IMPORTANT BUG FIXES
 
488
 
 
489
    - FT_Vector_Transform  had  been  incorrectly modified  in  2.1.2,
 
490
      resulting  in  incorrect   transformations  being  applied  (for
 
491
      example, rotations were processed in opposite angles).
 
492
 
 
493
    - The format  8 and 12 TrueType charmap  enumeration routines have
 
494
      been fixed (FT_Get_Next_Char returned invalid values).
 
495
 
 
496
    - The  PFR font driver  returned incorrect  advance widths  if the
 
497
      outline  and metrics resolution  defined in  the font  file were
 
498
      different.
 
499
 
 
500
    - FT_Glyph_To_Bitmap now returns  successfully when called with an
 
501
      FT_BitmapGlyph argument (it previously returned an error).
 
502
 
 
503
    - A bug  in the Type 1  loader that prevented  valid font bounding
 
504
      boxes to be loaded from multiple master fonts.
 
505
 
 
506
    - The SFNT  validation code has been rewritten.   FreeType can now
 
507
      load "broken"  fonts that were  usable on Windows, but  not with
 
508
      previous versions of the library.
 
509
 
 
510
    - The computation of bearings in the BDF driver has been fixed.
 
511
 
 
512
    - The Postscript hinter crashed when trying to hint certain glyphs
 
513
      (more precisely,  when trying to  apply hints to an  empty glyph
 
514
      outline).
 
515
 
 
516
    - The  TrueType glyph  loader  now supports  composites in  "Apple
 
517
      format"  (they differ slightly  from Microsoft/OpenType  ones in
 
518
      the way transformation offsets are computed).
 
519
 
 
520
    - FreeType was  very slow at opening certain  asian CID/CFF fonts,
 
521
      due to  fixed increment  in dynamic array  re-allocations.  This
 
522
      has  been changed  to  exponential behaviour  to get  acceptable
 
523
      performance.
 
524
 
 
525
 
 
526
 
 
527
  II. IMPORTANT CHANGES
 
528
 
 
529
    - The PCF driver now supports gzip-compressed font files natively.
 
530
      This means that  you will be able to use  all these bitmap fonts
 
531
      that  come with  XFree86 with  FreeType (and  libXft/libXft2, by
 
532
      extension).
 
533
 
 
534
    - The  automatic and  postscript hinters  have both  been updated.
 
535
      This  results in  a relatively  important increase  of rendering
 
536
      quality since  many nasty defaults have  been supressed.  Please
 
537
      visit the web page:
 
538
 
 
539
        http://www.freetype.org/hinting/smooth-hinting.html
 
540
 
 
541
      for additional details on this topic.
 
542
 
 
543
    - The "load_flags"  parameter of FT_Load_Glyph is  now an FT_Int32
 
544
      (instead  of just  being  an FT_Int).   This  breaks source  and
 
545
      binary  compatibility for  16bit systems  only,  while retaining
 
546
      both of them for 32 and 64 bit ones.
 
547
 
 
548
      Some new flags have been added consequently:
 
549
 
 
550
        FT_LOAD_NO_AUTOHINT   :: Disable the use of the auto-hinter
 
551
                                 (but not native format hinters).
 
552
 
 
553
        FT_LOAD_TARGET_NORMAL :: Hint and render for normal
 
554
                                 anti-aliased displays.
 
555
 
 
556
        FT_LOAD_TARGET_MONO   :: Hint and render for 1-bit displays.
 
557
 
 
558
        FT_LOAD_TARGET_LCD    :: Hint and render for horizontal RGB or
 
559
                                 BGR sub-pixel displays (like LCD
 
560
                                 screens).  THIS IS STILL
 
561
                                 EXPERIMENTAL!
 
562
 
 
563
        FT_LOAD_TARGET_LCD_V  :: Same as FT_LOAD_TARGET_LCD, for
 
564
                                 vertical sub-pixel displays (like
 
565
                                 rotated LCD screens).  THIS IS STILL
 
566
                                 EXPERIMENTAL!
 
567
 
 
568
      FT_LOAD_MONOCHROME   is  still   supported,  but   only  affects
 
569
      rendering, not the hinting.
 
570
 
 
571
      Note that the `ftview'  demo program available in the `ft2demos'
 
572
      package  has been  updated to  support LCD-optimized  display on
 
573
      non-paletted displays (under Win32 and X11).
 
574
 
 
575
    - The  PFR  driver  now  supports embedded  bitmaps  (all  formats
 
576
      supported), and returns correct kerning metrics for all glyphs.
 
577
 
 
578
    - The TrueType charmap loader  now supports certain `broken' fonts
 
579
      that load under Windows without problems.
 
580
 
 
581
    - The cache API has been slightly modified (it's still a beta!):
 
582
 
 
583
       - The type  FTC_ImageDesc has been removed; it  is now replaced
 
584
         by  FTC_ImageTypeRec.   Note that  one  of  its  fields is  a
 
585
         `load_flag' parameter for FT_Load_Glyph.
 
586
 
 
587
       - The  field  "num_grays" of  FT_SBitRec  has  been changed  to
 
588
         "max_grays"  in  order to  fit  within  a  single byte.   Its
 
589
         maximum value is thus 255 (instead of 256 as previously).
 
590
 
 
591
 
 
592
  III. MISCELLANEOUS
 
593
 
 
594
    - Added support  for the  DESTDIR variable during  "make install".
 
595
      This simplifies packaging of FreeType.
 
596
 
 
597
    - Included modified  copies of the  ZLib sources in  `src/gzip' in
 
598
      order to support  gzip-compressed PCF fonts.  We do  not use the
 
599
      system-provided  zlib  for  now,   though  this  is  a  probable
 
600
      enhancement for future releases.
 
601
 
 
602
    - The DocMaker tool used to generate the on-line API reference has
 
603
      been   completely    rewritten.    It   is    now   located   in
 
604
      "src/tools/docmaker/docmaker.py".  Features:
 
605
 
 
606
        - better cross-referenced output
 
607
        - more polished output
 
608
        - uses Python regular expressions  (though it didn't speed the
 
609
          program)
 
610
        - much  more  modular structure,  which  allows for  different
 
611
          "backends"  in  order to  generate  HTML,  XML, or  whatever
 
612
          format.
 
613
 
 
614
      One can regenerate the API reference by calling:
 
615
 
 
616
         python src/tools/docmaker/docmaker.py \
 
617
                --prefix=ft2 \
 
618
                --title=FreeType-2.1.3 \
 
619
                --output=<outputdirectory>
 
620
                include/freetype/*.h \
 
621
                include/freetype/config/*.h \
 
622
                include/freetype/cache/*.h
 
623
 
 
624
    - A new, experimental, support for incremental font loading (i.e.,
 
625
      loading  of fonts  where the  glyphs are  not in  the  font file
 
626
      itself, but provided by an external component, like a Postscript
 
627
      interpreter) has been added by Graham Asher.  This is still work
 
628
      in progress, however.
 
629
 
 
630
    - A new,  EXPERIMENTAL, path stroker  has been added.   It doesn't
 
631
      suffer  from  severe  rounding  errors  and  treat  bezier  arcs
 
632
      directly.  Still work in progress (i.e. not part of the official
 
633
      API).   See  the file  <freetype/ftstroker.h>  for  some of  the
 
634
      details.
 
635
 
 
636
    - The massive  re-formatting of sources and  internal re-design is
 
637
      still under-way.  Many  internal functions, constants, and types
 
638
      have been renamed.
 
639
 
 
640
 
 
641
======================================================================
 
642
 
 
643
LATEST CHANGES BETWEEN 2.1.2 and 2.1.1
 
644
 
 
645
  I. IMPORTANT BUG FIXES
 
646
 
 
647
    - Many  font drivers didn't  select a  Unicode charmap  by default
 
648
      when a new face  was opened (with the FT_CONFIG_OPTION_USE_CMAPS
 
649
      options enabled),  causing many applications  to not be  able to
 
650
      display text correctly with the 2.1.x releases.
 
651
 
 
652
    - The  PFR driver had  a bug  in its  composite loading  code that
 
653
      produces incorrectly placed accents with many fonts.
 
654
 
 
655
    - The Type42 driver crashed sometimes due to a nasty bug.
 
656
 
 
657
    - The Type 1 custom encoding  charmap didn't handle the case where
 
658
      the first glyph index wasn't 0.
 
659
 
 
660
    - A  serious  typo  in  the  TrueType  composite  loader  produced
 
661
      incorrectly placed  glyphs in fonts  like "Wingdings" and  a few
 
662
      others.
 
663
 
 
664
 
 
665
  II. MISCELLANEOUS
 
666
 
 
667
    - The Win32  Visual C++ project  file has been updated  to include
 
668
      the PFR driver as well.
 
669
 
 
670
    - "freetype.m4" is  now installed by default by  "make install" on
 
671
      Unix systems.
 
672
 
 
673
    - The function  FT_Get_PS_Font_Info now works with  CID and Type42
 
674
      fonts as well.
 
675
 
 
676
 
 
677
======================================================================
 
678
 
 
679
LATEST CHANGES BETWEEN 2.1.1 and 2.1.0
 
680
 
 
681
  I. IMPORTANT BUG FIXES
 
682
 
 
683
    - The  `version_info'  returned   by  `freetype-config'  in  2.1.0
 
684
      returned an invalid value.  It now returns 9:1:3 (2.0.9 returned
 
685
      9:0:3).
 
686
 
 
687
    - Version 2.1.0  couldn't be linked against  applications on Win32
 
688
      and  Amiga systems  due  to  a new  debug  function that  wasn't
 
689
      properly   propagated  to   the  system-specific   directory  in
 
690
      `builds'.
 
691
 
 
692
    - Various MacOS and Mac OS X specific fixes.
 
693
 
 
694
    - Fixed  a bug in  the TrueType  charmap validation  routines that
 
695
      made version  2.1.0 too restrictive  -- many popular  fonts have
 
696
      been rejected.
 
697
 
 
698
    - There was  still a very small difference  between the monochrome
 
699
      glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the
 
700
      bytecode  interpreter enabled.   This was  caused by  an invalid
 
701
      flag setting in the TrueType glyph loader, making the rasterizer
 
702
      change  its  drop-out   control  mode.   Now  theresults  should
 
703
      _really_ be completely identical.
 
704
 
 
705
    - The TrueType name table loader has been improved to support many
 
706
      popular  though buggy Asian  fonts.  It  now ignores  empty name
 
707
      entries,  invalid  pointer offsets  and  a  few other  incorrect
 
708
      subtleties.  Moreover,  name strings  are now loaded  on demand,
 
709
      which reduces the memory load  of many faces (e.g. the ARIAL.TTF
 
710
      font file contains a 10kByte name table with 70 names).
 
711
 
 
712
    - Fixed a bug in the Postscript hinter that prevented family blues
 
713
      substitution to happen correctly.
 
714
 
 
715
 
 
716
  II. NEW FEATURES
 
717
 
 
718
    - Three new font drivers in this release:
 
719
 
 
720
      * A  BDF  font driver,  contributed  by  Franco Zappa  Nardelli,
 
721
        heavily  modified   by  Werner  Lemberg.    It  also  supports
 
722
        anti-aliased bitmaps (using a slightly extended BDF format).
 
723
 
 
724
      * A Type42  font driver, contributed by Roberto  Alameda.  It is
 
725
        still experimental but seems to work relatively well.
 
726
 
 
727
      * A PFR  font driver, contributed  by David Turner  himself.  It
 
728
        doesn't  support PFR  hinting --  note that  BitStream  has at
 
729
        least two patents on this format!
 
730
 
 
731
 
 
732
  III. MISCELLANEOUS
 
733
 
 
734
    - The  cache  sub-system has  been  optimized  in important  ways.
 
735
      Cache hits are now significantly faster.  For example, using the
 
736
      CMap cache is about  twice faster than calling FT_Get_Char_Index
 
737
      on most platforms.  Similarly, using an SBit cache is about five
 
738
      times faster  than loading the  bitmaps from a bitmap  file, and
 
739
      300 to  500 times  faster than generating  them from  a scalable
 
740
      format.
 
741
 
 
742
      Note that  you should recompile  your sources if you  designed a
 
743
      custom  cache  class for  the  FT2  Cache  subsystem, since  the
 
744
      changes performed are source, but not binary, compatible.
 
745
 
 
746
 
 
747
======================================================================
 
748
 
 
749
LATEST CHANGES BETWEEN 2.1.0 and 2.0.9
 
750
 
 
751
  I. IMPORTANT BUG FIXES
 
752
 
 
753
    - The  TrueType bytecode  interpreter  has been  fixed to  produce
 
754
      _exactly_ the same output as FreeType 1.x.  Previous differences
 
755
      were due  to slightly distinct  fixed-point computation routines
 
756
      used to perform dot products and vector length measurements.
 
757
 
 
758
      It seems  that native TrueType hinting  is _extremely_ sensitive
 
759
      to  rounding errors.  The  required vector  computation routines
 
760
      have been optimized and placed within the "ttinterp.c" file.
 
761
 
 
762
    - Fixed the parsing of accelerator tables in the PCF font driver.
 
763
 
 
764
    - Fixed the Type1 glyph loader  routine used to compute the font's
 
765
      maximum advance width.
 
766
 
 
767
 
 
768
  II. NEW FEATURES
 
769
 
 
770
    - The `configure' script used on Unix systems has been modified to
 
771
      check  that  GNU  Make  is  being used  to  build  the  library.
 
772
      Otherwise,  it  will display  a  message  proposing  to use  the
 
773
      GNUMAKE environment variable to name it.
 
774
 
 
775
      The Unix-specific file README.UNX has been modified accordingly.
 
776
 
 
777
 
 
778
  III. MISCELLANEOUS
 
779
 
 
780
    - The  FreeType  License in  `docs/FTL.txt'  has  been updated  to
 
781
      include  a  proposed preferred  disclaimer.   If  you are  using
 
782
      FreeType in your products, you are encouraged (but not mandated)
 
783
      to use the following text in your documentation:
 
784
 
 
785
      """
 
786
        Portions of this software are copyright ļæ½ 1996-2002 The
 
787
        FreeType Project (www.freetype.org).  All rights reserved.
 
788
      """
 
789
 
 
790
    - The default size of the render pool has been reduced to 16kByte.
 
791
      This  shouldn't result  in any  noticeable  performance penalty,
 
792
      unless you are  using the engine as-is to  render very large and
 
793
      complex glyphs.
 
794
 
 
795
    - The  FreeType 2  redesign has  begun.  More  information  can be
 
796
      found at this URL:
 
797
 
 
798
        http://www.freetype.org/freetype2/redesign.html
 
799
 
 
800
      The following  internal changes  have been performed  within the
 
801
      sources of this release:
 
802
 
 
803
        - Many   internal  types   have  been   renamed   to  increase
 
804
          consistency.   The  following  should  be true,  except  for
 
805
          public types:
 
806
 
 
807
            * All structure  types have a name ending  in "Rec" (short
 
808
              for `record').
 
809
 
 
810
            * A  pointer-to-structure type  has the  same name  as the
 
811
              structure, _without_ the "Rec" suffix.
 
812
 
 
813
              Example:
 
814
 
 
815
                typedef struct FooRec_
 
816
                {
 
817
                  ...
 
818
 
 
819
                } FooRec, *Foo;
 
820
 
 
821
        - Many   internal  macros  have   been  renamed   to  increase
 
822
          consistency.  The following should be true:
 
823
 
 
824
            * All  macros  have a  name  beginning  with "FT_".   This
 
825
              required a few changes like
 
826
 
 
827
                ALLOC   => FT_ALLOC
 
828
                FREE    => FT_FREE
 
829
                REALLOC => FT_REALLOC
 
830
 
 
831
            * All  macros are completely  UPPERCASE.  This  required a
 
832
              few changes like:
 
833
 
 
834
                READ_Short  => FT_READ_SHORT
 
835
                NEXT_Short  => FT_NEXT_SHORT
 
836
                GET_ULongLE => FT_GET_ULONG_LE
 
837
                MEM_Set     => FT_MEM_SET
 
838
                MEM_Copy    => FT_MEM_COPY
 
839
                etc.
 
840
 
 
841
            * Whenever   possible,   all   macro  names   follow   the
 
842
              FT_<OBJECT>_<METHOD> pattern.  For example
 
843
 
 
844
                ACCESS_Frame   => FT_FRAME_ENTER
 
845
                FORGET_Frame   => FT_FRAME_EXIT
 
846
                EXTRACT_Frame  => FT_FRAME_EXTRACT
 
847
                RELEASE_Frame  => FT_FRAME_RELEASE
 
848
 
 
849
                FILE_Pos       => FT_STREAM_POS
 
850
                FILE_Seek      => FT_STREAM_SEEK
 
851
                FILE_Read      => FT_STREAM_READ
 
852
                FILE_ReadAt    => FT_STREAM_READ_AT
 
853
                READ_Fields    => FT_STREAM_READ_FIELDS
 
854
 
 
855
        - Many  internal functions  have  been renamed  to follow  the
 
856
          FT_<Object>_<Method> pattern.  For example:
 
857
 
 
858
            FT_Seek_Stream       => FT_Stream_Seek
 
859
            FT_Read_Stream_At    => FT_Stream_ReadAt
 
860
            FT_Done_Stream       => FT_Stream_Close
 
861
            FT_New_Stream        => FT_Stream_Open
 
862
            FT_New_Memory_Stream => FT_Stream_OpenMemory
 
863
            FT_Extract_Frame     => FT_Stream_ExtractFrame
 
864
 
 
865
          Note that method names do not contain "_".
 
866
 
 
867
        - The FT_ALLOC_ARRAY  and FT_REALLOC_ARRAY have  been replaced
 
868
          with  FT_NEW_ARRAY and  FT_RENEW_ARRAY which  do not  take a
 
869
          type  as the  fourth argument.   Instead, the  array element
 
870
          type  size is computed  automatically from  the type  of the
 
871
          target pointer used.
 
872
 
 
873
        - A  new object  class, FT_CMap,  has been  introduced.  These
 
874
          internal  objects are  used to  model character  maps.  This
 
875
          eases  the support  of additional  charmap types  within the
 
876
          engine.
 
877
 
 
878
        - A new  configuration file named "ftstdlib.h"  has been added
 
879
          to `include/freetype/config'.  It  is used to define aliases
 
880
          for  _every_ routine  of the  ISO  C library  that the  font
 
881
          engine   uses.    Each    aliases   has   a   "ft_"   prefix
 
882
          (e.g. "ft_strlen" is an alias for "strlen").
 
883
 
 
884
          This is  used to  ease the porting  of FreeType 2  to exotic
 
885
          runtime environments where the ISO C Library isn't available
 
886
          (e.g.  XFree86 extension modules).
 
887
 
 
888
      More details are available in the "ChangeLog" file.
 
889
 
 
890
 
 
891
======================================================================
 
892
 
 
893
LATEST CHANGES BETWEEN 2.0.9 and 2.0.8
 
894
 
 
895
  I. IMPORTANT BUG FIXES
 
896
 
 
897
    - Certain fonts like "foxjump.ttf" contain broken name tables with
 
898
      invalid entries and wild offsets.  This caused FreeType to crash
 
899
      when trying to load them.
 
900
 
 
901
      The  SFNT `name'  table  loader has  been  fixed to  be able  to
 
902
      support these strange fonts.
 
903
 
 
904
      Moreover, the code  in charge of processing this  table has been
 
905
      changed  to always favour  Windows-formatted entries  over other
 
906
      ones.  Hence,  a font that works  on Windows but not  on the Mac
 
907
      will  load cleanly in  FreeType and  report accurate  values for
 
908
      Family & PostScript names.
 
909
 
 
910
    - The CID font driver has been fixed.  It unfortunately returned a
 
911
      Postscript   Font   name   with   a   leading   slash,   as   in
 
912
      "/MunhwaGothic-Regular".
 
913
 
 
914
    - FreeType  2 should now  compile fine  on AIX  4.3.3 as  a shared
 
915
      library.
 
916
 
 
917
    - A  bug  in the  Postscript  hinter  has  been found  and  fixed,
 
918
      removing un-even stem widths at small pixel sizes (like 14-17).
 
919
 
 
920
      This  improves the  quality of  a certain  number  of Postscript
 
921
      fonts.
 
922
 
 
923
 
 
924
  II. NEW FEATURES
 
925
 
 
926
    - A  new function  named  `FT_Library_Version' has  been added  to
 
927
      return  the current  library's major,  minor, and  patch version
 
928
      numbers.   This is  important since  the  macros FREETYPE_MAJOR,
 
929
      FREETYPE_MINOR,  and  FREETYPE_PATCH  cannot  be used  when  the
 
930
      library is dynamically linked by a program.
 
931
 
 
932
    - Two   new  APIs   have  been   added:   `FT_Get_First_Char'  and
 
933
      `FT_Get_Next_Char'.
 
934
 
 
935
      Together,  these can  be used  to iterate  efficiently  over the
 
936
      currently  selected  charmap of  a  given  face.   Read the  API
 
937
      reference for more details.
 
938
 
 
939
 
 
940
  III. MISCELLANEOUS
 
941
 
 
942
    - The FreeType sources are  under heavy internal re-factoring.  As
 
943
      a consequence,  we have created  a branch named "STABLE"  on the
 
944
      CVS to hold all future releases/fixes in the 2.0.x family.
 
945
 
 
946
      The  HEAD  branch  now  contains  the  re-factored  sources  and
 
947
      shouldn't  be used for  testing or  packaging new  releases.  In
 
948
      case you  would like  to access the  2.0.9 sources from  our CVS
 
949
      repository, use the tag `VER-2-0-9'.
 
950
 
 
951
 
 
952
======================================================================
 
953
 
 
954
LATEST CHANGES BETWEEN 2.0.8 and 2.0.7
 
955
 
 
956
  I. IMPORTANT BUG FIXES
 
957
 
 
958
    - There was  a small but  nasty bug in  "freetype-config.in" which
 
959
      caused the "freetype-config" script to fail on Unix.
 
960
 
 
961
      This didn't prevent the installation  of the library or even its
 
962
      execution, but caused problems  when trying to compile many Unix
 
963
      packages that depend on it.
 
964
 
 
965
    - Some TrueType or OpenType fonts embedded in PDF documents do not
 
966
      have  a  'cmap',  'post'  and  'name'  as  is  required  by  the
 
967
      specification.  FreeType no longer refuses to load such fonts.
 
968
 
 
969
    - Various fixes to the PCF font driver.
 
970
 
 
971
 
 
972
======================================================================
 
973
 
 
974
LATEST CHANGES BETWEEN 2.0.7 and 2.0.6
 
975
 
 
976
  I. IMPORTANT BUG FIXES
 
977
 
 
978
    - Fixed  two  bugs in  the  Type 1  font  driver.   The first  one
 
979
      resulted in a memory leak in subtle cases.  The other one caused
 
980
      FreeType to crash when  trying to load ".gsf" files (Ghostscript
 
981
      so-called Postscript fonts).
 
982
 
 
983
      (This  made _many_  KDE applications  crash on  certain systems.
 
984
       FreeType _is_ becoming a critical system component on Linux :-)
 
985
 
 
986
    - Fixed a memory leak in the CFF font driver.
 
987
 
 
988
    - Fixed a memory leak in the PCF font driver.
 
989
 
 
990
    - Fixed       the        Visual       C++       project       file
 
991
      "builds/win32/visualc/freetype.dsp" since  it didn't include the
 
992
      Postscript hinter component, causing errors at build time.
 
993
 
 
994
    - Fixed a  small rendering bug  in the anti-aliased  renderer that
 
995
      only  occurred when  trying to  draw  thin (less  than 1  pixel)
 
996
      strokes.
 
997
 
 
998
    - Fixed  "builds/unix/freetype2.a4" which  is used  to  generate a
 
999
      valid "freetype2.m4" for use with autoconf.
 
1000
 
 
1001
    - Fixed the OpenVMS Makefiles.
 
1002
 
 
1003
 
 
1004
  II. MISCELLANEOUS
 
1005
 
 
1006
    - Added  "configure"  and   "install"  scripts  to  the  top-level
 
1007
      directory.  A GNU-style installation is thus now easily possible
 
1008
      with
 
1009
 
 
1010
        ./configure  <options>
 
1011
        make
 
1012
        make install
 
1013
 
 
1014
 
 
1015
======================================================================
 
1016
 
 
1017
LATEST CHANGES BETWEEN 2.0.6 and 2.0.5
 
1018
 
 
1019
  I. IMPORTANT BUG FIXES
 
1020
 
 
1021
    - It wasn't possible to load embedded bitmaps when the auto-hinter
 
1022
      was used.  This is now fixed.
 
1023
 
 
1024
    - The TrueType  font driver  didn't load some  composites properly
 
1025
      (the  sub-glyphs  were  slightly  shifted,  and  this  was  only
 
1026
      noticeable when using monochrome rendering).
 
1027
 
 
1028
    - Various  fixes  to the  auto-hinter.   They  merely improve  the
 
1029
      output of sans-serif fonts.   Note that there are still problems
 
1030
      with serifed fonts and composites (accented characters).
 
1031
 
 
1032
    - All scalable  font drivers erroneously  returned un-fitted glyph
 
1033
      advances when hinting was  requested.  This created problems for
 
1034
      a number  of layout applications.  This  is a very  old bug that
 
1035
      got  undetected mainly  because most  test/demo  program perform
 
1036
      rounding explicitly or implicitly (through the cache).
 
1037
 
 
1038
    - FT_Glyph_To_Bitmap() did erroneously  modify the source glyph in
 
1039
      certain cases.
 
1040
 
 
1041
    - "glnames.py"  still contained  a bug  that made  FreeType return
 
1042
      invalid names for certain glyphs.
 
1043
 
 
1044
    - The  library crashed  when  loading certain  Type  1 fonts  like
 
1045
      "sadn.pfb"  ("Stalingrad  Normal"),   which  appear  to  contain
 
1046
      pathetic font info dictionaries.
 
1047
 
 
1048
    - The TrueType glyph  loader is now much more  paranoid and checks
 
1049
      everything when loading a given glyph image.  This was necessary
 
1050
      to avoid problems (crashes and/or memory overwrites) with broken
 
1051
      fonts that came from a really buggy automatic font converter.
 
1052
 
 
1053
 
 
1054
  II. IMPORTANT UPDATES AND NEW FEATURES
 
1055
 
 
1056
    - Important updates to the Mac-specific parts of the library.
 
1057
 
 
1058
    - The caching sub-system has  been completely re-designed, and its
 
1059
      API has  evolved (the old  one is still supported  for backwards
 
1060
      compatibility).
 
1061
 
 
1062
      The documentation for it is  not yet completed, sorry.  For now,
 
1063
      you are encouraged to continue  using the old API.  However, the
 
1064
      ftview  demo program in  the ft2demos  package has  already been
 
1065
      updated to use the new caching functions.
 
1066
 
 
1067
    - A new charmap cache is provided too.  See FTC_CMapCache().  This
 
1068
      is useful to perform  character code -> glyph index translations
 
1069
      quickly, without the need for an opened FT_Face.
 
1070
 
 
1071
    - A NEW POSTSCRIPT HINTER module  has been added to support native
 
1072
      hints in  the following  formats: PostScript Type  1, PostScript
 
1073
      CID, and CFF/CEF.
 
1074
 
 
1075
      Please test!  Note that  the auto-hinter produces better results
 
1076
      for a number of  badly-hinted fonts (mostly auto-generated ones)
 
1077
      though.
 
1078
 
 
1079
    - A memory debugger is now  part of the standard FreeType sources.
 
1080
      To      enable      it,      define      FT_DEBUG_MEMORY      in
 
1081
      <freetype/config/ftoption.h>, and recompile the library.
 
1082
 
 
1083
      Additionally, define  the _environment_ variable FT_DEBUG_MEMORY
 
1084
      and run any program using FreeType.  When the library is exited,
 
1085
      a  summary  of memory  footprints  and  possible  leaks will  be
 
1086
      displayed.
 
1087
 
 
1088
      This works transparently with  _any_ program that uses FreeType.
 
1089
      However, you  will need a lot  of memory to  use this (allocated
 
1090
      blocks are never  released to the heap to  detect double deletes
 
1091
      easily).
 
1092
 
 
1093
 
 
1094
  III. MISCELLANEOUS
 
1095
 
 
1096
    - We  are  aware  of  subtle  differences between  the  output  of
 
1097
      FreeType  versions   1  and  2  when  it   comes  to  monochrome
 
1098
      TrueType-hinted glyphs.   These are  most probably due  to small
 
1099
      differences in the monochrome rasterizers and will be worked out
 
1100
      in an upcoming release.
 
1101
 
 
1102
    - We have decided to fork the sources in a "stable" branch, and an
 
1103
      "unstable" one, since FreeType  is becoming a critical component
 
1104
      of many Unix systems.
 
1105
 
 
1106
      The next  bug-fix releases of  the library will be  named 2.0.7,
 
1107
      2.0.8, etc.,  while the "2.1"  branch will contain a  version of
 
1108
      the sources where we will start major reworking of the library's
 
1109
      internals, in order to produce FreeType 2.2.0 (or even 3.0) in a
 
1110
      more distant future.
 
1111
 
 
1112
      We  also hope  that this  scheme will  allow much  more frequent
 
1113
      releases than in the past.
 
1114
 
 
1115
 
 
1116
======================================================================
 
1117
 
 
1118
LATEST CHANGES BETWEEN 2.0.5 and 2.0.4
 
1119
 
 
1120
  NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER.  THIS MODULE
 
1121
  WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
 
1122
 
 
1123
  - Fixed a bug that made  certain glyphs, like "Cacute", "cacute" and
 
1124
    "lslash"  unavailable from Unicode  charmaps of  Postscript fonts.
 
1125
    This prevented the correct display of Polish text, for example.
 
1126
 
 
1127
  - The kerning table of Type 1 fonts was loaded by FreeType, when its
 
1128
    AFM    file    was    attached    to    its    face,    but    the
 
1129
    FT_FACE_FLAG_HAS_KERNING   bit  flags   was  not   set  correctly,
 
1130
    preventing FT_Get_Kerning to return meaningful values.
 
1131
 
 
1132
  - Improved  SFNT (TrueType  & OpenType)  charmap  support.  Slightly
 
1133
    better performance, as well as support for the new formats defined
 
1134
    by the OpenType 1.3 specification (8, 10, and 12)
 
1135
 
 
1136
  - Fixed a  serious typo in "src/base/ftcalc.c"  which caused invalid
 
1137
    computations in certain rare cases, producing ugly artefacts.
 
1138
 
 
1139
  - The  size  of the  EM  square is  computed  with  a more  accurate
 
1140
    algorithm for Postscript fonts.   The old one caused slight errors
 
1141
    with embedded fonts found in PDF documents.
 
1142
 
 
1143
  - Fixed  a  bug in  the  cache  manager  that prevented  normal  LRU
 
1144
    behaviour  within the cache  manager, causing  unnecessary reloads
 
1145
    (for FT_Face and FT_Size objects only).
 
1146
 
 
1147
  - Added  a new  function named  "FT_Get_Name_Index" to  retrieve the
 
1148
    glyph index of a given glyph name, when found in a face.
 
1149
 
 
1150
  - Added  a new function  named "FT_Get_Postscript_Name"  to retrieve
 
1151
    the "unique" Postscript font name of a given face.
 
1152
 
 
1153
  - Added   a   new   public   header  size   named   FT_SIZES_H   (or
 
1154
    <freetype/ftsizes.h>) providing  new FT_Size-management functions:
 
1155
    FT_New_Size, FT_Activate_Size, FT_Done_Size.
 
1156
 
 
1157
  - Fixed a  reallocation bug that  generated a dangling  pointer (and
 
1158
    possibly    memory    leaks)    with    Postscript    fonts    (in
 
1159
    src/psaux/psobjs.c).
 
1160
 
 
1161
  - Many fixes for 16-bit correctness.
 
1162
 
 
1163
  - Removed many pedantic compiler warnings from the sources.
 
1164
 
 
1165
  - Added an Amiga build directory in "builds/amiga".
 
1166
 
 
1167
 
 
1168
======================================================================
 
1169
 
 
1170
LATEST CHANGES BETWEEN 2.0.4 and 2.0.3
 
1171
 
 
1172
  - Fixed a rather annoying bug that was introduced in 2.0.3.  Namely,
 
1173
    the font  transformation set through  FT_Set_Transform was applied
 
1174
    twice to auto-hinted glyphs, resulting in incorrectly rotated text
 
1175
    output.
 
1176
 
 
1177
  - Fixed _many_  compiler warnings.   FT2 should now  compile cleanly
 
1178
    with Visual  C++'s most pedantic warning level  (/W4).  It already
 
1179
    compiled fine with GCC and a few other compilers.
 
1180
 
 
1181
  - Fixed a bug  that prevented the linear advance  width of composite
 
1182
    TrueType glyphs to be correctly returned.
 
1183
 
 
1184
  - Fixed    the    Visual    C++    project    files    located    in
 
1185
    "builds/win32/visualc" (previous versions  used older names of the
 
1186
    library).
 
1187
 
 
1188
  - Many  32-bit constants  have an  "L" appended  to their  value, in
 
1189
    order to improve the 16-bitness  of the code.  Someone is actually
 
1190
    trying to use FT2 on an Atari ST machine!
 
1191
 
 
1192
  - Updated  the  "builds/detect.mk" file  in  order to  automatically
 
1193
    build FT2  on AIX systems.   AIX uses "/usr/sbin/init"  instead of
 
1194
    "/sbin/init" and wasn't previously  detected as a Unix platform by
 
1195
    the FreeType build system.
 
1196
 
 
1197
  - Updated  the  Unix-specific  portions  of the  build  system  (new
 
1198
    libtool version, etc.).
 
1199
 
 
1200
  - The  SFNT kerning  lodaer now  ensures  that the  table is  sorted
 
1201
    (since some problem fonts do not meet this requirement).
 
1202
 
 
1203
 
 
1204
=======================================================================
 
1205
 
 
1206
LATEST CHANGES BETWEEN 2.0.3 and 2.0.2
 
1207
 
 
1208
  I. CHANGES TO THE MODULES / FONT DRIVERS
 
1209
 
 
1210
    - THE  AUTO-HINTER HAS  BEEN SLIGHTLY  IMPROVED, in  order  to fix
 
1211
      several annoying artefacts, mainly:
 
1212
 
 
1213
        - Blue  zone alignement of  horizontal stems  wasn't performed
 
1214
          correctly, resulting in artefacts  like the "d" being placed
 
1215
          one pixel below the "b" in some fonts like Time New Roman.
 
1216
 
 
1217
        - Overshoot thresholding  wasn't performed correctly, creating
 
1218
          unpleasant artefacts at large character pixel sizes.
 
1219
 
 
1220
        - Composite glyph loading has  been simplified.  This gets rid
 
1221
          of  various artefacts  where the  components of  a composite
 
1222
          glyphs were not correctly spaced.
 
1223
 
 
1224
      These are  the last changes to the  current auto-hinting module.
 
1225
      A new  hinting sub-system is currently  in the work  in order to
 
1226
      support native hints  in Type 1 / CFF /  OpenType fonts, as well
 
1227
      as globally improve rendering.
 
1228
 
 
1229
    - The  PCF  driver has  been  fixed.   It  reported invalid  glyph
 
1230
      dimensions for the fonts available on Solaris.
 
1231
 
 
1232
    - The Type  1, CID and CFF  drivers have been modified  to fix the
 
1233
      computation of the EM size.
 
1234
 
 
1235
    - The Type 1  driver has been fixed to avoid  a dangerous bug that
 
1236
      crashed the library with non-conforming fonts (i.e. ones that do
 
1237
      not place the .notdef glyph at position 0).
 
1238
 
 
1239
    - The TrueType  driver had a  rather subtle bug  (dangling pointer
 
1240
      when loading  composite glyphs) that could crash  the library in
 
1241
      rare occasions!
 
1242
 
 
1243
 
 
1244
  II. HIGH-LEVEL API CHANGES
 
1245
 
 
1246
    - The error  code enumeration values have been  changed.  An error
 
1247
      value  is decomposed  in  a  generic error  code,  and a  module
 
1248
      number.  see <freetype/fterrors.h> for details.
 
1249
 
 
1250
    - A   new  public   header   file  has   been  introduced,   named
 
1251
      FT_TRIGONOMETRY_H     (include/freetype/fttrig.h),     providing
 
1252
      trigonometric functions to  compute sines, cosines, arctangents,
 
1253
      etc. with 16.16 fixed precision.  The implementation is based on
 
1254
      the CORDIC  algorithm and is very fast  while being sufficiently
 
1255
      accurate.
 
1256
 
 
1257
 
 
1258
  III. INTERNALS
 
1259
 
 
1260
    - Added  BeOS-specific files  in the  old build  sub-system.  Note
 
1261
      that no changes were required to compile the library with Jam.
 
1262
 
 
1263
    - The  configuration  is now  capable  of automatically  detecting
 
1264
      64-bit integers  on a set  of predefined compilers  (GCC, Visual
 
1265
      C++, Borland C++) and will use them by default.  This provides a
 
1266
      small performance boost.
 
1267
 
 
1268
    - A  small memory leak  that happened  when opening  0-sized files
 
1269
      (duh!)  have been fixed.
 
1270
 
 
1271
    - Fixed bezier  stack depth  bug in the  routines provided  by the
 
1272
      FT_BBOX_H  header   file.   Also  fixed  similar   bugs  in  the
 
1273
      rasterizers.
 
1274
 
 
1275
    - The outline bounding  box code has been rewritten  to use direct
 
1276
      computations,  instead of  bezier sub-division,  to  compute the
 
1277
      exact bounding box of glyphs.   This is slightly slower but more
 
1278
      accurate.
 
1279
 
 
1280
    - The build system has been  improved and fixed, mainly to support
 
1281
      "make"  on Windows  2000  correctly, avoid  problems with  "make
 
1282
      distclean" on non Unix systems, etc.
 
1283
 
 
1284
    - Hexadecimal  constants  have been  suffixed  with  "U" to  avoid
 
1285
      problems with certain compilers on 64-bit platforms.
 
1286
 
 
1287
    - A new directory named "src/tools" has been created.  It contains
 
1288
      Python scripts and simple unit test programs used to develop the
 
1289
      library.
 
1290
 
 
1291
    - The DocMaker tool has been  moved from "docs" to "src/tools" and
 
1292
      has been updated with the following:
 
1293
 
 
1294
         - Now accepts the "--title=XXXX" or "-t XXXX" option from the
 
1295
           command line to set the project's name in the generated API
 
1296
           reference.
 
1297
 
 
1298
         - Now accepts the "--output=DIR"  or "-o DIR" option from the
 
1299
           command line to set  the output directory for all generated
 
1300
           HTML files.
 
1301
 
 
1302
         - Now accepts the "--prefix=XXXX" or "-p XXX" option from the
 
1303
           command  line  to  set  the  file prefix  to  use  for  all
 
1304
           generated HTML files.
 
1305
 
 
1306
         - Now generates the current  time/data on each generated page
 
1307
           in order to distinguish between versions.
 
1308
 
 
1309
      DocMaker  can be  used with  other  projects now,  not only  FT2
 
1310
      (e.g. MLib, FTLayout, etc.).
 
1311
 
 
1312
 
 
1313
======================================================================
 
1314
 
 
1315
LATEST CHANGES BETWEEN 2.0.2 and 2.0.1
 
1316
 
 
1317
  I. CHANGES TO THE MODULES / FONT DRIVERS
 
1318
 
 
1319
    - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
 
1320
      avoid legal problems  with the Apple patents.  It  seems that we
 
1321
      mistakenly  turned this option  on in  previous releases  of the
 
1322
      build.
 
1323
 
 
1324
      Note that if  you want to use the  bytecode interpreter in order
 
1325
      to get high-quality TrueType  rendering, you will need to toggle
 
1326
      by        hand        the        definition        of        the
 
1327
      TT_CONFIG_OPTION_BYTECODE_INTERPRETER   macro    in   the   file
 
1328
      "include/freetype/config/ftoption.h".
 
1329
 
 
1330
    - The CFF driver has been improved by Tom Kacvinsky and Sander van
 
1331
      der Wal:
 
1332
 
 
1333
      * Support for "seac" emulation.
 
1334
      * Support for "dotsection".
 
1335
      * Support for retrieving glyph names through
 
1336
        "FT_Get_Glyph_Name".
 
1337
 
 
1338
      The first two items are necessary to correctly a large number of
 
1339
      Type 1 fonts converted to the CFF formats by Adobe Acrobat.
 
1340
 
 
1341
    - The Type 1 driver was also improved by Tom & others:
 
1342
 
 
1343
      * Better EM size computation.
 
1344
      * Better support for synthetic (transformed) fonts.
 
1345
      * The  Type 1  driver returns  the charstrings  corresponding to
 
1346
        each glyph in the  "glyph->control_data" field after a call to
 
1347
        "FT_Load_Glyph" (thanks Ha Shao).
 
1348
 
 
1349
    - Various other bugfixes, including the following:
 
1350
 
 
1351
      * Fixed a nasty memory leak in the Type 1 driver.
 
1352
      * The autohinter  and the pcf  driver used static  writable data
 
1353
        when they shouldn't.
 
1354
      * Many casts were added to  make the code more 64-bits safe.  It
 
1355
        also now compiles on Windows XP 64-bits without warnings.
 
1356
      * Some incorrect writable statics were removed in the "autohint"
 
1357
        and "pcf" drivers.  FreeType 2 now compiles on Epoc again.
 
1358
 
 
1359
 
 
1360
  II. CHANGES TO THE HIGH-LEVEL API
 
1361
 
 
1362
    - The library header files inclusion scheme has been changed.  The
 
1363
      old scheme looked like:
 
1364
 
 
1365
        #include <freetype/freetype.h>
 
1366
        #include <freetype/ftglyph.h>
 
1367
        #include <freetype/ftcache.h>
 
1368
        #include <freetype/cache/ftimage.h>
 
1369
 
 
1370
      Now you should use:
 
1371
 
 
1372
        #include <ft2build.h>
 
1373
        #include FT_FREETYPE_H
 
1374
        #include FT_GLYPH_H
 
1375
        #include FT_CACHE_H
 
1376
        #include FT_CACHE_IMAGE_H
 
1377
 
 
1378
      NOTE THAT  THE OLD  INCLUSION SCHEME WILL  STILL WORK  WITH THIS
 
1379
      RELEASE.  HOWEVER, WE  DO NOT GUARANTEE THAT THIS  WILL STILL BE
 
1380
      TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1).
 
1381
 
 
1382
      The  file <ft2build.h>  is used  to define  the  header filename
 
1383
      macros.  The complete and  commented list of macros is available
 
1384
      in the API reference under the section name "Header File Macros"
 
1385
      in Chapter I.
 
1386
 
 
1387
      For more information, see section I of the following document:
 
1388
 
 
1389
        http://www.freetype.org/
 
1390
          freetype2/docs/tutorial/step1.html
 
1391
 
 
1392
      or
 
1393
 
 
1394
        http://freetype.sourceforge.net/
 
1395
          freetype2/docs/tutorial/step1.html
 
1396
 
 
1397
    - Many, many comments have been added to the public source file in
 
1398
      order to  automatically generate  the API Reference  through the
 
1399
      "docmaker.py" Python script.
 
1400
 
 
1401
      The latter has been updated  to support the grouping of sections
 
1402
      in chapters and better index sort.  See:
 
1403
 
 
1404
        http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
 
1405
 
 
1406
 
 
1407
  III. CHANGES TO THE BUILD PROCESS
 
1408
 
 
1409
    - If you  are not  building FreeType 2  with its own  build system
 
1410
      (but with your own Makefiles or project files), you will need to
 
1411
      be  aware that  the  build  process has  changed  a little  bit.
 
1412
 
 
1413
      You don't  need to put the  "src" directory in  the include path
 
1414
      when  compiling  any FT2  component.   Instead,  simply put  the
 
1415
      component's directory in the current include path.
 
1416
 
 
1417
      So, if you were doing something like:
 
1418
 
 
1419
        cc -c -Iinclude -Isrc src/base/ftbase.c
 
1420
 
 
1421
      change the line to:
 
1422
 
 
1423
        cc -c -Iinclude -Isrc/base src/base/ftbase.c
 
1424
 
 
1425
      If you were doing something like:
 
1426
 
 
1427
        cd src/base
 
1428
        cc -c -I../../include -I.. ftbase.c
 
1429
 
 
1430
      change it to:
 
1431
 
 
1432
        cd src/base
 
1433
        cc -c -I../../include ftbase.c
 
1434
 
 
1435
 
 
1436
======================================================================
 
1437
 
 
1438
LATEST CHANGES BETWEEN 2.0.1 and 2.0
 
1439
 
 
1440
  2.0.1 introduces a few changes:
 
1441
 
 
1442
    - Fixed many bugs related to  the support of CFF / OpenType fonts.
 
1443
      These  formats are  now much  better supported  though  there is
 
1444
      still work planned to  deal with charset tables and PDF-embedded
 
1445
      CFF files that use the old "seac" command.
 
1446
 
 
1447
    - The  library could not  be compiled  in debug  mode with  a very
 
1448
      small  number   of  C  compilers   whose  pre-processors  didn't
 
1449
      implement the "##"  directive correctly (i.e. per se  the ANSI C
 
1450
      specification!)  An elegant fix was found.
 
1451
 
 
1452
    - Added  support for  the  free Borland  command-line C++  Builder
 
1453
      compiler.   Use "make  setup bcc32".   Also fixed  a  few source
 
1454
      lines that generated new warnings with BCC32.
 
1455
 
 
1456
    - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
 
1457
      a conic Bezier arc.
 
1458
 
 
1459
    - Updated the INSTALL file to add IDE compilation.
 
1460
 
 
1461
    - Other  minor bug  fixes,  from  invalid Type  1  style flags  to
 
1462
      correct   support   of  synthetic   (obliqued)   fonts  in   the
 
1463
      auto-hinter, better support for embedded bitmaps in a SFNT font.
 
1464
 
 
1465
    - Fixed some problems with "freetype-config".
 
1466
 
 
1467
  Finally, the "standard" scheme for including FreeType headers is now
 
1468
  gradually changing,  but this will  be explained in a  later release
 
1469
  (probably 2.0.2).
 
1470
 
 
1471
  And very  special thanks to Tom Kacvinsky  and YAMANO-UCHI Hidetoshi
 
1472
  for their contributions!
 
1473
 
 
1474
 
 
1475
======================================================================
 
1476
 
 
1477
CHANGES BETWEEN beta8 and 2.0
 
1478
 
 
1479
  - Changed  the default  installation  path for  public headers  from
 
1480
    "include/freetype" to "include/freetype2".
 
1481
 
 
1482
    Also added a new "freetype-config" that is automatically generated
 
1483
    and installed  on Unix and  Cygwin systems.  The script  itself is
 
1484
    used to retrieve the current  install path, C compilation flags as
 
1485
    well as linker flags.
 
1486
 
 
1487
  - Fixed several small bugs:
 
1488
 
 
1489
    * Incorrect max advance width for fixed-pitch Type 1 fonts.
 
1490
    * Incorrect glyph names for certain TrueType fonts.
 
1491
    * The  glyph advance  was not  copied when  FT_Glyph_To_Bitmap was
 
1492
      called.
 
1493
    * The  linearHoriAdvance  and  linerVertAdvance  fields  were  not
 
1494
      correctly returned for glyphs processed by the auto-hinter.
 
1495
    * "type1z"  renamed back to  "type1"; the  old "type1"  module has
 
1496
      been removed.
 
1497
 
 
1498
  - Revamped the  build system  to make it  a lot more  generic.  This
 
1499
    will  allow us  to  re-use  nearly un-modified  in  lots of  other
 
1500
    projects (including FreeType Layout).
 
1501
 
 
1502
  - Changed "cid" to use "psaux" too.
 
1503
 
 
1504
  - Added the  cache sub-system.  See <freetype/ftcache.h>  as well as
 
1505
    the sources  in "src/cache".  Note  that it compiles but  is still
 
1506
    untested for now.
 
1507
 
 
1508
  - Updated "docs/docmaker.py", a draft  API reference is available at
 
1509
    http://www.freetype.org/ft2api.html.
 
1510
 
 
1511
  - Changed "type1" to use "psaux".
 
1512
 
 
1513
  - Created a  new module named  "psaux" to hold  the Type 1 &  Type 2
 
1514
    parsing routines.  It should be  used by "type1", "cid", and "cff"
 
1515
    in the future.
 
1516
 
 
1517
  - Fixed an important bug in "FT_Glyph_Get_CBox".
 
1518
 
 
1519
  - Fixed  some compiler  warnings  that happened  since the  TrueType
 
1520
    bytecode decoder was deactivated by default.
 
1521
 
 
1522
  - Fixed two memory leaks:
 
1523
 
 
1524
    * The    memory   manager   (16    bytes)   isn't    released   in
 
1525
      FT_Done_FreeType!
 
1526
    * Using custom input streams, the  copy of the original stream was
 
1527
      never released.
 
1528
 
 
1529
  - Fixed the  auto-hinter by performing automatic  computation of the
 
1530
    "filling direction" of each glyph.   This is done through a simple
 
1531
    and  fast approximation, and  seems to  work (problems  spotted by
 
1532
    Werner though).  The Arphic fonts are a lot nicer though there are
 
1533
    still a lot of things to do to handle Asian fonts correctly.
 
1534
 
 
1535
 
 
1536
======================================================================
 
1537
 
 
1538
BETA-8 (RELEASE CANDIDATE) CHANGES
 
1539
 
 
1540
  - Deactivated the TrueType bytecode interpreter by default.
 
1541
 
 
1542
  - Deactivated the "src/type1" font driver.  Now "src/type1z" is used
 
1543
    by default.
 
1544
 
 
1545
  - Updates to the build system.  We now compile the library correctly
 
1546
    under  Unix  system  through  "configure" which  is  automatically
 
1547
    called on the first "make" invocation.
 
1548
 
 
1549
  - Added the auto-hinting module!  Fixing some bugs here and there.
 
1550
 
 
1551
  - Found some bugs in the  composite loader (seac) of the Type1-based
 
1552
    font drivers.
 
1553
 
 
1554
  - Renamed the directory "freetype2/config" to "freetype2/builds" and
 
1555
    updated all relevant files.
 
1556
 
 
1557
  - Found a memory leak in the "type1" driver.
 
1558
 
 
1559
  - Incorporated Tom's patches to  support flex operators correctly in
 
1560
    OpenType/CFF fonts.  Now all I need is to support pure CFF and CEF
 
1561
    fonts to be done with this driver :-)
 
1562
 
 
1563
  - Added the  Windows FNT/FON driver in "src/winfonts".   For now, it
 
1564
    always  "simulates"   a  Unicode  charmap,  so   it  shouldn't  be
 
1565
    considered completed right now.
 
1566
 
 
1567
    It  is there  to be  more a  proof of  concept than  anything else
 
1568
    anyway.  The driver is a single  C source file, that compiles to 3
 
1569
    Kb of code.
 
1570
 
 
1571
    I'm  still working on  the PCF/BDF  drivers, but  I'm too  lazy to
 
1572
    finish them now.
 
1573
 
 
1574
  - CHANGES TO THE HIGH-LEVEL API
 
1575
 
 
1576
    * FT_Get_Kerning has a new parameter that allows you to select the
 
1577
      coordinates of the kerning  vector (font units, scaled, scaled +
 
1578
      grid-fitted).
 
1579
    * The  outline functions are  now in <freetype/ftoutln.h>  and not
 
1580
      part of <freetype/freetype.h> anymore.
 
1581
    * <freetype/ftmodule.h>    now     contains    declarations    for
 
1582
       FT_New_Library, FT_Done_Library, FT_Add_Default_Modules.
 
1583
    * The so-called convenience  functions have moved from "ftoutln.c"
 
1584
      to  "ftglyph.c",  and  are  thus available  with  this  optional
 
1585
      component    of   the   library.     They   are    declared   in
 
1586
      <freetype/ftglyph.h> now.
 
1587
    * Anti-aliased  rendering is now  the default  for FT_Render_Glyph
 
1588
      (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
 
1589
      To generate a monochrome bitmap, use ft_render_mode_mono, or the
 
1590
      FT_LOAD_MONOCHROME     flag    in    FT_Load_Glyph/FT_Load_Char.
 
1591
      FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
 
1592
    * <freetype/freetype.h>  now include <freetype/config/ftconfig.h>,
 
1593
      solving a few headaches :-)
 
1594
    * The type FT_GlyphSlotRec has now a "library" field.
 
1595
 
 
1596
  - CHANGES TO THE "ftglyph.h" API
 
1597
 
 
1598
    This API has  been severely modified in order  to make it simpler,
 
1599
    clearer, and more  efficient.  It certainly now looks  like a real
 
1600
    "glyph factory"  object, and allows client  applications to manage
 
1601
    (i.e.  transform,  bbox  and  render) glyph  images  without  ever
 
1602
    knowing their original format.
 
1603
 
 
1604
  - Added  support  for CID-keyed  fonts  to  the  CFF driver.   Maybe
 
1605
    support for pure CFF + CEF fonts should come in?
 
1606
 
 
1607
  - Cleaned up  source code in order  to avoid two  functions with the
 
1608
    same name.  Also  changed the names of the  files in "type1z" from
 
1609
    "t1XXXX" to "z1XXXX" in order to avoid any conflicts.
 
1610
 
 
1611
    "make multi" now works well :-)
 
1612
 
 
1613
    Also removed the use of "cidafm" for now, even if the source files
 
1614
    are  still there.  This  functionality will  certainly  go into  a
 
1615
    specific module.
 
1616
 
 
1617
  - ADDED SUPPORT FOR THE AUTO-HINTER
 
1618
 
 
1619
    It  works :-) I  have a  demo program  which simply  is a  copy of
 
1620
    "ftview"       that      does       a      `FT_Add_Module(library,
 
1621
    &autohinter_module_class)' after  library initialization, and Type
 
1622
    1 & OpenType/CFF fonts are now hinted.
 
1623
 
 
1624
    CID  fonts are  not hinted,  as they  include no  charmap  and the
 
1625
    auto-hinter doesn't include  "generic" global metrics computations
 
1626
    yet.
 
1627
 
 
1628
    Now, I need to release this thing to the FreeType 2 source.
 
1629
 
 
1630
  - CHANGES TO THE RENDERER MODULES
 
1631
 
 
1632
    The  monochrome  and smooth  renderers  are  now  in two  distinct
 
1633
    directories, namely "src/raster1" and "src/smooth".  Note that the
 
1634
    old "src/renderer" is now gone.
 
1635
 
 
1636
    I ditched  the 5-gray-levels renderers.  Basically,  it involved a
 
1637
    simple #define toggle in 'src/raster1/ftraster.c'.
 
1638
 
 
1639
    FT_Render_Glyph,  FT_Outline_Render  &  FT_Outline_Get_Bitmap  now
 
1640
    select the best renderer  available, depending on render mode.  If
 
1641
    the current renderer for a  given glyph image format isn't capable
 
1642
    of supporting  the render mode, another  one will be  found in the
 
1643
    library's list.   This means that client applications  do not need
 
1644
    to  switch or  set  the  renderers themselves  (as  in the  latest
 
1645
    change), they'll get what they want automatically.  At last.
 
1646
 
 
1647
    Changed the demo programs accordingly.
 
1648
 
 
1649
  - MAJOR INTERNAL REDESIGN:
 
1650
 
 
1651
    A lot of internal modifications  have been performed lately on the
 
1652
    source in order to provide the following enhancements:
 
1653
 
 
1654
    * More generic module support:
 
1655
 
 
1656
      The FT_Module  type is  now defined to  represent a handle  to a
 
1657
      given  module.   The  file  <freetype/ftmodule.h>  contains  the
 
1658
      FT_Module_Class definition, as well as the module-loading public
 
1659
      API.
 
1660
 
 
1661
      The  FT_Driver type  is still  defined, and  still  represents a
 
1662
      pointer to  a font driver.  Note that  FT_Add_Driver is replaced
 
1663
      by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc.
 
1664
 
 
1665
    * Support for generic glyph image types:
 
1666
 
 
1667
      The FT_Renderer  type is a pointer  to a module  used to perform
 
1668
      various operations on glyph image.
 
1669
 
 
1670
      Each renderer is  capable of handling images in  a single format
 
1671
      (e.g. ft_glyph_format_outline).  Its functions are used to:
 
1672
 
 
1673
      - transform an glyph image
 
1674
      - render a glyph image into a bitmap
 
1675
      - return the control box (dimensions) of a given glyph image
 
1676
 
 
1677
      The scan converters "ftraster.c" and "ftgrays.c" have been moved
 
1678
      to the new directory "src/renderer", and are used to provide two
 
1679
      default renderer modules.
 
1680
 
 
1681
      One corresponds  to the "standard" scan-converter,  the other to
 
1682
      the "smooth" one.
 
1683
 
 
1684
      he  current  renderer  can  be  set  through  the  new  function
 
1685
      FT_Set_Renderer.
 
1686
 
 
1687
      The old raster-related function FT_Set_Raster, FT_Get_Raster and
 
1688
      FT_Set_Raster_Mode have now disappeared, in favor of the new:
 
1689
 
 
1690
        FT_Get_Renderer
 
1691
        FT_Set_Renderer
 
1692
 
 
1693
      See the file <freetype/ftrender.h> for more details.
 
1694
 
 
1695
      These  changes  were  necessary  to properly  support  different
 
1696
      scalable formats in the future, like bi-color glyphs, etc.
 
1697
 
 
1698
    * Glyph loader object:
 
1699
 
 
1700
      A  new  internal  object,  called  a  'glyph  loader'  has  been
 
1701
      introduced in the base layer.  It is used by all scalable format
 
1702
      font drivers to load glyphs and composites.
 
1703
 
 
1704
      This object  has been  created to reduce  the code size  of each
 
1705
      driver,  as  each  one  of  them  basically  re-implemented  its
 
1706
      functionality.
 
1707
 
 
1708
      See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
 
1709
      more information.
 
1710
 
 
1711
    * FT_GlyphSlot has new fields:
 
1712
 
 
1713
      In  order   to  support  extended  features   (see  below),  the
 
1714
      FT_GlyphSlot structure has a few new fields:
 
1715
 
 
1716
      linearHoriAdvance:
 
1717
 
 
1718
        This  field  gives  the   linearly  scaled  (i.e.  scaled  but
 
1719
        unhinted) advance  width for the  glyph, expressed as  a 16.16
 
1720
        fixed pixel value.  This is useful to perform WYSIWYG text.
 
1721
 
 
1722
      linearVertAdvance:
 
1723
        This field  gives the linearly  scaled advance height  for the
 
1724
        glyph  (relevant in  vertical  glyph layouts  only).  This  is
 
1725
        useful to perform WYSIWYG text.
 
1726
 
 
1727
        Note that  the two above field replace  the removed "metrics2"
 
1728
        field in the glyph slot.
 
1729
 
 
1730
      advance:
 
1731
        This field is a vector  that gives the transformed advance for
 
1732
        the glyph.   By default, it corresponds to  the advance width,
 
1733
        unless  FT_LOAD_VERTICAL_LAYOUT  was  specified  when  calling
 
1734
        FT_Load_Glyph or FT_Load_Char.
 
1735
 
 
1736
      bitmap_left:
 
1737
        This  field gives  the  distance in  integer  pixels from  the
 
1738
        current pen position  to the left-most pixel of  a glyph image
 
1739
        IF IT IS  A BITMAP.  It is only valid  when the "format" field
 
1740
        is set to "ft_glyph_format_bitmap", for example, after calling
 
1741
        the new function FT_Render_Glyph.
 
1742
 
 
1743
      bitmap_top:
 
1744
        This  field gives  the  distance in  integer  pixels from  the
 
1745
        current pen position (located on the baseline) to the top-most
 
1746
        pixel of the  glyph image IF IT IS  A BITMAP.  Positive values
 
1747
        correspond to upwards Y.
 
1748
 
 
1749
      loader:
 
1750
        This  is a  new  private  field for  the  glyph slot.   Client
 
1751
        applications should not touch it.
 
1752
 
 
1753
 
 
1754
    * Support for transforms and direct rendering in FT_Load_Glyph:
 
1755
 
 
1756
      Most of the functionality found in <freetype/ftglyph.h> has been
 
1757
      moved to the core library.  Hence, the following:
 
1758
 
 
1759
      - A   transform   can   be   specified  for   a   face   through
 
1760
        FT_Set_Transform.  this transform  is applied by FT_Load_Glyph
 
1761
        to  scalable glyph  images (i.e.  NOT TO  BITMAPS)  before the
 
1762
        function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM
 
1763
        was set in the load flags.
 
1764
 
 
1765
      - Once  a  glyph image  has  been  loaded,  it can  be  directly
 
1766
        converted  to  a  bitmap  by  using  the  new  FT_Render_Glyph
 
1767
        function.  Note that this  function takes the glyph image from
 
1768
        the glyph slot,  and converts it to a  bitmap whose properties
 
1769
        are returned  in "face.glyph.bitmap", "face.glyph.bitmap_left"
 
1770
        and "face.glyph.bitmap_top".  The  original native image might
 
1771
        be lost after the conversion.
 
1772
 
 
1773
      - When using the new  bit flag FT_LOAD_RENDER, the FT_Load_Glyph
 
1774
        and   FT_Load_Char   functions   will   call   FT_Render_Glyph
 
1775
        automatically when needed.
 
1776
 
 
1777
  - Reformatted all  modules source  code in order  to get rid  of the
 
1778
    basic data types redifinitions (i.e. "TT_Int" instead of "FT_Int",
 
1779
    "T1_Fixed"  instead  of  "FT_Fixed").  Hence  the  format-specific
 
1780
    prefixes like  "TT_", "T1_",  "T2_" and "CID_"  are only  used for
 
1781
    relevant structures.
 
1782
 
 
1783
 
 
1784
======================================================================
 
1785
 
 
1786
OLD CHANGES FOR BETA 7
 
1787
 
 
1788
  - bug-fixed the  OpenType/CFF parser.  It  now loads and displays my
 
1789
    two  fonts nicely,  but I'm  pretty certain  that more  testing is
 
1790
    needed :-)
 
1791
 
 
1792
  - fixed the crummy Type 1 hinter, it now handles accented characters
 
1793
    correctly (well, the accent is  not always well placed, but that's
 
1794
    another problem..)
 
1795
 
 
1796
  - added the CID-keyed Type 1 driver in "src/cid".  Works pretty well
 
1797
    for only 13 Kb of code  ;-) Doesn't read AFM files though, nor the
 
1798
    really useful CMAP files..
 
1799
 
 
1800
  - fixed  two  bugs  in  the  smooth  renderer  (src/base/ftgrays.c).
 
1801
    Thanks to Boris Letocha for spotting them and providing a fix.
 
1802
 
 
1803
  - fixed potential "divide by zero" bugs in ftcalc.c.
 
1804
 
 
1805
  - added source  code for  the OpenType/CFF driver  (still incomplete
 
1806
    though..)
 
1807
 
 
1808
  - modified the  SFNT driver slightly  to perform more  robust header
 
1809
    checks  in TT_Load_SFNT_Header.  This prevents certain  font files
 
1810
    (e.g.  some  Type  1  Multiple  Masters)  from  being  incorrectly
 
1811
    "recognized" as TrueType font files..
 
1812
 
 
1813
  - moved a lot of stuff from  the TrueType driver to the SFNT module,
 
1814
    this   allows   greater   code   re-use   between   font   drivers
 
1815
    (e.g. TrueType, OpenType, Compact-TrueType, etc..)
 
1816
 
 
1817
  - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
 
1818
    to minimally speed it up..
 
1819
 
 
1820
  - added  support for  Multiple Master  fonts in  "type1z".  There is
 
1821
    also a new file named <freetype/ftmm.h> which defines functions to
 
1822
    manage them from client applications.
 
1823
 
 
1824
    The new file "src/base/ftmm.c" is also optional to the engine..
 
1825
 
 
1826
  - various  formatting changes (e.g.  EXPORT_DEF ->  FT_EXPORT_DEF) +
 
1827
    small bug fixes in FT_Load_Glyph, the "type1" driver, etc..
 
1828
 
 
1829
  - a minor fix to the Type 1 driver to let them apply the font matrix
 
1830
    correctly (used for many oblique fonts..)
 
1831
 
 
1832
  - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
 
1833
    to use %p instead of %lx).  Thanks to Karl Robillard.
 
1834
 
 
1835
  - fixed  some bugs  in  the sbit  loader (src/base/sfnt/ttsbit.c)  +
 
1836
    added  a new flag,  FT_LOAD_CROP_BITMAP to  query that  bitmaps be
 
1837
    cropped when  loaded from a file  (maybe I should  move the bitmap
 
1838
    cropper to the base layer ??).
 
1839
 
 
1840
  - changed the default  number of gray levels of  the smooth renderer
 
1841
    to 256  (instead of  the previous 128).  Of course, the  human eye
 
1842
    can't see any difference ;-)
 
1843
 
 
1844
  - removed TT_MAX_SUBGLYPHS,  there is no static limit  on the number
 
1845
    of subglyphs in a TrueType font now..
 
1846
 
 
1847
 
 
1848
======================================================================
 
1849
 
 
1850
OLD CHANGES 16 May 2000
 
1851
 
 
1852
  - tagged "BETA-6"  in the  CVS tree.  This one is a  serious release
 
1853
    candidate even though it doesn't incorporate the auto-hinter yet..
 
1854
 
 
1855
  - various obsolete files were removed, and copyright header updated
 
1856
 
 
1857
  - finally  updated  the  standard   raster  to  fix  the  monochrome
 
1858
    rendering bug + re-enable  support for 5-gray levels anti-aliasing
 
1859
    (suck, suck..)
 
1860
 
 
1861
  - created new header files, and modified sources accordingly:
 
1862
 
 
1863
     <freetype/fttypes.h>
 
1864
       - simple FreeType types, without the API
 
1865
     <freetype/internal/ftmemory.h>
 
1866
       - definition of memory-management macros
 
1867
 
 
1868
  - added   the   "DSIG"   (OpenType   Digital   Signature)   tag   to
 
1869
    <freetype/tttags.h>
 
1870
 
 
1871
  - light update/cleaning of the build system + changes to the sources
 
1872
    in  order  to  get  rid  of _all_  compiler  warnings  with  three
 
1873
    compilers, i.e:
 
1874
 
 
1875
    gcc with "-ansi -pedantic -Wall -W", Visual C++ with "/W3 /WX" and
 
1876
    LCC
 
1877
 
 
1878
    IMPORTANT NOTE FOR WIN32-LCC USERS:
 
1879
    |
 
1880
    |  It seems the C pre-processor  that comes with LCC is broken, it
 
1881
    |  doesn't  recognize  the  ANSI  standard  directives  #  and  ##
 
1882
    |  correctly   when  one  of   the  argument  is  a  macro.  Also,
 
1883
    |  something like:
 
1884
    |
 
1885
    |     #define F(x)  print##x
 
1886
    |
 
1887
    |     F(("hello"))
 
1888
    |
 
1889
    |  will get incorrectly translated to:
 
1890
    |
 
1891
    |     print "hello")
 
1892
    |
 
1893
    |  by its pre-processor.  For this reason, you simply cannot build
 
1894
    |  FreeType 2 in debug mode with this compiler..
 
1895
 
 
1896
  - yet  another massive grunt work.  I've  changed the  definition of
 
1897
    the EXPORT_DEF,  EXPORT_FUNC, BASE_DEF &  BASE_FUNC macros.  These
 
1898
    now take an argument, which is the function's return value type.
 
1899
 
 
1900
    This  is necessary to  compile FreeType  as a  DLL on  Windows and
 
1901
    OS/2.  Depending on the compiler used, a compiler-specific keyword
 
1902
    like  __export or __system  must be  placed before  (VisualC++) or
 
1903
    after (BorlandC++) the type..
 
1904
 
 
1905
    Of course, this needed a lot of changes throughout the source code
 
1906
    to make it compile again...  All cleaned up now, apparently..
 
1907
 
 
1908
    Note also  that there is a  new EXPORT_VAR macro  defined to allow
 
1909
    the   _declaration_    of   an   exportable    public   (constant)
 
1910
    variable.  This  is  the   case  of  the  raster  interfaces  (see
 
1911
    ftraster.h and ftgrays.h), as well as each module's interface (see
 
1912
    sfdriver.h, psdriver.h, etc..)
 
1913
 
 
1914
  - new feature: it  is now possible to pass  extra parameters to font
 
1915
                 drivers  when creating  a new  face object.  For now,
 
1916
                 this capability is unused.  It could however prove to
 
1917
                 be useful in a near future..
 
1918
 
 
1919
      the FT_Open_Args structure was  changes, as well as the internal
 
1920
      driver interface  (the specific "init_face"  module function has
 
1921
      now a different signature).
 
1922
 
 
1923
  - updated the tutorial (not finished though).
 
1924
 
 
1925
  - updated the top-level BUILD  document
 
1926
 
 
1927
  - fixed  a  potential memory  leak  that  could  occur when  loading
 
1928
    embedded bitmaps.
 
1929
 
 
1930
  - added     the     declaration     of     FT_New_Memory_Face     in
 
1931
    <freetype/freetype.h>, as  it was  missing from the  public header
 
1932
    (the implementation was already in "ftobjs.c").
 
1933
 
 
1934
  - the file <freetype/fterrors.h> has been seriously updated in order
 
1935
    to allow  the automatic generation  of error message tables.   See
 
1936
    the comments within it for more information.
 
1937
 
 
1938
  - major directory  hierarchy re-organisation.  This was done for two
 
1939
    things:
 
1940
 
 
1941
      * first,  to ease  the "manual"  compilation of  the  library by
 
1942
        requiring at lot less include paths :-)
 
1943
 
 
1944
      * second,  to  allow  external  programs to  effectively  access
 
1945
        internal  data  fields.  For example,  this  can be  extremely
 
1946
        useful if  someone wants  to write a  font producer or  a font
 
1947
        manager on top of FreeType.
 
1948
 
 
1949
    Basically, you  should now use  the 'freetype/' prefix  for header
 
1950
    inclusion, as in:
 
1951
 
 
1952
        #include <freetype/freetype.h>
 
1953
        #include <freetype/ftglyph.h>
 
1954
 
 
1955
    Some new include sub-directories are available:
 
1956
 
 
1957
     a. the  "freetype/config" directory,  contains two files  used to
 
1958
        configure  the  build  of  the  library.  Client  applications
 
1959
        should  not need  to look  at these  normally, but they can if
 
1960
        they want.
 
1961
 
 
1962
        #include <freetype/config/ftoption.h>
 
1963
        #include <freetype/config/ftconfig.h>
 
1964
 
 
1965
     b. the "freetype/internal"  directory, contains header files that
 
1966
        describes library  internals.  These are the header files that
 
1967
        were  previously  found  in  the "src/base"  and  "src/shared"
 
1968
        directories.
 
1969
 
 
1970
 
 
1971
    As  usual, the build  system and  the demos  have been  updated to
 
1972
    reflect the change..
 
1973
 
 
1974
    Here's a layout of the new directory hierarchy:
 
1975
 
 
1976
    TOP_DIR
 
1977
      include/
 
1978
         freetype/
 
1979
            freetype.h
 
1980
            ...
 
1981
            config/
 
1982
              ftoption.h
 
1983
              ftconfig.h
 
1984
              ftmodule.h
 
1985
 
 
1986
            internal/
 
1987
              ftobjs.h
 
1988
              ftstream.h
 
1989
              ftcalc.h
 
1990
              ...
 
1991
 
 
1992
      src/
 
1993
         base/
 
1994
            ...
 
1995
 
 
1996
         sfnt/
 
1997
         psnames/
 
1998
         truetype/
 
1999
         type1/
 
2000
         type1z/
 
2001
 
 
2002
 
 
2003
    Compiling a module is now  much easier, for example, the following
 
2004
    should work when in the TOP_DIR directory on an ANSI build:
 
2005
 
 
2006
       gcc -c -I./include -I./src/base src/base/ftbase.c
 
2007
       gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
 
2008
       etc..
 
2009
 
 
2010
    (of course, using -Iconfig/<system> if you provide system-specific
 
2011
     configuration files).
 
2012
 
 
2013
  - updated the structure of FT_Outline_Funcs in order to allow direct
 
2014
    coordinate scaling within  the outline decomposition routine (this
 
2015
    is  important for virtual  "on" points  with TrueType  outlines) +
 
2016
    updates to the rasters to support this..
 
2017
 
 
2018
  - updated  the OS/2  table  loading code  in "src/sfnt/ttload.c"  in
 
2019
    order to support version 2 of the table (see OpenType 1.2 spec)
 
2020
 
 
2021
  - created  "include/tttables.h"  and  "include/t1tables.h" to  allow
 
2022
    client applications to access some of  the SFNT and T1 tables of a
 
2023
    face  with  a  procedural  interface (see  FT_Get_Sfnt_Table())  +
 
2024
    updates to internal source files to reflect the change..
 
2025
 
 
2026
  - some  cleanups in  the source  code to  get rid  of  warnings when
 
2027
    compiling with the "-Wall -W -ansi -pedantic" options in gcc.
 
2028
 
 
2029
  - debugged and moved the smooth renderer to "src/base/ftgrays.c" and
 
2030
    its header to "include/ftgrays.h"
 
2031
 
 
2032
  - updated TT_MAX_SUBGLYPHS  to 96 as some CJK  fonts have composites
 
2033
    with up to 80 sub-glyphs !! Thanks to Werner
 
2034
 
 
2035
 
 
2036
======================================================================
 
2037
 
 
2038
OLD CHANGES - 14-apr-2000
 
2039
 
 
2040
  - fixed  a bug  in  the  TrueType glyph  loader  that prevented  the
 
2041
    correct loading of some CJK glyphs in mingli.ttf
 
2042
 
 
2043
  - improved the standard Type 1 hinter in "src/type1"
 
2044
 
 
2045
  - fixed two bugs  in the experimental Type 1  driver in "src/type1z"
 
2046
    to handle the new XFree86 4.0 fonts (and a few other ones..)
 
2047
 
 
2048
  - the smooth  renderer is now  complete and supports  sub-banding to
 
2049
    render large glyphs  at high speed.  However, it is still  located
 
2050
    in "demos/src/ftgrays.c" and should move to the  library itself in
 
2051
    the next  beta.  NOTE: The  smooth  renderer  doesn't  compile  in
 
2052
    stand-alone mode anymore, but this should be fixed RSN..
 
2053
 
 
2054
  - introduced convenience  functions to  more easily deal  with glyph
 
2055
    images, see  "include/ftglyph.h" for more details, as  well as the
 
2056
    new  demo program  named "demos/src/ftstring.c"  that demonstrates
 
2057
    its use
 
2058
 
 
2059
  - implemented  FT_LOAD_NO_RECURSE in  both the  TrueType and  Type 1
 
2060
    drivers  (this  is required  by  the  auto-hinter  to improve  its
 
2061
    results).
 
2062
 
 
2063
  - changed   the  raster   interface,  in   order  to   allow  client
 
2064
    applications  to   provide  their   own  span-drawing   callbacks.
 
2065
    However,   only   the   smooth   renderer   supports   this.   See
 
2066
    "FT_Raster_Params" in the file "include/ftimage.h".
 
2067
 
 
2068
  - fixed  a small bug  in FT_MulFix  that caused  incorrect transform
 
2069
    computation!
 
2070
 
 
2071
  - Note: The tutorial is out-of-date.
 
2072
 
 
2073
 
 
2074
======================================================================
 
2075
 
 
2076
OLD CHANGES - 12-mar-2000
 
2077
 
 
2078
  - changed  the  layout  of  configuration  files  :  now,  all  ANSI
 
2079
    configuration         files         are         located         in
 
2080
    "freetype2/config".  System-specific over-rides  can be  placed in
 
2081
    "freetype2/config/<system>".
 
2082
 
 
2083
  - moved all configuration macros to "config/ftoption.h"
 
2084
 
 
2085
  - improvements in the Type 1 driver with AFM support
 
2086
 
 
2087
  - changed the fields  in the FT_Outline structure :  the old "flags"
 
2088
    array is re-named "tags", while all ancient flags are encoded into
 
2089
    a single unsigned int named "flags".
 
2090
 
 
2091
  - introduced     new      flags     in     FT_Outline.flags     (see
 
2092
    ft_outline_.... enums in "ftimage.h").
 
2093
 
 
2094
  - changed outline functions to "FT_Outline_<action>" syntax
 
2095
 
 
2096
  - added a smooth anti-alias renderer to the demonstration programs
 
2097
 
 
2098
  - added Mac graphics driver (thanks Just)
 
2099
 
 
2100
  - FT_Open_Face  changed  in  order   to  received  a  pointer  to  a
 
2101
    FT_Open_Args descriptor..
 
2102
 
 
2103
  - various  cleanups,  a  few  more API  functions  implemented  (see
 
2104
    FT_Attach_File)
 
2105
 
 
2106
  - updated some docs
 
2107
 
 
2108
 
 
2109
======================================================================
 
2110
 
 
2111
OLD CHANGES - 22-feb-2000
 
2112
 
 
2113
  - introduced the "psnames" module.  It is used to:
 
2114
 
 
2115
      o convert  a Postscript glyph  name into the  equivalent Unicode
 
2116
        character code (used by the  Type 1 driver(s) to synthetize on
 
2117
        the fly a Unicode charmap).
 
2118
 
 
2119
      o provide an  interface to retrieve the Postscript  names of the
 
2120
        Macintosh,  Adobe  Standard &  Adobe  Expert character  codes.
 
2121
        (the Macintosh  names are  used by the  SFNT-module postscript
 
2122
        names support routines, while the other two tables are used by
 
2123
        the Type 1 driver(s)).
 
2124
 
 
2125
  - introduced the "type1z" alternate Type 1 driver.  This is a (still
 
2126
    experimental) driver  for the Type  1 format that  will ultimately
 
2127
    replace the one  in "src/type1".  It uses pattern matching to load
 
2128
    data from the font, instead of a finite  state analyzer.  It works
 
2129
    much better than the "old" driver with "broken" fonts.  It is also
 
2130
    much smaller (under 15 Kb).
 
2131
 
 
2132
  - the  Type 1  drivers (both  in "src/type1"  and  "src/type1z") are
 
2133
    nearly  complete.  They  both  provide automatic  Unicode  charmap
 
2134
    synthesis through  the "psnames" module.  No re-encoding vector is
 
2135
    needed.  (note  that they  still  leak  memory  due to  some  code
 
2136
    missing, and I'm getting lazy).
 
2137
 
 
2138
    Trivial AFM support has been added to read kerning information but
 
2139
    wasn't exactly tested as it should ;-)
 
2140
 
 
2141
  - The TrueType  glyph loader has  been seriously rewritten  (see the
 
2142
    file  "src/truetype/ttgload.c".  It is now  much, much  simpler as
 
2143
    well as  easier to read,  maintain and understand  :-) Preliminary
 
2144
    versions introduced a  memory leak that has been  reported by Jack
 
2145
    Davis, and is now fixed..
 
2146
 
 
2147
  - introduced  the new  "ft_glyph_format_plotter", used  to represent
 
2148
    stroked outlines  like Windows "Vector" fonts, and  certain Type 1
 
2149
    fonts  like "Hershey".  The corresponding  raster will  be written
 
2150
    soon.
 
2151
 
 
2152
  - FT_New_Memory_Face  is  gone.  Likewise,  FT_Open_Face has  a  new
 
2153
    interface that uses a structure  to describe the input stream, the
 
2154
    driver (if required), etc..
 
2155
 
 
2156
 
 
2157
TODO
 
2158
 
 
2159
  - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
 
2160
 
 
2161
  - Add a function like FT_Load_Character( face, char_code, load_flags
 
2162
    )  that  would really  embbed  a  call  to FT_Get_Char_Index  then
 
2163
    FT_Load_Glyph to ease developer's work.
 
2164
 
 
2165
  - Update the tutorial!
 
2166
 
 
2167
  - consider adding  support for Multiple  Master fonts in the  Type 1
 
2168
    drivers.
 
2169
 
 
2170
  - Test the AFM routines of the  Type 1 drivers to check that kerning
 
2171
    information is returned correctly.
 
2172
 
 
2173
  - write a decent auto-gridding component  !! We need this to release
 
2174
    FreeType 2.0 gold !
 
2175
 
 
2176
 
 
2177
less urgent needs:
 
2178
 
 
2179
  - add a CFF/Type2 driver
 
2180
  - add a BDF driver
 
2181
  - add a FNT/PCF/HBF driver
 
2182
  - add a Speedo driver from the X11 sources
 
2183
 
 
2184
 
 
2185
======================================================================
 
2186
 
 
2187
OLDER CHANGES - 27-jan-2000
 
2188
 
 
2189
  - updated the  "sfnt" module  interface to allow  several SFNT-based
 
2190
    drivers to co-exist peacefully
 
2191
 
 
2192
  - updated  the "T1_Face"  type  to better  separate Postscript  font
 
2193
    content  from the  rest of  the FT_Face  structure.  Might be used
 
2194
    later by the CFF/Type2 driver..
 
2195
 
 
2196
  - added an experimental replacement Type 1 driver featuring advanced
 
2197
    (and speedy) pattern matching to retrieve the data from postscript
 
2198
    fonts.
 
2199
 
 
2200
  - very minor  changes in the implementation  of FT_Set_Char_Size and
 
2201
    FT_Set_Pixel_Sizes (they now implement default to ligthen the font
 
2202
    driver's code).
 
2203
 
 
2204
 
 
2205
======================================================================
 
2206
 
 
2207
OLD MESSAGE
 
2208
 
 
2209
This file summarizes the changes that occured since the last "beta" of
 
2210
FreeType 2.  Because  the list is important, it  has been divided into
 
2211
separate sections:
 
2212
 
 
2213
Table Of Contents:
 
2214
 
 
2215
    I   High-Level Interface (easier !)
 
2216
   II   Directory Structure
 
2217
  III   Glyph Image Formats
 
2218
   IV   Build System
 
2219
    V   Portability
 
2220
   VI   Font Drivers
 
2221
 
 
2222
 
 
2223
----------------------------------------------------------------------
 
2224
 
 
2225
High-Level Interface:
 
2226
 
 
2227
  The high-level API has been considerably simplified.  Here is how:
 
2228
 
 
2229
    - resource objects have disappeared.  this means that face objects
 
2230
      can now be created with  a single function call (see FT_New_Face
 
2231
      and FT_Open_Face)
 
2232
 
 
2233
    - when calling  either FT_New_Face  & FT_Open_Face, a  size object
 
2234
      and a glyph slot object  are automatically created for the face,
 
2235
      and can  be accessed  through "face->glyph" and  "face->size" if
 
2236
      one really  needs to.   In most cases,  there's no need  to call
 
2237
      FT_New_Size or FT_New_Glyph.
 
2238
 
 
2239
    - similarly,  FT_Load_Glyph  now  only  takes  a  "face"  argument
 
2240
      (instead  of a  glyph  slot  and a  size).  Also, it's  "result"
 
2241
      parameter is  gone, as the glyph  image type is  returned in the
 
2242
      field "face->glyph.format"
 
2243
 
 
2244
    - the list  of available  charmaps is directly  accessible through
 
2245
      "face->charmaps", counting "face->num_charmaps"  elements.  Each
 
2246
      charmap  has an  'encoding'  field which  specifies which  known
 
2247
      encoding it deals with.  Valid values are, for example:
 
2248
 
 
2249
          ft_encoding_unicode      (for ASCII, Latin-1 and Unicode)
 
2250
          ft_encoding_apple_roman
 
2251
          ft_encoding_sjis
 
2252
          ft_encoding_adobe_standard
 
2253
          ft_encoding_adobe_expert
 
2254
 
 
2255
      other  values may  be added  in the  future.  Each charmap still
 
2256
      holds  its "platform_id"  and "encoding_id"  values in  case the
 
2257
      encoding is too exotic for the current library
 
2258
 
 
2259
 
 
2260
----------------------------------------------------------------------
 
2261
 
 
2262
Directory Structure:
 
2263
 
 
2264
  Should seem obvious to most of you:
 
2265
 
 
2266
     freetype/
 
2267
         config/        -- configuration sub-makefiles
 
2268
            ansi/
 
2269
            unix/       -- platform-specific configuration files
 
2270
            win32/
 
2271
            os2/
 
2272
            msdos/
 
2273
 
 
2274
         include/       -- public header  files, those to  be included
 
2275
                           directly by client apps
 
2276
 
 
2277
         src/           -- sources of the library
 
2278
           base/        -- the base layer
 
2279
           sfnt/        -- the sfnt "driver"  (see the drivers section
 
2280
                           below)
 
2281
           truetype/    -- the truetype driver
 
2282
           type1/       -- the type1 driver
 
2283
           shared/      -- some header files shared between drivers
 
2284
 
 
2285
         demos/         -- demos/tools
 
2286
 
 
2287
         docs/          -- documentation (a bit empty for now)
 
2288
 
 
2289
 
 
2290
----------------------------------------------------------------------
 
2291
 
 
2292
Glyph Image Formats:
 
2293
 
 
2294
  Drivers are now able to  register new glyph image formats within the
 
2295
  library.  For  now, the  base layer supports  of course  bitmaps and
 
2296
  vector  outlines, but  one  could imagine  something different  like
 
2297
  colored bitmaps, bi-color vectors or wathever else (Metafonts anyone
 
2298
  ??).
 
2299
 
 
2300
  See  the   file  `include/ftimage.h'.   Note  also  that   the  type
 
2301
  FT_Raster_Map  is gone,  and  is now  replaced  by FT_Bitmap,  which
 
2302
  should encompass all known bitmap types.
 
2303
 
 
2304
  Each new  image format  must provide at  least one "raster",  i.e. a
 
2305
  module capable of  transforming the glyph image into a bitmap.  It's
 
2306
  also possible  to change the default  raster used for  a given glyph
 
2307
  image format.
 
2308
 
 
2309
  The default outline  scan-converter now uses 128 levels  of grays by
 
2310
  default,  which tends  to smooth  many  things.  Note that the  demo
 
2311
  programs have been updated significantly in order to display these..
 
2312
 
 
2313
 
 
2314
----------------------------------------------------------------------
 
2315
 
 
2316
Build system:
 
2317
 
 
2318
  You still need  GNU Make to build the library.  The build system has
 
2319
  been very seriously re-vamped in order to provide things like :
 
2320
 
 
2321
   - automatic host platform  detection (reverting to 'config/ansi' if
 
2322
     it is not detected, with pseudo-standard compilation flags)
 
2323
 
 
2324
   - the ability to compile from the Makefiles with very different and
 
2325
     exotic compilers.  Note that linking the library can be difficult
 
2326
     for some platforms.
 
2327
 
 
2328
     For example, the file `config/win32/lcclib.bat' is invoked by the
 
2329
     build system to create the ".lib" file with LCC-Win32 because its
 
2330
     librarian  has too  many flaws  to be  invoked directly  from the
 
2331
     Makefile.
 
2332
 
 
2333
  Here's how it works:
 
2334
 
 
2335
  - the first time you type `make',  the build system runs a series of
 
2336
    sub-makefiles  in order  to detect  your host  platform.  It  then
 
2337
    dumps what it found, and creates a file called `config.mk' in  the
 
2338
    current  directory.  This is a  sub-Makefile used  to  define many
 
2339
    important Make variables used to build the library.
 
2340
 
 
2341
  - the second time, the build system detects the `config.mk' then use
 
2342
    it  to  build the  library.  All object  files  go  into 'obj'  by
 
2343
    default,  as well  as the  library file,  but this  can  easily be
 
2344
    changed.
 
2345
 
 
2346
  Note that  you can run "make  setup" to force  another host platform
 
2347
  detection  even   if  a  `config.mk'  is  present   in  the  current
 
2348
  directory.  Another solution  is  simply to  delete  the file,  then
 
2349
  re-run make.
 
2350
 
 
2351
  Finally, the  default compiler  for all platforms  is gcc  (for now,
 
2352
  this will hopefully changed in the future).  You can however specify
 
2353
  a different  compiler by specifying  it after the 'setup'  target as
 
2354
  in:
 
2355
 
 
2356
      gnumake setup lcc         on Win32 to use the LCC compiler
 
2357
      gnumake setup visualc     on Win32 to use Visual C++
 
2358
 
 
2359
  See  the file  `config/<system>/detect.mk' for  a list  of supported
 
2360
  compilers for your platforms.
 
2361
 
 
2362
  It should be relatively easy  to write new detection rules files and
 
2363
  config.mk..
 
2364
 
 
2365
  Finally, to  build the demo programs,  go to `demos'  and launch GNU
 
2366
  Make, it will use the `config.mk'  in the top directory to build the
 
2367
  test programs..
 
2368
 
 
2369
 
 
2370
----------------------------------------------------------------------
 
2371
 
 
2372
Portability:
 
2373
 
 
2374
  In  the  previous  beta,  a  single FT_System  object  was  used  to
 
2375
  encompass  all  low-level  operations like  thread  synchronisation,
 
2376
  memory management and i/o access.  This has been greatly simplified:
 
2377
 
 
2378
    - thread synchronisation  has been dropped, for  the simple reason
 
2379
      that the library  is already re-entrant, and that  if you really
 
2380
      need  two  threads accessing  the  same  FT_Library, you  should
 
2381
      really synchronize access to it yourself with a simple mutex.
 
2382
 
 
2383
    - memory  management is  performed  through a  very simple  object
 
2384
      called "FT_Memory",  which really is a table  containing a table
 
2385
      of pointers to  functions like malloc, realloc and  free as well
 
2386
      as some user data (closure).
 
2387
 
 
2388
    - resources have disappeared (they created more problems than they
 
2389
      solved), and  i/o management have  been simplified greatly  as a
 
2390
      result.  Streams are  defined through  FT_Stream objects,  which
 
2391
      can be either memory-based or disk-based.
 
2392
 
 
2393
      Note that  each face  has its own  stream, which is  closed only
 
2394
      when  the  face object  is  destroyed.  Hence,  a function  like
 
2395
      TT_Flush_Face in 1.x cannot be directly  supported.  However, if
 
2396
      you really need something like  this, you can easily tailor your
 
2397
      own streams  to achieve the same  feature at a  lower level (and
 
2398
      use FT_Open_Face instead of FT_New_Face to create the face).
 
2399
 
 
2400
  See the file  "include/ftsystem.h" for more details, as  well as the
 
2401
  implementations found in "config/unix" and "config/ansi".
 
2402
 
 
2403
 
 
2404
----------------------------------------------------------------------
 
2405
 
 
2406
Font Drivers:
 
2407
 
 
2408
  The  Font Driver  interface has  been modified  in order  to support
 
2409
  extensions & versioning.
 
2410
 
 
2411
 
 
2412
  The  list of  the font  drivers that  are statically  linked  to the
 
2413
  library at compile time is  managed through a new configuration file
 
2414
  called `config/<platform>/ftmodule.h'.
 
2415
 
 
2416
  This  file is  autogenerated  when  invoking  `make modules'.   This
 
2417
  target  will  parse  all  sub-directories  of  'src', looking  for a
 
2418
  "module.mk" rules  file, used  to describe  the driver to  the build
 
2419
  system.
 
2420
 
 
2421
  Hence, one  should call  `make modules' each  time a font  driver is
 
2422
  added or removed from the `src' directory.
 
2423
 
 
2424
  Finally, this  version  provides  a "pseudo-driver"  in  `src/sfnt'.
 
2425
  This  driver  doesn't  support  font  files  directly, but  provides
 
2426
  services used by all TrueType-like font drivers.  Hence, its code is
 
2427
  shared between  the TrueType & OpenType  font formats,  and possibly
 
2428
  more formats to come if we're lucky..
 
2429
 
 
2430
 
 
2431
----------------------------------------------------------------------
 
2432
 
 
2433
Extensions support:
 
2434
 
 
2435
  The extensions support is inspired by the one found in 1.x.
 
2436
 
 
2437
  Now, each font driver has  its own "extension registry", which lists
 
2438
  which extensions  are available  for the font  faces managed  by the
 
2439
  driver.
 
2440
 
 
2441
  Extension ids are  now strings, rather than 4-byte  tags, as this is
 
2442
  usually more readable.
 
2443
 
 
2444
  Each extension has:
 
2445
    - some data, associated to each face object
 
2446
    - an interface (table of function pointers)
 
2447
 
 
2448
  An extension  that is format-specific should  simply register itself
 
2449
  to the correct font driver.  Here is some example code:
 
2450
 
 
2451
   // Registering an extensions
 
2452
   //
 
2453
   FT_Error  FT_Init_XXXX_Extension( FT_Library  library )
 
2454
   {
 
2455
     FT_DriverInterface*  tt_driver;
 
2456
 
 
2457
     driver = FT_Get_Driver( library, "truetype" );
 
2458
     if (!driver) return FT_Err_Unimplemented_Feature;
 
2459
 
 
2460
     return FT_Register_Extension( driver, &extension_class );
 
2461
   }
 
2462
 
 
2463
 
 
2464
   // Implementing the extensions
 
2465
   //
 
2466
   FT_Error  FT_Proceed_Extension_XXX( FT_Face  face )
 
2467
   {
 
2468
     FT_XXX_Extension            ext;
 
2469
     FT_XXX_Extension_Interface  ext_interface;
 
2470
 
 
2471
     ext = FT_Get_Extension( face, "extensionid", &ext_interface );
 
2472
     if (!ext) return error;
 
2473
 
 
2474
     return ext_interface->do_it(ext);
 
2475
   }
 
2476
 
 
2477
--- end of CHANGES ---