"SfR Fresh" - the SfR Freeware/Shareware Archive 
Member "freetype-2.3.7/docs/CHANGES" of archive freetype-2.3.7.tar.gz:
As a special service "SfR Fresh" has tried to format the requested source page into HTML format using source code syntax highlighting with prefixed line numbers.
Alternatively you can here view or download the uninterpreted source code file.
That can be also achieved for any archive member file by clicking within an archive contents listing on the first character of the file(path) respectively on the according byte size field.
1 CHANGES BETWEEN 2.3.7 and 2.3.6
2
3 I. IMPORTANT BUG FIXES
4
5 - If the library was compiled on an i386 platform using gcc, and
6 compiler option -O3 was given, `FT_MulFix' sometimes returned
7 incorrect results which could have caused problems with
8 `FT_Request_Metrics' and `FT_Select_Metrics', returning an
9 incorrect descender size.
10
11 - Pure CFFs without subfonts were scaled incorrectly if the font
12 matrix was non-standard. This bug has been introduced in
13 version 2.3.6.
14
15 - The `style_name' field in the `FT_FaceRec' structure often
16 contained a wrong value for Type 1 fonts. This misbehaviour
17 has been introduced in version 2.3.6 while trying to fix
18 another problem. [Note, however, that this value is
19 informative only since the used algorithm to extract it is
20 very simplistic.]
21
22
23 II. IMPORTANT CHANGES
24
25 - Two new macros, FT_OUTLINE_SMART_DROPOUTS and
26 FT_OUTLINE_EXCLUDE_STUBS, have been introduced. Together with
27 FT_OUTLINE_IGNORE_DROPOUTS (which was ignored previously) it is
28 now possible to control the dropout mode of the `raster' module
29 (for B&W rasterization), using the `flags' field in the
30 `FT_Outline' structure.
31
32 - The TrueType bytecode interpreter now passes the dropout mode to
33 the B&W rasterizer. This greatly increases the output for small
34 ppem values of many fonts like `pala.ttf'.
35
36
37 ======================================================================
38
39 CHANGES BETWEEN 2.3.6 and 2.3.5
40
41 I. IMPORTANT BUG FIXES
42
43 - A bunch of potential security problems have been found. All
44 users should update.
45
46 - Microsoft Unicode cmaps in TrueType fonts are now always
47 preferred over Apple cmaps. This is not a bug per se, but there
48 exist some buggy fonts created for MS which have broken Apple
49 cmaps. This affects only the automatic selection of FreeType;
50 it's always possible to manually select an Apple Unicode cmap if
51 desired.
52
53 - Many bug fixes to the TrueType bytecode interpreter.
54
55 - Improved Mac support.
56
57 - Subsetted CID-keyed CFFs are now supported correctly.
58
59 - CID-keyed CFFs with subfonts which are scaled in a non-standard
60 way are now handled correctly.
61
62 - A call to FT_Open_Face with `face_index' < 0 crashed FreeType if
63 the font was a Windows (bitmap) FNT/FON.
64
65
66 II. IMPORTANT CHANGES
67
68 - The new function `FT_Get_CID_Registry_Ordering_Supplement' gives
69 access to those fields in a CID-keyed font. The code has been
70 contributed by Derek Clegg.
71
72 - George Williams contributed code to validate the new `MATH'
73 OpenType table (within the `otvalid' module). The `ftvalid'
74 demo program has been extended accordingly.
75
76 - An API for cmap 14 support (for Unicode Variant Selectors, UVS)
77 has been contributed by George Williams.
78
79 - A new face flag FT_FACE_FLAG_CID_KEYED has been added, together
80 with a macro FT_IS_CID_KEYED which evaluates to 1 if the font is
81 CID-keyed.
82
83
84 III. MISCELLANEOUS
85
86 - Build support for symbian has been contributed.
87
88 - Better WGL4 glyph name support, contributed by Sergey Tolstov.
89
90 - Debugging output of the various FT_TRACEX macros is now sent to
91 stderr.
92
93 - The `ftview' demo program now provides artificial slanting too.
94
95 - The `ftvalid' demo program has a new option `-f' to select the
96 font index.
97
98
99 ======================================================================
100
101 CHANGES BETWEEN 2.3.5 and 2.3.4
102
103 I. IMPORTANT BUG FIXES
104
105 - Some subglyphs in TrueType fonts were handled incorrectly due to
106 a missing graphics state reinitialization.
107
108 - Large .Z files (as distributed with some X11 packages) weren't
109 handled correctly, making FreeType increase the heap stack in an
110 endless loop.
111
112 - A large number of bugs have been fixed to avoid crashes and
113 endless loops with invalid fonts.
114
115
116 II. IMPORTANT CHANGES
117
118 - The two new cache functions `FTC_ImageCache_LookupScaler' and
119 `FTC_SBit_Cache_LookupScaler' have been added to allow lookup of
120 glyphs using an `FTC_Scaler' object; this makes it possible to
121 use fractional pixel sizes in the cache. The demo programs have
122 been updated accordingly to use this feature.
123
124 - A new API `FT_Get_CMap_Format' has been added to get the cmap
125 format of a TrueType font. This is useful in handling PDF
126 files. The code has been contributed by Derek Clegg.
127
128 - The auto-hinter now produces better output by default for
129 non-Latin scripts like Indic. This was done by using the CJK
130 hinting module as the default instead of the Latin one. Thanks
131 to Rahul Bhalerao for this suggestion.
132
133 - A new API `FT_Face_CheckTrueTypePatents' has been added to find
134 out whether a given TrueType font uses patented bytecode
135 instructions. The `ft2demos' bundle contains a new program
136 called `ftpatchk' which demonstrates its usage.
137
138 - A new API `FT_Face_SetUnpatentedHinting' has been added to
139 enable or disable the unpatented hinter.
140
141 - Support for Windows FON files in PE format has been contributed
142 by Dmitry Timoshkov.
143
144
145 III. MISCELLANEOUS
146
147 - Vincent Richomme contributed Visual C++ project files for Pocket
148 PCs.
149
150
151 ======================================================================
152
153 CHANGES BETWEEN 2.3.4 and 2.3.3
154
155 I. IMPORTANT BUG FIXES
156
157 - A serious bug in the handling of bitmap fonts (and bitmap
158 strikes of outline fonts) has been introduced in 2.3.3.
159
160
161 ======================================================================
162
163 CHANGES BETWEEN 2.3.3 and 2.3.2
164
165 I. IMPORTANT BUG FIXES
166
167 - Remove a serious regression in the TrueType bytecode interpreter
168 that was introduced in version 2.3.2. Note that this does not
169 disable the improvements introduced to the interpreter in
170 version 2.3.2, only some ill cases that occurred with certain
171 fonts (though a few popular ones).
172
173 - The auto-hinter now ignores single-point contours for computing
174 blue zones. This bug created `wavy' baselines when rendering
175 text with various fonts that use these contours to model
176 mark-attach points (these are points that are never rasterized
177 and are placed outside of the glyph's real outline).
178
179 - The `rsb_delta' and `lsb_delta' glyph slot fields are now set to
180 zero for mono-spaced fonts. Otherwise code that uses them would
181 essentially ruin the fixed-advance property.
182
183 - Fix CVE-2007-1351 which can cause an integer overflow while
184 parsing BDF fonts, leading to a potentially exploitable heap
185 overflow condition.
186
187
188 II. MISCELLANEOUS
189
190 - Fixed compilation issues on some 64-bit platforms (see ChangeLog
191 for details).
192
193 - A new demo program `ftdiff' has been added to compare TrueType
194 hinting, FreeType's auto hinting, and rendering without hinting
195 in three columns.
196
197
198 ======================================================================
199
200 CHANGES BETWEEN 2.3.2 and 2.3.1
201
202 I. IMPORTANT BUG FIXES
203
204 - FreeType returned incorrect kerning information from TrueType
205 fonts when the bytecode interpreter was enabled. This happened
206 due to a typo introduced in version 2.3.0.
207
208 - Negative kerning values from PFM files are now reported
209 correctly (they were read as 16-bit unsigned values from the
210 file).
211
212 - Fixed a small memory leak when `FT_Init_FreeType' failed for
213 some reason.
214
215 - The Postscript hinter placed and sized very thin and ghost stems
216 incorrectly.
217
218 - The TrueType bytecode interpreter has been fixed to get rid of
219 most of the rare differences seen in comparison to the Windows
220 font loader.
221
222
223 II. IMPORTANT CHANGES
224
225 - The auto-hinter now better deals with serifs and corner cases
226 (e.g., glyph '9' in Arial at 9pt, 96dpi). It also improves
227 spacing adjustments and doesn't change widths for non-spacing
228 glyphs.
229
230 - Many Mac-specific functions are deprecated (but still
231 available); modern replacements have been provided for them.
232 See the documentation in file `ftmac.h'.
233
234
235 ======================================================================
236
237 CHANGES BETWEEN 2.3.1 and 2.3.0
238
239 I. IMPORTANT BUG FIXES
240
241 - The TrueType interpreter sometimes returned incorrect horizontal
242 metrics due to a bug in the handling of the SHZ instruction.
243
244 - A typo in a security check introduced after version 2.2.1
245 prevented FreeType to render some glyphs in CFF fonts.
246
247
248 ======================================================================
249
250 CHANGES BETWEEN 2.3.0 and 2.2.1
251
252 I. IMPORTANT BUG FIXES
253
254 - The PCF font loader is now much more robust while loading
255 malformed font files.
256
257 - Various memory leaks have been found and fixed.
258
259 - The TrueType name loader now deals properly with some fonts that
260 encode their names in UTF-16 (the specification was vague, and
261 the code incorrectly assumed UCS-4).
262
263 - Fixed the TrueType bytecode loader to deal properly with subtle
264 monochrome/gray issues when scaling the CVT. Some fonts
265 exhibited bad rendering artifacts otherwise.
266
267 - `FT_GlyphSlot_Embolden' now supports vertical layouts correctly
268 (it mangled the vertical advance height).
269
270 - Fixed byte endian issues of `ftmac.c' to support Mac OS X on
271 i386.
272
273 - The PFR font loader no longer erroneously tags font files
274 without any outlines as FT_FACE_FLAG_SCALABLE.
275
276
277 II. NEW API FUNCTIONS
278
279 - `FT_Library_SetLcdFilter' allows you to select a special filter
280 to be applied to the bitmaps generated by `FT_Render_Glyph' if
281 one of the FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V modes has
282 been selected. This filter is used to reduce color fringes;
283 several settings are available through the FT_LCD_FILTER_XXX
284 enumeration.
285
286 Its declaration and documentation can be found in file
287 `include/freetype/ftlcdfil.h' (to be accessed with macro
288 FT_LCD_FILTER_H).
289
290 *IMPORTANT*: This function returns an error
291 (FT_Err_Unimplemented_Feature) in default builds of the library
292 for patent reasons. See below.
293
294 - `FT_Get_Gasp' allows you to query the flags of the TrueType
295 `gasp' table for a given character pixel size. This is useful
296 to duplicate the text rendering of MS Windows when the native
297 bytecode interpreter is enabled (which isn't the default for
298 other patent reasons).
299
300 Its declaration and documentation can be found in file
301 `include/freetype/ftgasp.h' (to be accessed with macro
302 FT_GASP_H).
303
304
305 III. IMPORTANT CHANGES
306
307 - The auto-hinter has been tuned a lot to improve its results with
308 serif fonts, resulting in much better font rendering of many web
309 pages.
310
311 - The unpatented hinter is now part of the default build of the
312 library; we have added code to automatically support `tricky'
313 fonts that need it.
314
315 This means that FreeType should `just work' with certain Asian
316 fonts, like MingLiU, which cannot properly be loaded without a
317 bytecode interpreter, but which fortunately do not use any of
318 the patented bytecode opcodes. We detect these fonts by name,
319 so please report any font file that doesn't seem to work with
320 FreeType, and we shall do what we can to support it in a next
321 release.
322
323 Note that the API hasn't changed, so you can still force
324 unpatented hinting with a special parameter to `FT_Open_Face' as
325 well. This might be useful in same cases; for example, a PDF
326 reader might present a user option to activate it to deal with
327 certain `tricky' embedded fonts which cannot be clearly
328 identified.
329
330 If you are a developer for embedded systems, you might want to
331 *disable* the feature to save code space by undefining
332 TT_CONFIG_OPTION_UNPATENTED_HINTING in file `ftoption.h'.
333
334 - LCD-optimized rendering is now *disabled* in all default builds
335 of the library, mainly due to patent issues. For more
336 information see:
337
338 http://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html
339
340 A new configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING
341 has been introduced in `ftoption.h'; manually define it in this
342 file if you want to re-enable the feature.
343
344 The change only affects the implementation, not the FreeType
345 API. This means that clients don't need to be modified, because
346 the library still generates LCD decimated bitmaps, but with the
347 added constraint that R=G=B on each triplet.
348
349 The displayed result should be equal to normal anti-aliased
350 rendering.
351
352 Additionally, if FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
353 defined, the new `FT_Library_SetLcdFilter' function returns the
354 FT_Err_Unimplemented_Feature error code.
355
356 - Some computation bugs in the TrueType bytecode interpreter were
357 found, which allow us to get rid of very subtle and rare
358 differences we had experienced with the Windows renderer.
359
360 - It is now possible to cross-compile the library easily. See the
361 file `docs/INSTALL.CROSS' for details.
362
363 - The file `src/base/ftmac.c' now contains code for Mac OS X only;
364 its deprecated function `FT_GetFile_From_Mac_Font_Name' always
365 returns an error even if the QuickDraw framework is available.
366 The previous version has been moved to `builds/mac/ftmac.c'.
367
368 Selecting configure option `--with-quickdraw-carbon' makes the
369 build process use the original `ftmac.c' file instead of the Mac
370 OS X-only version.
371
372
373 IV. MISCELLANEOUS
374
375 - Various performance and memory footprint optimizations have been
376 performed on the TrueType and CFF font loaders, sometimes with
377 very drastic benefits (e.g., the TrueType loader is now about
378 25% faster; FreeType should use less heap memory under nearly
379 all conditions).
380
381 - The anti-aliased rasterizer has been optimized and is now 15% to
382 25% percent faster than in previous versions, depending on
383 content.
384
385 - The Type 1 loader has been improved; as an example, it now skips
386 top-level dictionaries properly.
387
388 - Better support for Mac fonts on POSIX systems, plus compilation
389 fixes for Mac OS X on ppc64 where `ftmac.c' cannot be built.
390
391 - Configuration without `--with-old-mac-fonts' does not include
392 `ftmac.c' (this was the behaviour in FreeType version 2.1.10).
393
394 - The TrueTypeGX validator (gxvalid) checks the order of glyph IDs
395 in the kern table.
396
397
398 ======================================================================
399
400 CHANGES BETWEEN 2.2.1 and 2.2
401
402 I. IMPORTANT BUG FIXES
403
404 - Various integer overflows have been fixed.
405
406 - PFB fonts with MacOS resource fork weren't handled correctly on
407 non-MacOS platforms.
408
409
410 ======================================================================
411
412 CHANGES BETWEEN 2.2 and 2.1.10
413
414 (not released officially)
415
416 I. IMPORTANT BUG FIXES
417
418 - Vertical metrics for SFNT fonts were incorrect sometimes.
419
420 - The FT_HAS_KERNING macro always returned 0.
421
422 - CFF OpenType fonts didn't return correct vertical metrics for
423 glyphs with outlines.
424
425 - If FreeType was compiled without hinters, all font formats based
426 on PS outlines weren't scaled correctly.
427
428
429 II. IMPORTANT CHANGES
430
431 - Version 2.2 no longer exposes its internals, this is, the header
432 files located in the `include/freetype/internal' directory of
433 the source package are not copied anymore by the `make install'
434 command. Consequently, a number of rogue clients which directly
435 access FreeType's internal functions and structures won't
436 compile without modification.
437
438 We provide patches for most of those rogue clients. See the
439 following page for more information:
440
441 http://www.freetype.org/freetype2/patches/rogue-patches.html
442
443 Note that, as a convenience to our Unix desktop users, version
444 2.2 is *binary* compatible with FreeType 2.1.7, which means that
445 installing this release on an existing distribution shall not
446 break any working desktop.
447
448 - FreeType's build mechanism has been redesigned. With GNU make
449 it is now sufficient in most cases to edit two files:
450 `modules.cfg', to select the library components, and the
451 configuration file `include/freetype/config/ftoption.h' (which
452 can be copied to the objects directory). Removing unused module
453 directories to prevent its compilation and editing
454 `include/freetype/config/ftmodule.h' is no longer necessary.
455
456 - The LIGHT hinting algorithm produces more pleasant results.
457 Also, using the FT_LOAD_TARGET_LIGHT flags within FT_Load_Glyph
458 always forces auto-hinting, as a special exception. This allows
459 you to experiment with it even if you have enabled the TrueType
460 bytecode interpreter in your build.
461
462 - The auto hinter now employs a new algorithm for CJK fonts, based
463 on Akito Hirai's patch. Note that this only works for fonts
464 with a Unicode charmap at the moment.
465
466 - The following callback function types have changed slightly (by
467 adding the `const' keyword where appropriate):
468
469 FT_Outline_MoveToFunc
470 FT_Outline_LineToFunc
471 FT_Outline_ConicToFunc
472 FT_Outline_CubicToFunc
473 FT_SpanFunc
474 FT_Raster_RenderFunc
475
476 FT_Glyph_TransformFunc
477 FT_Renderer_RenderFunc
478 FT_Renderer_TransformFunc
479
480 Note that this doesn't affect binary backward compatibility.
481
482 - On MacOS, new APIs have been added as replacements for legacy
483 APIs: `FT_New_Face_From_FSRef' for `FT_New_Face_From_FSSpec',
484 and `FT_GetFile_From_Mac_ATS_Name' for
485 `FT_GetFile_From_Mac_Name'. Legacy APIs are still available, if
486 FreeType is built without disabling them.
487
488 - A new API `FT_Select_Size' has been added to select a bitmap
489 strike by its index. Code using other functions to select
490 bitmap strikes should be updated to use this function.
491
492 - A new API `FT_Get_SubGlyph_Info' has been added to retrieve
493 subglyph data. This can be used by rogue clients which used to
494 access the internal headers to get the corresponding data.
495
496 - In 2.1.10, the behaviour of `FT_Set_Pixel_Sizes' was changed for
497 BDF/PCF fonts, and only for them. This causes inconsistency.
498 In this release, we undo the change. The intent of the change
499 in 2.1.10 is to allow size selection through real dimensions,
500 which can now be done through `FT_Request_Size'.
501
502 - Some security issues were discovered and fixed in the CFF and
503 Type 1 loader, causing crashes of FreeType by malformed font
504 files.
505
506
507 III. MISCELLANEOUS
508
509 - The documentation for FT_LOAD_TARGET_XXX and FT_RENDER_MODE_XXX
510 values now better reflects its usage and differences: One set is
511 used to specify the hinting algorithm, the other to specify the
512 pixel rendering mode.
513
514 - `FT_New_Face' and `FT_New_Face_From_FSSpec' in ftmac.c have been
515 changed to count supported scalable faces (sfnt, LWFN) only, and
516 to return the number of available faces via face->num_faces.
517 Unsupported bitmap faces (fbit, NFNT) are ignored.
518
519 - builds/unix/configure has been improved for MacOS X. It now
520 automatically checks available functions in Carbon library, and
521 prepare to use newest functions by default. Options to specify
522 the dependencies of each Carbon APIs (FSSpec, FSRef, old/new
523 QuickDraw, ATS) are available too. By manual disabling of all
524 QuickDraw functionality, FreeType can be built without
525 `deprecated function' warnings on MacOS 10.4.x, but
526 FT_GetFile_Mac_Name in ftmac.c then is changed to a dummy
527 function, and returns an `unimplemented' error. For details see
528 builds/mac/README.
529
530 - SFNT cmap handling has been improved, mainly to run much faster
531 with CJK fonts.
532
533 - A new function `FT_Get_TrueType_Engine_Type (declared in
534 `FT_MODULE_H') is provided to determine the status of the
535 TrueType bytecode interpreter compiled into the library
536 (patented, unpatented, unimplemented).
537
538 - Vertical metrics of glyphs are synthesized if the font does not
539 provide such information. You can tell whether the metrics are
540 synthesized or not by checking the FT_FACE_FLAG_VERTICAL flag of
541 the face.
542
543 - The demo programs `ftview' and `ftstring' have been rewritten
544 for better readability. `ftview' has a new switch `-p' to test
545 FT_New_Memory_Face (instead of FT_New_Face).
546
547 - FreeType now honours bit 1 in the `head' table of TrueType fonts
548 (meaning `left sidebearing point at x=0'). This helps with some
549 buggy fonts.
550
551 - Rudimentary support for Adobe's new `SING Glyphlet' format. See
552
553 http://www.adobe.com/products/indesign/sing_gaiji.html
554
555 for more information.
556
557 - The `ftdump' program from the `ft2demos' bundle now shows some
558 information about charmaps. It also supports a new switch `-v'
559 to increase verbosity.
560
561 - Better AFM support. This includes track kerning support.
562
563
564 ======================================================================
565
566 CHANGES BETWEEN 2.1.10 and 2.1.9
567
568 I. IMPORTANT BUG FIXES
569
570 - The size comparison for BDF and PCF files could fail sometimes.
571
572 - Some CFF files were still not loaded correctly. Patch from
573 Derek Noonburg.
574
575 - The stroker still had some serious bugs.
576
577 - Boris Letocha fixed a bug in the TrueType interpreter: The
578 NPUSHW instruction wasn't skipped correctly in IF clauses. Some
579 fonts like `Helvetica 75 Bold' failed.
580
581 - Another serious bug in handling TrueType hints caused many
582 distortions. It has been introduced in version 2.1.8, and it is
583 highly recommended to upgrade.
584
585 - FreeType didn't properly parse empty Type 1 glyphs.
586
587 - An unbound dynamic buffer growth was fixed in the PFR loader.
588
589 - Several bugs have been fixed in the cache sub-system.
590
591 - FreeType behaved incorrectly when resizing two distinct but very
592 close character pixel sizes through `FT_Set_Char_Size' (Savannah
593 bug #12263).
594
595 - The auto-hinter didn't work properly for fonts without a Unicode
596 charmap -- it even refused to load the glyphs.
597
598
599 II. IMPORTANT CHANGES
600
601 - Many fixes have been applied to drastically reduce the amount of
602 heap memory used by FreeType, especially when using
603 memory-mapped font files (which is the default on Unix systems
604 which support them).
605
606 - The auto-hinter has been replaced with a new module, called the
607 `auto-fitter'. It consumes less memory than its predecessor,
608 and it is prepared to support non-latin scripts better in next
609 releases.
610
611 - George Williams contributed code to read kerning data from PFM
612 files.
613
614 - FreeType now uses the TT_NAME_ID_PREFERRED_FAMILY and
615 TT_NAME_ID_PREFERRED_SUBFAMILY strings (if available) for
616 setting family and style in SFNT fonts (patch from Kornfeld
617 Eliyahu Peter).
618
619 - A new API `FT_Sfnt_Table_Info' (in FT_TRUETYPE_TABLES_H) has
620 been added to retrieve name and size information of SFNT tables.
621
622 - A new API `FT_OpenType_Validate' (in FT_OPENTYPE_VALIDATE_H) has
623 been added to validate OpenType tables (BASE, GDEF, GPOS, GSUB,
624 JSTF). After validation it is no longer necessary to check
625 for errors in those tables while accessing them.
626
627 Note that this module might be moved to another library in the
628 future to avoid a tight dependency between FreeType and the
629 OpenType specification.
630
631 - A new API in FT_BITMAP_H (`FT_Bitmap_New', `FT_Bitmap_Convert',
632 `FT_Bitmap_Copy', `FT_Bitmap_Embolden', `FT_Bitmap_Done') has
633 been added. Its use is to convert an FT_Bitmap structure in
634 1bpp, 2bpp, 4bpp, or 8bpp format into another 8bpp FT_Bitmap,
635 probably using a different pitch, and to further manipulate it.
636
637 - A new API `FT_Outline_Embolden' (in FT_OUTLINE_H) gives finer
638 control how outlines are embolded.
639
640 - `FT_GlyphSlot_Embolden' (in FT_SYNTHESIS_H) now handles bitmaps
641 also (code contributed by Chia I Wu). Note that this function
642 is still experimental and may be replaced with a better API.
643
644 - The method how BDF and PCF bitmap fonts are accessed has been
645 refined. Formerly, FT_Set_Pixel_Sizes and FT_Set_Char_Size
646 were synonyms in FreeType's BDF and PCF interface. This has
647 changed now. FT_Set_Pixel_Sizes should be used to select the
648 actual font dimensions (the `strike', which is the sum of the
649 `FONT_ASCENT' and `FONT_DESCENT' properties), while
650 FT_Set_Char_Size selects the `nominal' size (the `PIXELSIZE'
651 property). In both functions, the width parameter is ignored.
652
653
654 III. MISCELLANEOUS
655
656 - The BDF driver no longer converts all returned bitmaps with a
657 depth of 2bpp or 4bpp to a depth of 8bpp. The documentation has
658 not mentioned this explicitly, but implementors might have
659 relied on this after looking into the source files.
660
661 - A new option `--ftversion' has been added to freetype-config to
662 return the FreeType version.
663
664 - The memory debugger has been updated to dump allocation
665 statistics on all allocation sources in the library. This is
666 useful to spot greedy allocations when loading and processing
667 fonts.
668
669 - We removed a huge array of constant pointers to constant strings
670 in the `psnames' module. The problem was that compilations in
671 PIC mode (i.e., when generating a Unix shared object/dll) put
672 the array into the non-shared writable section of the library
673 since absolute pointers are not relocatable by nature.
674
675 This reduces the memory consumption by approximately 16KByte per
676 process linked to FreeType. We now also store the array in a
677 compressed form (as a trie) which saves about 20KByte of code as
678 well.
679
680 - Kirill Smelkov provided patches to make src/raster/ftraster.c
681 compile stand-alone again.
682
683
684 ======================================================================
685
686 CHANGES BETWEEN 2.1.9 and 2.1.8
687
688 I. IMPORTANT BUG FIXES
689
690 - The function `FT_Get_CharMap_Index' was only declared, without
691 any real code. For consistency, it has been renamed to
692 `FT_Get_Charmap_Index'. (This function is needed to implement
693 cmap caches.)
694
695 - `FT_Outline_Get_BBox' sometimes returned incorrect values for
696 conic outlines (e.g., for TrueType fonts).
697
698 - Handling of `bhed' table has been fixed.
699
700 - The TrueType driver with enabled byte code interpreter sometimes
701 returned artifacts due to incorrect rounding. This bug has been
702 introduced after version 2.1.4.
703
704 - The BDF driver dropped the last glyph in the font.
705
706 - The BDF driver now uses the DEFAULT_CHAR property (if available)
707 to select a glyph shape for the undefined glyph.
708
709 - The stroker failed for closed outlines and single points.
710
711
712 II. IMPORTANT CHANGES
713
714 - George Williams contributed code to handle Apple's font
715 distortion technology found in GX fonts (`avar', `cvar', `fvar',
716 and `gvar' tables; the Multiple Masters API has been slightly
717 extended to cope with the new functionality).
718
719 - The `FT_GlyphSlotRec' structure has been extended: The elements
720 `lsb_delta' and `rsb_delta' give the difference between hinted
721 and unhinted left and right side bearings if autohinting is
722 active. Using those values can improve the inter-letter spacing
723 considerably. See the documentation of `FT_GlyphSlotRec' and
724 the `ftstring' demo program how to use it.
725
726 - Loading TrueType and Type 1 fonts has been made much faster.
727
728 - The stroker is no longer experimental (but the cache subsystem
729 still is).
730
731
732 III. MISCELLANEOUS
733
734 - A new documentation file `formats.txt' describes various font
735 formats supported (and not supported) by FreeType.
736
737
738 ======================================================================
739
740 CHANGES BETWEEN 2.1.8 and 2.1.7
741
742 I. IMPORTANT BUG FIXES
743
744 - The native TrueType hinter contained some bugs which prevented
745 some fonts to be rendered correctly, most notably Legendum.otf.
746
747 - The PostScript hinter now produces improved results.
748
749 - The linear advance width and height values were incorrectly
750 rounded, making them virtually unusable if not loaded with
751 FT_LOAD_LINEAR_DESIGN.
752
753 - Indexing CID-keyed CFF fonts is now working: The glyph index is
754 correctly treated as a CID, similar to FreeType's CID driver
755 module. Note that CID CMap support is still missing.
756
757 - The FT_FACE_FLAGS_GLYPH_NAMES flag is now set correctly for all
758 font formats.
759
760 - Some subsetted Type 1 fonts weren't parsed correctly. This bug
761 has been introduced in 2.1.7. In summary, the Type 1 parser has
762 become more robust.
763
764 - Non-decimal numbers weren't parsed correctly in PS fonts.
765
766 - The WinFNT driver now correctly reports FT_ENCODING_NONE for all
767 but one encoding. Use the new FT_WinFNT_ID_XXX values together
768 with `FT_Get_WinFNT_Header' to get the WinFNT charset ID.
769
770 - The descender metrics (face->size->metrics.descender) for WinFNT
771 bitmap fonts had the wrong sign.
772
773 - The (emulated) `seac' support for CFF fonts was broken.
774
775 - The `flex' operator didn't work for CFF fonts.
776
777 - PS glyphs which use the `hintmask' operator haven't been
778 rendered correctly in some cases.
779
780 - Metrics for BDF and PCF bitmap font formats have been fixed.
781
782 - Autohinting is now disabled for glyphs which are vertically
783 distorted or mirrored (using a transformation matrix). This
784 fixes a bug which produced zero-height glyphs.
785
786 - The `freetype-config' script now handles --prefix and
787 --exec-prefix correctly; it also returns the proper --rpath (or
788 -R) value if FreeType has been built as a shared library.
789
790
791 II. IMPORTANT CHANGES
792
793 - Both PCF and BDF drivers now handle the SETWIDTH_NAME and
794 ADD_STYLE_NAME properties. Values are appended to
795 face->style_name; example: `Bold SemiCondensed'.
796
797 - The PCF driver now handles bitmap fonts compressed with the LZW
798 algorithm (extension .pcf.Z, compressed with `compress').
799
800 - A new API function `FT_Get_CMap_Language_ID' (declared in
801 `tttables.h') is available to get the language ID of a
802 TrueType/SFNT cmap.
803
804 - The hexadecimal format of data after the `StartData' command in
805 CID-keyed Type 1 fonts is now supported. While this can't occur
806 in file-based fonts, it can happen in document-embedded
807 resources of PostScript documents.
808
809 - Embedded bitmaps in SFNT-based CFF fonts are now supported.
810
811 - A simple API is now available to control FreeType's tracing
812 mechanism if compiled with FT_DEBUG_LEVEL_TRACE. See the file
813 `ftdebug.h' for more details.
814
815 - YAMATO Masatake contributed improved handling of MacOS resource
816 forks on non-MacOS platforms (for example, Linux can mount MacOS
817 file systems).
818
819 - Support for MacOS has been improved; there is now a new function
820 `FT_New_Face_From_FSSpec' similar to `FT_New_Face' except that
821 it accepts an FSSpec instead of a path.
822
823 - The cache sub-system has been rewritten.
824
825 - There is now support for deinstallation of faces.
826
827 - A new API function `FTC_Manager_RemoveFaceID' has been added
828 to delete all `idle' nodes that correspond to a given
829 FTC_FaceID. All `locked' nodes (i.e., those with a reference
830 count > 0), will be modified to prevent them from appearing in
831 further lookups (they will be cleaned normally when their
832 reference count reaches 0).
833
834 - There is now support for point scaling (i.e., providing
835 character sizes in points + dpis, instead of pixels).
836
837 - Three abstract cache classes are now available:
838
839 FTC_GCache: Used to store one glyph item per cache node,
840 with the ability to group common attributes into
841 `families'. This replaces the old
842 FTC_GlyphCache class.
843
844 FTC_ICache: Used to store one FT_Glyph per cache node. This
845 extends FTC_GCache. Family definition, family
846 comparison, and glyph loading are however left
847 to sub-classes.
848
849 FTC_SCache: Used to store up to 16 small bitmaps per cache
850 node. This extends FTC_GCache. Family
851 definition, family comparison and glyph loading
852 are however left to sub-classes.
853
854 - The file `src/cache/ftcbasic.c' implements:
855
856 FTC_ImageCache: Extends FTC_ICache; implements family
857 definitions and glyph loading similar to the
858 old API.
859
860 FTC_SBitCache: Extends FTC_SCache, implements family
861 definitions and glyph loading similar to the
862 old API
863
864 Client applications should be able to extend FTC_GCache,
865 FTC_ICache, or FTC_SCache much more easily (i.e., less code to
866 write, and less callbacks). For example, one could envision
867 caches that are capable of storing transformed (obliqued),
868 stroked, emboldened, or colored glyph images. Use
869 `ftcbasic.c' as an example.
870
871 - All public APIs are now in `include/freetype/ftcache.h', (to
872 be accessed as `FT_CACHE_H'). The contents of
873 `include/freetype/cache/' is only needed by applications that
874 wish to implement their own caches.
875
876 - There were some major performance improvements through the use
877 of various programming tricks. Cache hits are up to 70%
878 faster than in the old code.
879
880 - The FTC_CMapCache has been simplified. Charmaps can only be
881 accessed by index right now. There is also a new API named
882 `FT_Charmap_GetIndex' for this purpose.
883
884 - The demo programs have been updated to the new code. The
885 previous versions will not work with the current one.
886
887 - Using an invalid face index in FT_Open_Face and friends now
888 causes an error even if the font contains a single face only.
889
890
891 III. MISCELLANEOUS
892
893 - Wolfgang Domröse contributed support files for building FreeType
894 on the Atari using the PureC compiler. Note that the Atari is a
895 16bit platform.
896
897 - Vitaliy Pasternak contributed project files for VS.NET 2003.
898
899
900 ======================================================================
901
902 CHANGES BETWEEN 2.1.7 and 2.1.6
903
904 I. IMPORTANT BUG FIXES
905
906 - Updated to newest libtool version, fixing build problems on
907 various platforms.
908
909 - On Unix platforms, `make install' didn't copy the correct
910 `ftconfig.h' file.
911
912 Note that version 2.1.7 contains the same library C source code as
913 version 2.1.6.
914
915
916 ======================================================================
917
918 CHANGES BETWEEN 2.1.6 and 2.1.5
919
920 I. IMPORTANT BUG FIXES
921
922 - The PFR font driver didn't load kerning tables correctly, and
923 the functions in FT_PFR_H didn't work at all.
924
925 - Type 1 font files in binary format (PFB) with an end-of-file
926 indicator weren't accepted by the FreeType engine.
927
928 - Fonts which contain /PaintType and /StrokeWidth no longer cause
929 a segfault. This bug has been introduced in version 2.1.5.
930
931 - Fonts loaded with FT_LOAD_RENDER no longer cause strange
932 results. This bug has been introduced in version 2.1.5.
933
934 - Some Windows (bitmap) FNT/FON files couldn't be handled
935 correctly.
936
937
938 II. IMPORTANT CHANGES
939
940 - The internal module API has been heavily changed in favor of
941 massive simplifications within the font engine. This also means
942 that authors of third-party modules must adapt their code to the
943 new scheme.
944
945 NOTE: THE NEW SCHEME IS NOT COMPLETED YET. PLEASE WAIT UNTIL A
946 FINAL ANNOUNCEMENT!
947
948 - The PostScript parser has been enhanced to handle comments and
949 strings correctly. Additionally, more syntax forms are
950 recognized.
951
952 - Added the optional unpatented hinting system for TrueType. It
953 allows typefaces which need hinting to produce correct glyph
954 forms (e.g., Chinese typefaces from Dynalab) to work acceptably
955 without infringing Apple patents. This system is compiled only
956 if TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING is defined in
957 ftoption.h (activated by default).
958
959
960 III. MISCELLANEOUS
961
962 - There is now a guard in the public header files to protect
963 against inclusion of freetype.h from FreeType 1.
964
965 - Direct inclusion of freetype.h and other public header files no
966 longer works. You have to use the documented scheme
967
968 #include <ft2build.h>
969 #include FT_FREETYPE_H
970
971 to load freetype.h with a symbolic name. This protects against
972 renaming of public header files (which shouldn't happen but
973 actually has, avoiding two public header files with the same
974 name).
975
976
977 ======================================================================
978
979 CHANGES BETWEEN 2.1.5 and 2.1.4
980
981 I. IMPORTANT BUG FIXES
982
983 - Parsing the /CIDFontName field now removes the leading slash to
984 be in sync with other font drivers.
985
986 - gzip support was buggy. Some fonts could not be read.
987
988 - Fonts which have nested subglyphs more than one level deep no
989 longer cause a segfault.
990
991 - Creation of synthetic cmaps for fonts in CFF format was broken
992 partially.
993
994 - Numeric font dictionary entries for synthetic fonts are no
995 longer overwritten.
996
997 - The font matrix wasn't applied to the advance width for Type1,
998 CID, and CFF fonts. This caused problems when loading certain
999 synthetic Type 1 fonts like `Helvetica Narrow'.
1000
1001 - The test for the charset registry in BDF and PCF fonts is now
1002 case-insensitive.
1003
1004 - FT_Vector_Rotate sometimes returned strange values due to
1005 rounding errors.
1006
1007 - The PCF driver now returns the correct number of glyphs
1008 (including an artificial `notdef' glyph at index 0).
1009
1010 - FreeType now supports buggy CMaps which are contained in many
1011 CJK fonts from Dynalab.
1012
1013 - Opening an invalid font on a Mac caused a segfault due to
1014 double-freeing memory.
1015
1016 - BDF fonts with more than 32768 glyphs weren't supported
1017 properly.
1018
1019
1020 II. IMPORTANT CHANGES
1021
1022 - Accessing bitmap font formats has been synchronized. To do that
1023 the FT_Bitmap_Size structure has been extended to contain new
1024 fields `size', `x_ppem', and `y_ppem'.
1025
1026 - The FNT driver now returns multiple faces, not multiple strikes.
1027
1028 - The `psnames' module has been updated to the Adobe Glyph List
1029 version 2.0.
1030
1031 - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
1032
1033 - The algorithm for guessing the font style has been improved.
1034
1035 - For fonts in SFNT format, root->height is no longer increased if
1036 the line gap is zero. There exist fonts (containing e.g. form
1037 drawing characters) which intentionally have a zero line gap
1038 value.
1039
1040 - ft_glyph_bbox_xxx flags are now deprecated in favour of
1041 FT_GLYPH_BBOX_XXX.
1042
1043 - ft_module_xxx flags are now deprecated in favour of
1044 FT_MODULE_XXX.
1045
1046 - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now
1047 deprecated in favour of
1048 FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB} -- those encodings
1049 are not specific to Microsoft.
1050
1051
1052 III. MISCELLANEOUS
1053
1054 - The autohinter has been further improved; for example, `m'
1055 glyphs now retain its vertical symmetry.
1056
1057 - Partial support of Mac fonts on non-Mac platforms.
1058
1059 - `make refdoc' (after first `make') builds the HTML
1060 documentation. You need Python for this.
1061
1062 - The make build system should now work more reliably on DOS-like
1063 platforms.
1064
1065 - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has
1066 been added.
1067
1068 - Better VMS build support.
1069
1070 - Support for the pkg-config package by providing a `freetype.pc'
1071 file.
1072
1073 - New configure option --with-old-mac-fonts for Darwin.
1074
1075 - Some source files have been renamed (mainly to fit into the 8.3
1076 naming scheme).
1077
1078
1079 ======================================================================
1080
1081 CHANGES BETWEEN 2.1.4 and 2.1.3
1082
1083 I. IMPORTANT BUG FIXES
1084
1085 - Updated to newest libtool version, fixing build problems on
1086 various platforms.
1087
1088 - A fix in the Gzip stream reader: It couldn't read certain .gz
1089 files properly due to a small typo. In certain cases, FreeType
1090 could also loop endlessly when trying to load tiny gzipped
1091 files.
1092
1093 - The configure script now tries to use the system-wide zlib when
1094 it finds one (instead of the copy found in src/gzip). And
1095 `freetype-config' has been updated to return relevant flags in
1096 this case when invoked with `--libs' (e.g. `-lzlib').
1097
1098 - Certain fonts couldn't be loaded by 2.1.3 because they lacked a
1099 Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously
1100 rejected them.
1101
1102 - The CFF loader was modified to accept fonts which only contain a
1103 subset of their reference charset. This prevented the correct
1104 use of PDF-embedded fonts.
1105
1106 - The logic to detect Unicode charmaps has been modified. This is
1107 required to support fonts which include both 16-bit and 32-bit
1108 charmaps (like very recent asian ones) using the new 10 and 12
1109 SFNT formats.
1110
1111 - The TrueType loader now limits the depth of composite glyphs.
1112 This is necessary to prevent broken fonts to break the engine by
1113 blowing the stack with recursive glyph definitions.
1114
1115 - The CMap cache is now capable of managing UCS-4 character codes
1116 that are mapped through extended charmaps in recent
1117 TrueType/OpenType fonts.
1118
1119 - The cache sub-system now properly manages out-of-memory
1120 conditions instead of blindly reporting them to the caller.
1121 This means that it will try to empty the cache before restarting
1122 its allocations to see if that can help.
1123
1124 - The PFR driver didn't return the list of available embedded
1125 bitmaps properly.
1126
1127 - There was a nasty memory leak when using embedded bitmaps in
1128 certain font formats.
1129
1130
1131 II. IMPORTANT CHANGES
1132
1133 - David Chester contributed some enhancements to the auto-hinter
1134 that significantly increase the quality of its output. The
1135 Postscript hinter was also improved in several ways.
1136
1137 - The FT_RENDER_MODE_LIGHT render mode was implemented.
1138
1139 - A new API function called `FT_Get_BDF_Property' has been added
1140 to FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font
1141 files. THIS IS STILL EXPERIMENTAL, since it hasn't been
1142 properly tested yet.
1143
1144 - A Windows FNT specific API has been added, mostly to access font
1145 headers. This is used by Wine.
1146
1147 - TrueType tables without an `hmtx' table are now tolerated when
1148 an incremental interface is used. This happens for certain
1149 Type42 fonts passed from Ghostscript to FreeType.
1150
1151 - The PFR font driver is now capable of returning the font family
1152 and style names when they are available (instead of the sole
1153 `FontID'). This is performed by parsing an *undocumented*
1154 portion of the font file!
1155
1156
1157 III. MISCELLANEOUS
1158
1159 - The path stroker in FT_STROKER_H has entered beta stage. It now
1160 works very well, but its interface might change a bit in the
1161 future. More on this in later releases.
1162
1163 - The documentation for FT_Size_Metrics didn't appear properly in
1164 the API reference.
1165
1166 - The file docs/VERSION.DLL has been updated to explain versioning
1167 with FreeType (i.e., comparing release/libtool/so numbers, and
1168 how to use them in autoconf scripts).
1169
1170 - The installation documentation has been seriously revamped.
1171 Everything is now in the `docs' directory.
1172
1173
1174 ======================================================================
1175
1176 CHANGES BETWEEN 2.1.3 and 2.1.2
1177
1178 I. IMPORTANT BUG FIXES
1179
1180 - FT_Vector_Transform had been incorrectly modified in 2.1.2,
1181 resulting in incorrect transformations being applied (for
1182 example, rotations were processed in opposite angles).
1183
1184 - The format 8 and 12 TrueType charmap enumeration routines have
1185 been fixed (FT_Get_Next_Char returned invalid values).
1186
1187 - The PFR font driver returned incorrect advance widths if the
1188 outline and metrics resolution defined in the font file were
1189 different.
1190
1191 - FT_Glyph_To_Bitmap now returns successfully when called with an
1192 FT_BitmapGlyph argument (it previously returned an error).
1193
1194 - A bug in the Type 1 loader that prevented valid font bounding
1195 boxes to be loaded from multiple master fonts.
1196
1197 - The SFNT validation code has been rewritten. FreeType can now
1198 load `broken' fonts that were usable on Windows, but not with
1199 previous versions of the library.
1200
1201 - The computation of bearings in the BDF driver has been fixed.
1202
1203 - The Postscript hinter crashed when trying to hint certain glyphs
1204 (more precisely, when trying to apply hints to an empty glyph
1205 outline).
1206
1207 - The TrueType glyph loader now supports composites in `Apple
1208 format' (they differ slightly from Microsoft/OpenType ones in
1209 the way transformation offsets are computed).
1210
1211 - FreeType was very slow at opening certain asian CID/CFF fonts,
1212 due to fixed increment in dynamic array re-allocations. This
1213 has been changed to exponential behaviour to get acceptable
1214 performance.
1215
1216
1217
1218 II. IMPORTANT CHANGES
1219
1220 - The PCF driver now supports gzip-compressed font files natively.
1221 This means that you will be able to use all these bitmap fonts
1222 that come with XFree86 with FreeType (and libXft/libXft2, by
1223 extension).
1224
1225 - The automatic and postscript hinters have both been updated.
1226 This results in a relatively important increase of rendering
1227 quality since many nasty defaults have been suppressed. Please
1228 visit the web page:
1229
1230 http://www.freetype.org/hinting/smooth-hinting.html
1231
1232 for additional details on this topic.
1233
1234 - The `load_flags' parameter of `FT_Load_Glyph' is now an FT_Int32
1235 (instead of just being an FT_Int). This breaks source and
1236 binary compatibility for 16bit systems only, while retaining
1237 both of them for 32 and 64 bit ones.
1238
1239 Some new flags have been added consequently:
1240
1241 FT_LOAD_NO_AUTOHINT :: Disable the use of the auto-hinter
1242 (but not native format hinters).
1243
1244 FT_LOAD_TARGET_NORMAL :: Hint and render for normal
1245 anti-aliased displays.
1246
1247 FT_LOAD_TARGET_MONO :: Hint and render for 1-bit displays.
1248
1249 FT_LOAD_TARGET_LCD :: Hint and render for horizontal RGB or
1250 BGR sub-pixel displays (like LCD
1251 screens). THIS IS STILL
1252 EXPERIMENTAL!
1253
1254 FT_LOAD_TARGET_LCD_V :: Same as FT_LOAD_TARGET_LCD, for
1255 vertical sub-pixel displays (like
1256 rotated LCD screens). THIS IS STILL
1257 EXPERIMENTAL!
1258
1259 FT_LOAD_MONOCHROME is still supported, but only affects
1260 rendering, not the hinting.
1261
1262 Note that the `ftview' demo program available in the `ft2demos'
1263 package has been updated to support LCD-optimized display on
1264 non-paletted displays (under Win32 and X11).
1265
1266 - The PFR driver now supports embedded bitmaps (all formats
1267 supported), and returns correct kerning metrics for all glyphs.
1268
1269 - The TrueType charmap loader now supports certain `broken' fonts
1270 that load under Windows without problems.
1271
1272 - The cache API has been slightly modified (it's still a beta!):
1273
1274 - The type FTC_ImageDesc has been removed; it is now replaced
1275 by FTC_ImageTypeRec. Note that one of its fields is a
1276 `load_flag' parameter for FT_Load_Glyph.
1277
1278 - The field `num_grays' of FT_SBitRec has been changed to
1279 `max_grays' in order to fit within a single byte. Its
1280 maximum value is thus 255 (instead of 256 as previously).
1281
1282
1283 III. MISCELLANEOUS
1284
1285 - Added support for the DESTDIR variable during `make install'.
1286 This simplifies packaging of FreeType.
1287
1288 - Included modified copies of the ZLib sources in `src/gzip' in
1289 order to support gzip-compressed PCF fonts. We do not use the
1290 system-provided zlib for now, though this is a probable
1291 enhancement for future releases.
1292
1293 - The DocMaker tool used to generate the on-line API reference has
1294 been completely rewritten. It is now located in
1295 `src/tools/docmaker/docmaker.py'. Features:
1296
1297 - better cross-referenced output
1298 - more polished output
1299 - uses Python regular expressions (though it didn't speed the
1300 program)
1301 - much more modular structure, which allows for different
1302 `backends' in order to generate HTML, XML, or whatever
1303 format.
1304
1305 One can regenerate the API reference by calling:
1306
1307 python src/tools/docmaker/docmaker.py \
1308 --prefix=ft2 \
1309 --title=FreeType-2.1.3 \
1310 --output=<outputdirectory>
1311 include/freetype/*.h \
1312 include/freetype/config/*.h \
1313 include/freetype/cache/*.h
1314
1315 - A new, experimental, support for incremental font loading (i.e.,
1316 loading of fonts where the glyphs are not in the font file
1317 itself, but provided by an external component, like a Postscript
1318 interpreter) has been added by Graham Asher. This is still work
1319 in progress, however.
1320
1321 - A new, EXPERIMENTAL, path stroker has been added. It doesn't
1322 suffer from severe rounding errors and treat bezier arcs
1323 directly. Still work in progress (i.e. not part of the official
1324 API). See the file <freetype/ftstroker.h> for some of the
1325 details.
1326
1327 - The massive re-formatting of sources and internal re-design is
1328 still under-way. Many internal functions, constants, and types
1329 have been renamed.
1330
1331
1332 ======================================================================
1333
1334 CHANGES BETWEEN 2.1.2 and 2.1.1
1335
1336 I. IMPORTANT BUG FIXES
1337
1338 - Many font drivers didn't select a Unicode charmap by default
1339 when a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS
1340 options enabled), causing many applications to not be able to
1341 display text correctly with the 2.1.x releases.
1342
1343 - The PFR driver had a bug in its composite loading code that
1344 produces incorrectly placed accents with many fonts.
1345
1346 - The Type42 driver crashed sometimes due to a nasty bug.
1347
1348 - The Type 1 custom encoding charmap didn't handle the case where
1349 the first glyph index wasn't 0.
1350
1351 - A serious typo in the TrueType composite loader produced
1352 incorrectly placed glyphs in fonts like `Wingdings' and a few
1353 others.
1354
1355
1356 II. MISCELLANEOUS
1357
1358 - The Win32 Visual C++ project file has been updated to include
1359 the PFR driver as well.
1360
1361 - `freetype.m4' is now installed by default by `make install' on
1362 Unix systems.
1363
1364 - The function FT_Get_PS_Font_Info now works with CID and Type42
1365 fonts as well.
1366
1367
1368 ======================================================================
1369
1370 CHANGES BETWEEN 2.1.1 and 2.1.0
1371
1372 I. IMPORTANT BUG FIXES
1373
1374 - The `version_info' returned by `freetype-config' in 2.1.0
1375 returned an invalid value. It now returns 9:1:3 (2.0.9 returned
1376 9:0:3).
1377
1378 - Version 2.1.0 couldn't be linked against applications on Win32
1379 and Amiga systems due to a new debug function that wasn't
1380 properly propagated to the system-specific directory in
1381 `builds'.
1382
1383 - Various MacOS and Mac OS X specific fixes.
1384
1385 - Fixed a bug in the TrueType charmap validation routines that
1386 made version 2.1.0 too restrictive -- many popular fonts have
1387 been rejected.
1388
1389 - There was still a very small difference between the monochrome
1390 glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the
1391 bytecode interpreter enabled. This was caused by an invalid
1392 flag setting in the TrueType glyph loader, making the rasterizer
1393 change its drop-out control mode. Now the results should
1394 _really_ be completely identical.
1395
1396 - The TrueType name table loader has been improved to support many
1397 popular though buggy Asian fonts. It now ignores empty name
1398 entries, invalid pointer offsets and a few other incorrect
1399 subtleties. Moreover, name strings are now loaded on demand,
1400 which reduces the memory load of many faces (e.g. the ARIAL.TTF
1401 font file contains a 10kByte name table with 70 names).
1402
1403 - Fixed a bug in the Postscript hinter that prevented family blues
1404 substitution to happen correctly.
1405
1406
1407 II. NEW FEATURES
1408
1409 - Three new font drivers in this release:
1410
1411 * A BDF font driver, contributed by Franco Zappa Nardelli,
1412 heavily modified by Werner Lemberg. It also supports
1413 anti-aliased bitmaps (using a slightly extended BDF format).
1414
1415 * A Type42 font driver, contributed by Roberto Alameda. It is
1416 still experimental but seems to work relatively well.
1417
1418 * A PFR font driver, contributed by David Turner himself. It
1419 doesn't support PFR hinting -- note that BitStream has at
1420 least two patents on this format!
1421
1422
1423 III. MISCELLANEOUS
1424
1425 - The cache sub-system has been optimized in important ways.
1426 Cache hits are now significantly faster. For example, using the
1427 CMap cache is about twice faster than calling FT_Get_Char_Index
1428 on most platforms. Similarly, using an SBit cache is about five
1429 times faster than loading the bitmaps from a bitmap file, and
1430 300 to 500 times faster than generating them from a scalable
1431 format.
1432
1433 Note that you should recompile your sources if you designed a
1434 custom cache class for the FT2 Cache subsystem, since the
1435 changes performed are source, but not binary, compatible.
1436
1437
1438 ======================================================================
1439
1440 CHANGES BETWEEN 2.1.0 and 2.0.9
1441
1442 I. IMPORTANT BUG FIXES
1443
1444 - The TrueType bytecode interpreter has been fixed to produce
1445 _exactly_ the same output as FreeType 1.x. Previous differences
1446 were due to slightly distinct fixed-point computation routines
1447 used to perform dot products and vector length measurements.
1448
1449 It seems that native TrueType hinting is _extremely_ sensitive
1450 to rounding errors. The required vector computation routines
1451 have been optimized and placed within the `ttinterp.c' file.
1452
1453 - Fixed the parsing of accelerator tables in the PCF font driver.
1454
1455 - Fixed the Type1 glyph loader routine used to compute the font's
1456 maximum advance width.
1457
1458
1459 II. NEW FEATURES
1460
1461 - The `configure' script used on Unix systems has been modified to
1462 check that GNU Make is being used to build the library.
1463 Otherwise, it will display a message proposing to use the
1464 GNUMAKE environment variable to name it.
1465
1466 The Unix-specific file README.UNX has been modified accordingly.
1467
1468
1469 III. MISCELLANEOUS
1470
1471 - The FreeType License in `docs/FTL.TXT' has been updated to
1472 include a proposed preferred disclaimer. If you are using
1473 FreeType in your products, you are encouraged (but not mandated)
1474 to use the following text in your documentation:
1475
1476 """
1477 Portions of this software are copyright © 1996-2002 The
1478 FreeType Project (www.freetype.org). All rights reserved.
1479 """
1480
1481 - The default size of the render pool has been reduced to 16kByte.
1482 This shouldn't result in any noticeable performance penalty,
1483 unless you are using the engine as-is to render very large and
1484 complex glyphs.
1485
1486 - The FreeType 2 redesign has begun. More information can be
1487 found at this URL:
1488
1489 http://www.freetype.org/freetype2/redesign.html
1490
1491 The following internal changes have been performed within the
1492 sources of this release:
1493
1494 - Many internal types have been renamed to increase
1495 consistency. The following should be true, except for
1496 public types:
1497
1498 * All structure types have a name ending in `Rec' (short
1499 for `record').
1500
1501 * A pointer-to-structure type has the same name as the
1502 structure, _without_ the `Rec' suffix.
1503
1504 Example:
1505
1506 typedef struct FooRec_
1507 {
1508 ...
1509
1510 } FooRec, *Foo;
1511
1512 - Many internal macros have been renamed to increase
1513 consistency. The following should be true:
1514
1515 * All macros have a name beginning with `FT_'. This
1516 required a few changes like
1517
1518 ALLOC => FT_ALLOC
1519 FREE => FT_FREE
1520 REALLOC => FT_REALLOC
1521
1522 * All macros are completely UPPERCASE. This required a
1523 few changes like:
1524
1525 READ_Short => FT_READ_SHORT
1526 NEXT_Short => FT_NEXT_SHORT
1527 GET_ULongLE => FT_GET_ULONG_LE
1528 MEM_Set => FT_MEM_SET
1529 MEM_Copy => FT_MEM_COPY
1530 etc.
1531
1532 * Whenever possible, all macro names follow the
1533 FT_<OBJECT>_<METHOD> pattern. For example
1534
1535 ACCESS_Frame => FT_FRAME_ENTER
1536 FORGET_Frame => FT_FRAME_EXIT
1537 EXTRACT_Frame => FT_FRAME_EXTRACT
1538 RELEASE_Frame => FT_FRAME_RELEASE
1539
1540 FILE_Pos => FT_STREAM_POS
1541 FILE_Seek => FT_STREAM_SEEK
1542 FILE_Read => FT_STREAM_READ
1543 FILE_ReadAt => FT_STREAM_READ_AT
1544 READ_Fields => FT_STREAM_READ_FIELDS
1545
1546 - Many internal functions have been renamed to follow the
1547 FT_<Object>_<Method> pattern. For example:
1548
1549 FT_Seek_Stream => FT_Stream_Seek
1550 FT_Read_Stream_At => FT_Stream_ReadAt
1551 FT_Done_Stream => FT_Stream_Close
1552 FT_New_Stream => FT_Stream_Open
1553 FT_New_Memory_Stream => FT_Stream_OpenMemory
1554 FT_Extract_Frame => FT_Stream_ExtractFrame
1555
1556 Note that method names do not contain `_'.
1557
1558 - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced
1559 with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a
1560 type as the fourth argument. Instead, the array element
1561 type size is computed automatically from the type of the
1562 target pointer used.
1563
1564 - A new object class, FT_CMap, has been introduced. These
1565 internal objects are used to model character maps. This
1566 eases the support of additional charmap types within the
1567 engine.
1568
1569 - A new configuration file named `ftstdlib.h' has been added
1570 to `include/freetype/config'. It is used to define aliases
1571 for _every_ routine of the ISO C library that the font
1572 engine uses. Each aliases has a `ft_' prefix
1573 (e.g. `ft_strlen' is an alias for `strlen').
1574
1575 This is used to ease the porting of FreeType 2 to exotic
1576 runtime environments where the ISO C Library isn't available
1577 (e.g. XFree86 extension modules).
1578
1579 More details are available in the `ChangeLog' file.
1580
1581
1582 ======================================================================
1583
1584 CHANGES BETWEEN 2.0.9 and 2.0.8
1585
1586 I. IMPORTANT BUG FIXES
1587
1588 - Certain fonts like `foxjump.ttf' contain broken name tables with
1589 invalid entries and wild offsets. This caused FreeType to crash
1590 when trying to load them.
1591
1592 The SFNT `name' table loader has been fixed to be able to
1593 support these strange fonts.
1594
1595 Moreover, the code in charge of processing this table has been
1596 changed to always favour Windows-formatted entries over other
1597 ones. Hence, a font that works on Windows but not on the Mac
1598 will load cleanly in FreeType and report accurate values for
1599 Family & PostScript names.
1600
1601 - The CID font driver has been fixed. It unfortunately returned a
1602 Postscript Font name with a leading slash, as in
1603 `/MunhwaGothic-Regular'.
1604
1605 - FreeType 2 should now compile fine on AIX 4.3.3 as a shared
1606 library.
1607
1608 - A bug in the Postscript hinter has been found and fixed,
1609 removing un-even stem widths at small pixel sizes (like 14-17).
1610
1611 This improves the quality of a certain number of Postscript
1612 fonts.
1613
1614
1615 II. NEW FEATURES
1616
1617 - A new function named `FT_Library_Version' has been added to
1618 return the current library's major, minor, and patch version
1619 numbers. This is important since the macros FREETYPE_MAJOR,
1620 FREETYPE_MINOR, and FREETYPE_PATCH cannot be used when the
1621 library is dynamically linked by a program.
1622
1623 - Two new APIs have been added: `FT_Get_First_Char' and
1624 `FT_Get_Next_Char'.
1625
1626 Together, these can be used to iterate efficiently over the
1627 currently selected charmap of a given face. Read the API
1628 reference for more details.
1629
1630
1631 III. MISCELLANEOUS
1632
1633 - The FreeType sources are under heavy internal re-factoring. As
1634 a consequence, we have created a branch named `STABLE' on the
1635 CVS to hold all future releases/fixes in the 2.0.x family.
1636
1637 The HEAD branch now contains the re-factored sources and
1638 shouldn't be used for testing or packaging new releases. In
1639 case you would like to access the 2.0.9 sources from our CVS
1640 repository, use the tag `VER-2-0-9'.
1641
1642
1643 ======================================================================
1644
1645 CHANGES BETWEEN 2.0.8 and 2.0.7
1646
1647 I. IMPORTANT BUG FIXES
1648
1649 - There was a small but nasty bug in `freetype-config.in' which
1650 caused the `freetype-config' script to fail on Unix.
1651
1652 This didn't prevent the installation of the library or even its
1653 execution, but caused problems when trying to compile many Unix
1654 packages that depend on it.
1655
1656 - Some TrueType or OpenType fonts embedded in PDF documents do not
1657 have a 'cmap', 'post' and 'name' as is required by the
1658 specification. FreeType no longer refuses to load such fonts.
1659
1660 - Various fixes to the PCF font driver.
1661
1662
1663 ======================================================================
1664
1665 CHANGES BETWEEN 2.0.7 and 2.0.6
1666
1667 I. IMPORTANT BUG FIXES
1668
1669 - Fixed two bugs in the Type 1 font driver. The first one
1670 resulted in a memory leak in subtle cases. The other one caused
1671 FreeType to crash when trying to load `.gsf' files (Ghostscript
1672 so-called Postscript fonts).
1673
1674 (This made _many_ KDE applications crash on certain systems.
1675 FreeType _is_ becoming a critical system component on Linux :-)
1676
1677 - Fixed a memory leak in the CFF font driver.
1678
1679 - Fixed a memory leak in the PCF font driver.
1680
1681 - Fixed the Visual C++ project file
1682 `builds/win32/visualc/freetype.dsp' since it didn't include the
1683 Postscript hinter component, causing errors at build time.
1684
1685 - Fixed a small rendering bug in the anti-aliased renderer that
1686 only occurred when trying to draw thin (less than 1 pixel)
1687 strokes.
1688
1689 - Fixed `builds/unix/freetype2.a4' which is used to generate a
1690 valid `freetype2.m4' for use with autoconf.
1691
1692 - Fixed the OpenVMS Makefiles.
1693
1694
1695 II. MISCELLANEOUS
1696
1697 - Added `configure' and `install' scripts to the top-level
1698 directory. A GNU-style installation is thus now easily possible
1699 with
1700
1701 ./configure <options>
1702 make
1703 make install
1704
1705
1706 ======================================================================
1707
1708 CHANGES BETWEEN 2.0.6 and 2.0.5
1709
1710 I. IMPORTANT BUG FIXES
1711
1712 - It wasn't possible to load embedded bitmaps when the auto-hinter
1713 was used. This is now fixed.
1714
1715 - The TrueType font driver didn't load some composites properly
1716 (the sub-glyphs were slightly shifted, and this was only
1717 noticeable when using monochrome rendering).
1718
1719 - Various fixes to the auto-hinter. They merely improve the
1720 output of sans-serif fonts. Note that there are still problems
1721 with serifed fonts and composites (accented characters).
1722
1723 - All scalable font drivers erroneously returned un-fitted glyph
1724 advances when hinting was requested. This created problems for
1725 a number of layout applications. This is a very old bug that
1726 got undetected mainly because most test/demo program perform
1727 rounding explicitly or implicitly (through the cache).
1728
1729 - `FT_Glyph_To_Bitmap' did erroneously modify the source glyph in
1730 certain cases.
1731
1732 - `glnames.py' still contained a bug that made FreeType return
1733 invalid names for certain glyphs.
1734
1735 - The library crashed when loading certain Type 1 fonts like
1736 `sadn.pfb' (`Stalingrad Normal'), which appear to contain
1737 pathetic font info dictionaries.
1738
1739 - The TrueType glyph loader is now much more paranoid and checks
1740 everything when loading a given glyph image. This was necessary
1741 to avoid problems (crashes and/or memory overwrites) with broken
1742 fonts that came from a really buggy automatic font converter.
1743
1744
1745 II. IMPORTANT UPDATES AND NEW FEATURES
1746
1747 - Important updates to the Mac-specific parts of the library.