modules/freetype2/docs/CHANGES

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

mercurial