Sat, 03 Jan 2015 20:18:00 +0100
Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.
2 CHANGES BETWEEN 2.5.2 and 2.5.3
4 I. IMPORTANT BUG FIXES
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.
10 - More bug fixes related to correct positioning of composite
11 glyphs.
13 - Many fixes to better protect against malformed input.
16 II. IMPORTANT CHANGES
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.
25 You need HarfBuzz version 0.9.19 or newer.
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.
31 1. Compile and install FreeType without the configuration
32 macro FT_CONFIG_OPTION_USE_HARFBUZZ.
34 2. Compile and install HarfBuzz.
36 3. Define macro FT_CONFIG_OPTION_USE_HARFBUZZ, then compile
37 and install FreeType again.
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').
44 - All libraries FreeType depends on are now checked using the
45 `pkg-config' configuration files first, followed by alternative
46 methods.
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.
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:
58 LIBZ -> removed; use LIBZ_CFLAGS and LIBZ_LIBS
59 LIBBZ2 -> removed; use BZIP2_CFLAGS and BZIP2_LIBS
60 LIBPNG_LDFLAGS -> LIBPNG_LIBS
62 `./configure --help' shows all available environment variables.
64 - The `freetype-config' script now understands option `--static'
65 to emit static linking information.
68 ======================================================================
70 CHANGES BETWEEN 2.5.1 and 2.5.2
72 I. IMPORTANT BUG FIXES
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'.
78 - Another round of improvements to correct positioning and hinting
79 of composite glyphs in TrueType fonts.
82 II. MISCELLANEOUS
84 - Version 2.5.1 introduced a bug in handling embedded bitmap
85 strikes of TrueType fonts, causing garbage display under some
86 circumstances.
88 - The `ftgrid' demo program couldn't be compiled in
89 non-development builds.
92 ======================================================================
94 CHANGES BETWEEN 2.5 and 2.5.1
96 I. IMPORTANT BUG FIXES
98 - For some WinFNT files, the last glyph wasn't displayed but
99 incorrectly marked as invalid.
101 - The vertical size of glyphs was incorrectly set after a call to
102 `FT_GlyphSlot_Embolden', resulting in clipped glyphs.
104 - Many fields of the `PCLT' table in SFNT based fonts (if accessed
105 with `FT_Get_Sfnt_Table') were computed incorrectly.
107 - In TrueType fonts, hinting of composite glyphs could sometimes
108 deliver incorrect positions of components or even distorted
109 shapes.
112 II. IMPORTANT CHANGES
114 - WOFF font format support has been added.
116 - The auto-hinter now supports Hebrew. Greek and Cyrillic support
117 has been improved.
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.
122 - The header file layout has been changed. After installation,
123 all files are now located in `<prefix>/include/freetype2'.
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
129 #include <ft2build.h>
130 #include FT_FREETYPE_H
131 ...
133 don't need any change to the source code.
136 III. MISCELLANEOUS
138 - The stem darkening feature of the new CFF engine can now be
139 fine-tuned with the new `darkening-parameters' property.
141 - `ftgrid' has been updated to toggle various engines with the `H'
142 key, similar to `ftview' and `ftdiff'.
144 - The functionality of `ttdebug' has been greatly enhanced.
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.
150 . Some keys have been reassigned from lowercase to their
151 uppercase equivalents; for example `q' to quit the program is
152 now `Q'.
154 . Key `f' finishes the current function.
156 . Key `R' restarts the debugger.
158 . Keys `b' and `p' set a breakpoint.
160 . Key `B' provides a function call backtrace.
162 - Better support of ARMv7 and x86_64 processors.
164 - Apple's `sbix' color bitmap format is now supported.
166 - Improved auto-hinter rendering for many TrueType fonts,
167 especially in the range 20-40ppem.
169 - A new face flag `FT_FACE_FLAG_COLOR' has been added (to be
170 accessed with the macro `FT_HAS_COLOR').
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.
176 - Support for a build with `cmake' has been contributed by John
177 Cary <cary@txcorp.com>.
179 - Support for x64 builds with Visual C++ has been contributed by
180 Kenneth Miller <kennethadammiller@yahoo.com>
182 - Manual pages for most demo programs have been added.
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.
189 - Improved computation of emulated vertical metrics for TrueType
190 fonts.
192 - Fixed horizontal start-up position of vertical phantom points in
193 TrueType bytecode.
196 ======================================================================
198 CHANGES BETWEEN 2.4.12 and 2.5
200 I. IMPORTANT BUG FIXES
202 - The cache manager function `FTC_Manager_Reset' didn't flush the
203 cache.
206 II. IMPORTANT CHANGES
208 - Behdad Esfahbod (on behalf of Google) contributed support for
209 color embedded bitmaps (eg. color emoji).
211 A new load flag, FT_LOAD_COLOR, makes FreeType load color
212 embedded-bitmaps, following this draft specification
214 https://color-emoji.googlecode.com/git/specification/v1.html
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.
223 Note that color bitmaps are converted to grayscale if client
224 didn't ask for color.
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.
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.
236 III. MISCELLANEOUS
238 - The property API (`FT_Property_Get' and `FT_Property_Set') is
239 now declared as stable.
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.
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'.
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.
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.
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.
264 - Another round of TrueType subpixel hinting fixes.
266 - The `apinames' tool can now create an import file for NetWare.
268 - 64bit compilation of the new CFF engine was buggy.
270 - Some fixes to improve robustness in memory-tight situations.
273 ======================================================================
275 CHANGES BETWEEN 2.4.11 and 2.4.12
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:
285 ...
286 #include FT_MODULE_H
287 #include FT_CFF_DRIVER_H
289 FT_Library library;
290 int engine = FT_CFF_HINTING_ADOBE;
293 ...
294 FT_Property_Set( library, "cff", "hinting-engine", &engine );
296 The code has a (mature) beta status; we encourage all users to
297 test it and report any problems.
299 In case you want to activate the new CFF engine unconditionally,
300 apply this patch:
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 @@
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;
315 return FT_Err_Ok;
316 --- snip ---
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.
324 II. MISCELLANEOUS
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.
330 - The `ftview' and `ftdiff' demo programs have been redesigned,
331 showing more options permanently on the screen, among other
332 minor improvements.
334 - Using the `H' key, it is now possible to select the CFF engine
335 in both `ftview' and `ftdiff'.
337 - The new command line option `-H' for `ftbench' selects the Adobe
338 CFF engine.
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'.
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.
350 - For all demo tools, the new command line option `-v' shows the
351 version.
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.
357 - The `ttdebug' program was broken and has been reactivated. Note
358 that this program is not compiled by default.
361 ======================================================================
363 CHANGES BETWEEN 2.4.10 and 2.4.11
365 I. IMPORTANT BUG FIXES
367 - Some vulnerabilities in the BDF implementation have been fixed.
368 Users of this font format should upgrade.
371 II. IMPORTANT CHANGES
373 - Subpixel hinting support has been contributed by Infinality,
374 based on Greg Hitchcock's whitepaper at
376 http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
378 Originally, it was a separate patch available from
380 http://www.infinality.net/blog/
382 and which has been integrated.
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.
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!
394 - Support for OpenType collections (OTC) has been added.
396 - Pure CFF fonts within an SFNT wrapper are now supported.
399 III. MISCELLANEOUS
401 - Minor rendering improvements to the auto-hinter.
403 - `FT_GlyphSlot_Oblique' now uses a shear angle of 12°.
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'.
409 The code is still subject to change and should not be used for
410 production.
412 - The `ftdiff' demo program now supports UTF-8 encoded input files
413 for option `-f'.
415 - Using keys `r' and `R', you can now adjust the stroker radius in
416 the `ftview' demo program.
418 - Other, minor fixes and improvements.
421 ======================================================================
423 CHANGES BETWEEN 2.4.9 and 2.4.10
425 I. IMPORTANT BUG FIXES
427 - Incremental glyph loading as needed by ghostscript was broken.
430 II. MISCELLANEOUS
432 - A new function `FT_Outline_EmboldenXY', contributed by Alexei
433 Podtelezhnikov.
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.
439 - The glyph spacing computation in `FT_GlyphSlot_Embolden' (and
440 similar code in `ftview') has been improved.
442 - Minor improvements to the TrueType bytecode interpreter and
443 glyph loader, the auto-hinter, and the B/W rasterizer.
446 ======================================================================
448 CHANGES BETWEEN 2.4.8 and 2.4.9
450 I. IMPORTANT BUG FIXES
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.
457 II. MISCELLANEOUS
459 - The `ENCODING -1 <n>' format of BDF fonts is now supported.
461 - For BDF fonts, support for the whole Unicode encoding range has
462 been added.
464 - Better TTF support for x_ppem != y_ppem.
466 - `FT_Get_Advances' sometimes returned bogus values.
468 - The demo programs no longer recognize and handle default
469 suffixes; you now have to always specify the complete font name.
471 - Better rendering and LCD mode cycling added to `ftview'.
474 ======================================================================
476 CHANGES BETWEEN 2.4.7 and 2.4.8
478 I. IMPORTANT BUG FIXES
480 - Some vulnerabilities in handling CID-keyed PostScript fonts have
481 been fixed; see CVE-2011-3439.
484 II. MISCELLANEOUS
486 - Chris Liddell contributed a new API, `FT_Get_PS_Font_Value', to
487 retrieve most of the dictionary keys in Type 1 fonts.
490 ======================================================================
492 CHANGES BETWEEN 2.4.6 and 2.4.7
494 I. IMPORTANT BUG FIXES
496 - Some vulnerabilities in handling Type 1 fonts have been fixed;
497 see CVE-2011-3256.
500 II. MISCELLANEOUS
502 - FreeType now properly handles ZapfDingbats glyph names while
503 constructing a Unicode character map (for fonts which don't have
504 one).
507 ======================================================================
509 CHANGES BETWEEN 2.4.5 and 2.4.6
511 I. IMPORTANT BUG FIXES
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.
519 - Fix CVE-2011-0226 which causes a vulnerability while handling
520 Type 1 fonts.
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.
526 - David Bevan contributed a major revision of the FreeType stroker
527 code:
529 . The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected.
531 . A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has
532 been introduced to support PostScript and PDF miter joins.
534 . FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an
535 alias for FT_STROKER_LINEJOIN_MITER.
537 . Various stroking glitches has been fixed.
540 II. MISCELLANEOUS
542 - SFNT bitmap fonts which contain an outline glyph for `.notdef'
543 only no longer set the FT_FACE_FLAG_SCALABLE flag.
546 ======================================================================
548 CHANGES BETWEEN 2.4.4 and 2.4.5
550 I. IMPORTANT BUG FIXES
552 - A rendering regression for second-order Bézier curves has been
553 fixed, introduced in 2.4.3.
556 II. IMPORTANT CHANGES
558 - If autohinting is not explicitly disabled, FreeType now uses
559 the autohinter if a TrueType based font doesn't contain native
560 hints.
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.
567 III. MISCELLANEOUS
569 - `FT_Sfnt_Table_Info' can now return the number of SFNT tables of
570 a font.
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.
576 - Bradley Grainger contributed project and solution files in
577 Visual Studio 2010 format.
579 - Again some fixes to better handle broken fonts.
581 - Some improvements to the B/W rasterizer.
583 - Fixes to the cache module to improve robustness.
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.
589 - The `ftgrid' demo program can now display autohinter segments,
590 to be toggled on and off with key `s'.
593 ======================================================================
595 CHANGES BETWEEN 2.4.3 and 2.4.4
597 I. IMPORTANT BUG FIXES
599 - UVS support (TrueType/OpenType cmap format 14) support is fixed.
600 This regression has been introduced in version 2.4.0.
603 II. MISCELLANEOUS
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.
613 - Better support for 64bit platforms.
615 - More fixes to improve handling of broken fonts.
618 ======================================================================
620 CHANGES BETWEEN 2.4.2 and 2.4.3
622 I. IMPORTANT BUG FIXES
624 - Fix rendering of certain cubic, S-shaped arcs. This regression
625 has been introduced in version 2.4.0.
628 II. MISCELLANEOUS
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.
634 - Handling of broken fonts has been further improved.
637 ======================================================================
639 CHANGES BETWEEN 2.4.1 and 2.4.2
641 I. IMPORTANT BUG FIXES
643 - A stack overflow in CFF Type2 CharStrings interpreter is fixed.
645 - Handling Type 42 font deallocation was broken; additionally, the
646 library is now more robust against malformed Type 42 fonts.
649 II. MISCELLANEOUS
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.
661 ======================================================================
663 CHANGES BETWEEN 2.4.0 and 2.4.1
665 I. IMPORTANT CHANGES
667 - A serious bug in the CFF font module prevented display of many
668 glyphs in CFF fonts like `MinionPro-Regular.otf'.
671 ======================================================================
673 CHANGES BETWEEN 2.3.12 and 2.4.0
675 I. IMPORTANT CHANGES
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).
682 - A new function `FT_Library_SetLcdFilterWeights' is available to
683 adjust the filter weights set by `FT_Library_SetLcdFilter'.
686 II. MISCELLANEOUS
688 - Thanks to many reports from Robert Święcki, FreeType's stability
689 in handling broken or damaged fonts is much improved.
691 - Support for LCD filter control has been added to the demo
692 programs `ftdiff' and `ftview'.
695 ======================================================================
697 CHANGES BETWEEN 2.3.11 and 2.3.12
699 I. IMPORTANT CHANGES
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.
706 II. MISCELLANEOUS
708 - Support for incremental font loading (controlled with the
709 FT_CONFIG_OPTION_INCREMENTAL macro) is now active by default.
711 - Better support for vertical metrics.
713 - Various minor bug fixes.
716 ======================================================================
718 CHANGES BETWEEN 2.3.10 and 2.3.11
720 I. IMPORTANT BUG FIXES
722 - Version 2.3.10 broke PCF support.
725 ======================================================================
727 CHANGES BETWEEN 2.3.10 and 2.3.9
729 I. IMPORTANT BUG FIXES
731 - If all ASCII digits in a font have the same (unscaled) width,
732 the autohinter respects this and won't change it.
734 - TrueType fonts are now rasterized correctly if the horizontal
735 and vertical resolution differ.
737 - Type 1 fonts are now handled with increased precision internally
738 to avoid serious rounding issues if non-integral coordinates are
739 encountered.
741 - Horizontally condensed CFF fonts (using the font matrix) were
742 rendered incorrectly. This bug has been introduced after
743 release 2.3.5.
746 II. IMPORTANT CHANGES
748 - Support for the SFNT cmap 13 table format (as defined by the new
749 OpenType 1.6 specification) has been added.
751 - B/W rasterization of well-hinted TrueType fonts at small sizes
752 has been greatly improved.
754 - Calculation of vertical metrics in OpenType fonts has been
755 improved.
758 III. MISCELLANEOUS
760 - It is now possible to change the emboldening factor in the
761 `ftview' demo program with keys `e' and `E'.
763 - It is now possible to change the slant value in the `ftview'
764 demo program with keys `s' and `S'.
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.
769 - Compilation of the `ftgrays' and `ftraster' modules was broken
770 in stand-alone mode.
772 - Various fixes for compilation on 64bit and 16bit architectures.
775 ======================================================================
777 CHANGES BETWEEN 2.3.9 and 2.3.8
779 I. IMPORTANT BUG FIXES
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.
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.
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.
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.
802 The FreeType team apologizes for the problem.
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.
809 - `FT_Get_Advance' (and `FT_Get_Advances') returned bad values for
810 almost all font formats except TrueType fonts.
812 - Fix a bug in the SFNT kerning table loader/parser which could
813 crash the engine if certain malformed tables were encountered.
815 - Composite SFNT bitmaps are now handled correctly.
818 II. IMPORTANT CHANGES
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.
826 III. MISCELLANEOUS
828 - `FT_Outline_Get_InsideBorder' returns FT_STROKER_BORDER_RIGHT
829 for empty outlines. This was incorrectly documented.
831 - The `ftview' demo program now supports UTF-8 encoded strings.
834 ======================================================================
836 CHANGES BETWEEN 2.3.8 and 2.3.7
838 I. IMPORTANT BUG FIXES
840 - CID-keyed fonts in an SFNT wrapper were not handled correctly.
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.
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.
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).
858 II. IMPORTANT CHANGES
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.
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).
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.
876 III. MISCELLANEOUS
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.
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:
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.
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.
895 . Tricky TrueType fonts always use the bytecode interpreter,
896 either the patented or unpatented version.
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.)
903 - In the `ftdiff' demo program you can now toggle the use of
904 FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH with key `a'.
907 ======================================================================
909 CHANGES BETWEEN 2.3.7 and 2.3.6
911 I. IMPORTANT BUG FIXES
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.
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.
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.]
931 II. IMPORTANT CHANGES
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.
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'.
945 ======================================================================
947 CHANGES BETWEEN 2.3.6 and 2.3.5
949 I. IMPORTANT BUG FIXES
951 - A bunch of potential security problems have been found. All
952 users should update.
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.
961 - Many bug fixes to the TrueType bytecode interpreter.
963 - Improved Mac support.
965 - Subsetted CID-keyed CFFs are now supported correctly.
967 - CID-keyed CFFs with subfonts which are scaled in a non-standard
968 way are now handled correctly.
970 - A call to FT_Open_Face with `face_index' < 0 crashed FreeType if
971 the font was a Windows (bitmap) FNT/FON.
974 II. IMPORTANT CHANGES
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.
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.
984 - An API for cmap 14 support (for Unicode Variant Selectors, UVS)
985 has been contributed by George Williams.
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.
992 III. MISCELLANEOUS
994 - Build support for symbian has been contributed.
996 - Better WGL4 glyph name support, contributed by Sergey Tolstov.
998 - Debugging output of the various FT_TRACEX macros is now sent to
999 stderr.
1001 - The `ftview' demo program now provides artificial slanting too.
1003 - The `ftvalid' demo program has a new option `-f' to select the
1004 font index.
1007 ======================================================================
1009 CHANGES BETWEEN 2.3.5 and 2.3.4
1011 I. IMPORTANT BUG FIXES
1013 - Some subglyphs in TrueType fonts were handled incorrectly due to
1014 a missing graphics state reinitialization.
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.
1020 - A large number of bugs have been fixed to avoid crashes and
1021 endless loops with invalid fonts.
1024 II. IMPORTANT CHANGES
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.
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.
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.
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.
1046 - A new API `FT_Face_SetUnpatentedHinting' has been added to
1047 enable or disable the unpatented hinter.
1049 - Support for Windows FON files in PE format has been contributed
1050 by Dmitry Timoshkov.
1053 III. MISCELLANEOUS
1055 - Vincent Richomme contributed Visual C++ project files for Pocket
1056 PCs.
1059 ======================================================================
1061 CHANGES BETWEEN 2.3.4 and 2.3.3
1063 I. IMPORTANT BUG FIXES
1065 - A serious bug in the handling of bitmap fonts (and bitmap
1066 strikes of outline fonts) has been introduced in 2.3.3.
1069 ======================================================================
1071 CHANGES BETWEEN 2.3.3 and 2.3.2
1073 I. IMPORTANT BUG FIXES
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).
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).
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.
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.
1096 II. MISCELLANEOUS
1098 - Fixed compilation issues on some 64-bit platforms (see ChangeLog
1099 for details).
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.
1106 ======================================================================
1108 CHANGES BETWEEN 2.3.2 and 2.3.1
1110 I. IMPORTANT BUG FIXES
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.
1116 - Negative kerning values from PFM files are now reported
1117 correctly (they were read as 16-bit unsigned values from the
1118 file).
1120 - Fixed a small memory leak when `FT_Init_FreeType' failed for
1121 some reason.
1123 - The Postscript hinter placed and sized very thin and ghost stems
1124 incorrectly.
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.
1131 II. IMPORTANT CHANGES
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.
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'.
1143 ======================================================================
1145 CHANGES BETWEEN 2.3.1 and 2.3.0
1147 I. IMPORTANT BUG FIXES
1149 - The TrueType interpreter sometimes returned incorrect horizontal
1150 metrics due to a bug in the handling of the SHZ instruction.
1152 - A typo in a security check introduced after version 2.2.1
1153 prevented FreeType to render some glyphs in CFF fonts.
1156 ======================================================================
1158 CHANGES BETWEEN 2.3.0 and 2.2.1
1160 I. IMPORTANT BUG FIXES
1162 - The PCF font loader is now much more robust while loading
1163 malformed font files.
1165 - Various memory leaks have been found and fixed.
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).
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.
1175 - `FT_GlyphSlot_Embolden' now supports vertical layouts correctly
1176 (it mangled the vertical advance height).
1178 - Fixed byte endian issues of `ftmac.c' to support Mac OS X on
1179 i386.
1181 - The PFR font loader no longer erroneously tags font files
1182 without any outlines as FT_FACE_FLAG_SCALABLE.
1185 II. NEW API FUNCTIONS
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.
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).
1198 *IMPORTANT*: This function returns an error
1199 (FT_Err_Unimplemented_Feature) in default builds of the library
1200 for patent reasons. See below.
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).
1208 Its declaration and documentation can be found in file
1209 `include/freetype/ftgasp.h' (to be accessed with macro
1210 FT_GASP_H).
1213 III. IMPORTANT CHANGES
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.
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.
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.
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.
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'.
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:
1246 http://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html
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.
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.
1257 The displayed result should be equal to normal anti-aliased
1258 rendering.
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.
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.
1268 - It is now possible to cross-compile the library easily. See the
1269 file `docs/INSTALL.CROSS' for details.
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'.
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.
1281 IV. MISCELLANEOUS
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).
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.
1293 - The Type 1 loader has been improved; as an example, it now skips
1294 top-level dictionaries properly.
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.
1299 - Configuration without `--with-old-mac-fonts' does not include
1300 `ftmac.c' (this was the behaviour in FreeType version 2.1.10).
1302 - The TrueTypeGX validator (gxvalid) checks the order of glyph IDs
1303 in the kern table.
1306 ======================================================================
1308 CHANGES BETWEEN 2.2.1 and 2.2
1310 I. IMPORTANT BUG FIXES
1312 - Various integer overflows have been fixed.
1314 - PFB fonts with MacOS resource fork weren't handled correctly on
1315 non-MacOS platforms.
1318 ======================================================================
1320 CHANGES BETWEEN 2.2 and 2.1.10
1322 (not released officially)
1324 I. IMPORTANT BUG FIXES
1326 - Vertical metrics for SFNT fonts were incorrect sometimes.
1328 - The FT_HAS_KERNING macro always returned 0.
1330 - CFF OpenType fonts didn't return correct vertical metrics for
1331 glyphs with outlines.
1333 - If FreeType was compiled without hinters, all font formats based
1334 on PS outlines weren't scaled correctly.
1337 II. IMPORTANT CHANGES
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.
1346 We provide patches for most of those rogue clients. See the
1347 following page for more information:
1349 http://www.freetype.org/freetype2/patches/rogue-patches.html
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.
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.
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.
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.
1374 - The following callback function types have changed slightly (by
1375 adding the `const' keyword where appropriate):
1377 FT_Outline_MoveToFunc
1378 FT_Outline_LineToFunc
1379 FT_Outline_ConicToFunc
1380 FT_Outline_CubicToFunc
1381 FT_SpanFunc
1382 FT_Raster_RenderFunc
1384 FT_Glyph_TransformFunc
1385 FT_Renderer_RenderFunc
1386 FT_Renderer_TransformFunc
1388 Note that this doesn't affect binary backward compatibility.
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.
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.
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.
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'.
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.
1415 III. MISCELLANEOUS
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.
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.
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.
1438 - SFNT cmap handling has been improved, mainly to run much faster
1439 with CJK fonts.
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).
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.
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).
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.
1459 - Rudimentary support for Adobe's new `SING Glyphlet' format. See
1461 http://www.adobe.com/products/indesign/sing_gaiji.html
1463 for more information.
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.
1469 - Better AFM support. This includes track kerning support.
1472 ======================================================================
1474 CHANGES BETWEEN 2.1.10 and 2.1.9
1476 I. IMPORTANT BUG FIXES
1478 - The size comparison for BDF and PCF files could fail sometimes.
1480 - Some CFF files were still not loaded correctly. Patch from
1481 Derek Noonburg.
1483 - The stroker still had some serious bugs.
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.
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.
1493 - FreeType didn't properly parse empty Type 1 glyphs.
1495 - An unbound dynamic buffer growth was fixed in the PFR loader.
1497 - Several bugs have been fixed in the cache sub-system.
1499 - FreeType behaved incorrectly when resizing two distinct but very
1500 close character pixel sizes through `FT_Set_Char_Size' (Savannah
1501 bug #12263).
1503 - The auto-hinter didn't work properly for fonts without a Unicode
1504 charmap -- it even refused to load the glyphs.
1507 II. IMPORTANT CHANGES
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).
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.
1519 - George Williams contributed code to read kerning data from PFM
1520 files.
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).
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.
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.
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.
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.
1545 - A new API `FT_Outline_Embolden' (in FT_OUTLINE_H) gives finer
1546 control how outlines are embolded.
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.
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.
1562 III. MISCELLANEOUS
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.
1569 - A new option `--ftversion' has been added to freetype-config to
1570 return the FreeType version.
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.
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.
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.
1588 - Kirill Smelkov provided patches to make src/raster/ftraster.c
1589 compile stand-alone again.
1592 ======================================================================
1594 CHANGES BETWEEN 2.1.9 and 2.1.8
1596 I. IMPORTANT BUG FIXES
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.)
1603 - `FT_Outline_Get_BBox' sometimes returned incorrect values for
1604 conic outlines (e.g., for TrueType fonts).
1606 - Handling of `bhed' table has been fixed.
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.
1612 - The BDF driver dropped the last glyph in the font.
1614 - The BDF driver now uses the DEFAULT_CHAR property (if available)
1615 to select a glyph shape for the undefined glyph.
1617 - The stroker failed for closed outlines and single points.
1620 II. IMPORTANT CHANGES
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).
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.
1634 - Loading TrueType and Type 1 fonts has been made much faster.
1636 - The stroker is no longer experimental (but the cache subsystem
1637 still is).
1640 III. MISCELLANEOUS
1642 - A new documentation file `formats.txt' describes various font
1643 formats supported (and not supported) by FreeType.
1646 ======================================================================
1648 CHANGES BETWEEN 2.1.8 and 2.1.7
1650 I. IMPORTANT BUG FIXES
1652 - The native TrueType hinter contained some bugs which prevented
1653 some fonts to be rendered correctly, most notably Legendum.otf.
1655 - The PostScript hinter now produces improved results.
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.
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.
1665 - The FT_FACE_FLAGS_GLYPH_NAMES flag is now set correctly for all
1666 font formats.
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.
1672 - Non-decimal numbers weren't parsed correctly in PS fonts.
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.
1678 - The descender metrics (face->size->metrics.descender) for WinFNT
1679 bitmap fonts had the wrong sign.
1681 - The (emulated) `seac' support for CFF fonts was broken.
1683 - The `flex' operator didn't work for CFF fonts.
1685 - PS glyphs which use the `hintmask' operator haven't been
1686 rendered correctly in some cases.
1688 - Metrics for BDF and PCF bitmap font formats have been fixed.
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.
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.
1699 II. IMPORTANT CHANGES
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'.
1705 - The PCF driver now handles bitmap fonts compressed with the LZW
1706 algorithm (extension .pcf.Z, compressed with `compress').
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.
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.
1717 - Embedded bitmaps in SFNT-based CFF fonts are now supported.
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.
1723 - YAMATO Masatake contributed improved handling of MacOS resource
1724 forks on non-MacOS platforms (for example, Linux can mount MacOS
1725 file systems).
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.
1731 - The cache sub-system has been rewritten.
1733 - There is now support for deinstallation of faces.
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).
1742 - There is now support for point scaling (i.e., providing
1743 character sizes in points + dpis, instead of pixels).
1745 - Three abstract cache classes are now available:
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.
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.
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.
1762 - The file `src/cache/ftcbasic.c' implements:
1764 FTC_ImageCache: Extends FTC_ICache; implements family
1765 definitions and glyph loading similar to the
1766 old API.
1768 FTC_SBitCache: Extends FTC_SCache, implements family
1769 definitions and glyph loading similar to the
1770 old API
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.
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.
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.
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.
1792 - The demo programs have been updated to the new code. The
1793 previous versions will not work with the current one.
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.
1799 III. MISCELLANEOUS
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.
1805 - Vitaliy Pasternak contributed project files for VS.NET 2003.
1808 ======================================================================
1810 CHANGES BETWEEN 2.1.7 and 2.1.6
1812 I. IMPORTANT BUG FIXES
1814 - Updated to newest libtool version, fixing build problems on
1815 various platforms.
1817 - On Unix platforms, `make install' didn't copy the correct
1818 `ftconfig.h' file.
1820 Note that version 2.1.7 contains the same library C source code as
1821 version 2.1.6.
1824 ======================================================================
1826 CHANGES BETWEEN 2.1.6 and 2.1.5
1828 I. IMPORTANT BUG FIXES
1830 - The PFR font driver didn't load kerning tables correctly, and
1831 the functions in FT_PFR_H didn't work at all.
1833 - Type 1 font files in binary format (PFB) with an end-of-file
1834 indicator weren't accepted by the FreeType engine.
1836 - Fonts which contain /PaintType and /StrokeWidth no longer cause
1837 a segfault. This bug has been introduced in version 2.1.5.
1839 - Fonts loaded with FT_LOAD_RENDER no longer cause strange
1840 results. This bug has been introduced in version 2.1.5.
1842 - Some Windows (bitmap) FNT/FON files couldn't be handled
1843 correctly.
1846 II. IMPORTANT CHANGES
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.
1853 NOTE: THE NEW SCHEME IS NOT COMPLETED YET. PLEASE WAIT UNTIL A
1854 FINAL ANNOUNCEMENT!
1856 - The PostScript parser has been enhanced to handle comments and
1857 strings correctly. Additionally, more syntax forms are
1858 recognized.
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).
1868 III. MISCELLANEOUS
1870 - There is now a guard in the public header files to protect
1871 against inclusion of freetype.h from FreeType 1.
1873 - Direct inclusion of freetype.h and other public header files no
1874 longer works. You have to use the documented scheme
1876 #include <ft2build.h>
1877 #include FT_FREETYPE_H
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).
1885 ======================================================================
1887 CHANGES BETWEEN 2.1.5 and 2.1.4
1889 I. IMPORTANT BUG FIXES
1891 - Parsing the /CIDFontName field now removes the leading slash to
1892 be in sync with other font drivers.
1894 - gzip support was buggy. Some fonts could not be read.
1896 - Fonts which have nested subglyphs more than one level deep no
1897 longer cause a segfault.
1899 - Creation of synthetic cmaps for fonts in CFF format was broken
1900 partially.
1902 - Numeric font dictionary entries for synthetic fonts are no
1903 longer overwritten.
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'.
1909 - The test for the charset registry in BDF and PCF fonts is now
1910 case-insensitive.
1912 - FT_Vector_Rotate sometimes returned strange values due to
1913 rounding errors.
1915 - The PCF driver now returns the correct number of glyphs
1916 (including an artificial `notdef' glyph at index 0).
1918 - FreeType now supports buggy CMaps which are contained in many
1919 CJK fonts from Dynalab.
1921 - Opening an invalid font on a Mac caused a segfault due to
1922 double-freeing memory.
1924 - BDF fonts with more than 32768 glyphs weren't supported
1925 properly.
1928 II. IMPORTANT CHANGES
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'.
1934 - The FNT driver now returns multiple faces, not multiple strikes.
1936 - The `psnames' module has been updated to the Adobe Glyph List
1937 version 2.0.
1939 - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
1941 - The algorithm for guessing the font style has been improved.
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.
1948 - ft_glyph_bbox_xxx flags are now deprecated in favour of
1949 FT_GLYPH_BBOX_XXX.
1951 - ft_module_xxx flags are now deprecated in favour of
1952 FT_MODULE_XXX.
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.
1960 III. MISCELLANEOUS
1962 - The autohinter has been further improved; for example, `m'
1963 glyphs now retain its vertical symmetry.
1965 - Partial support of Mac fonts on non-Mac platforms.
1967 - `make refdoc' (after first `make') builds the HTML
1968 documentation. You need Python for this.
1970 - The make build system should now work more reliably on DOS-like
1971 platforms.
1973 - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has
1974 been added.
1976 - Better VMS build support.
1978 - Support for the pkg-config package by providing a `freetype.pc'
1979 file.
1981 - New configure option --with-old-mac-fonts for Darwin.
1983 - Some source files have been renamed (mainly to fit into the 8.3
1984 naming scheme).
1987 ======================================================================
1989 CHANGES BETWEEN 2.1.4 and 2.1.3
1991 I. IMPORTANT BUG FIXES
1993 - Updated to newest libtool version, fixing build problems on
1994 various platforms.
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.
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').
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.
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.
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.
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.
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.
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.
2032 - The PFR driver didn't return the list of available embedded
2033 bitmaps properly.
2035 - There was a nasty memory leak when using embedded bitmaps in
2036 certain font formats.
2039 II. IMPORTANT CHANGES
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.
2045 - The FT_RENDER_MODE_LIGHT render mode was implemented.
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.
2052 - A Windows FNT specific API has been added, mostly to access font
2053 headers. This is used by Wine.
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.
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!
2065 III. MISCELLANEOUS
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.
2071 - The documentation for FT_Size_Metrics didn't appear properly in
2072 the API reference.
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).
2078 - The installation documentation has been seriously revamped.
2079 Everything is now in the `docs' directory.
2082 ======================================================================
2084 CHANGES BETWEEN 2.1.3 and 2.1.2
2086 I. IMPORTANT BUG FIXES
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).
2092 - The format 8 and 12 TrueType charmap enumeration routines have
2093 been fixed (FT_Get_Next_Char returned invalid values).
2095 - The PFR font driver returned incorrect advance widths if the
2096 outline and metrics resolution defined in the font file were
2097 different.
2099 - FT_Glyph_To_Bitmap now returns successfully when called with an
2100 FT_BitmapGlyph argument (it previously returned an error).
2102 - A bug in the Type 1 loader that prevented valid font bounding
2103 boxes to be loaded from multiple master fonts.
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.
2109 - The computation of bearings in the BDF driver has been fixed.
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).
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).
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.
2126 II. IMPORTANT CHANGES
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).
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:
2138 http://www.freetype.org/hinting/smooth-hinting.html
2140 for additional details on this topic.
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.
2147 Some new flags have been added consequently:
2149 FT_LOAD_NO_AUTOHINT :: Disable the use of the auto-hinter
2150 (but not native format hinters).
2152 FT_LOAD_TARGET_NORMAL :: Hint and render for normal
2153 anti-aliased displays.
2155 FT_LOAD_TARGET_MONO :: Hint and render for 1-bit displays.
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!
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!
2167 FT_LOAD_MONOCHROME is still supported, but only affects
2168 rendering, not the hinting.
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).
2174 - The PFR driver now supports embedded bitmaps (all formats
2175 supported), and returns correct kerning metrics for all glyphs.
2177 - The TrueType charmap loader now supports certain `broken' fonts
2178 that load under Windows without problems.
2180 - The cache API has been slightly modified (it's still a beta!):
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.
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).
2191 III. MISCELLANEOUS
2193 - Added support for the DESTDIR variable during `make install'.
2194 This simplifies packaging of FreeType.
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.
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:
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.
2213 One can regenerate the API reference by calling:
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
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.
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.
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.
2240 ======================================================================
2242 CHANGES BETWEEN 2.1.2 and 2.1.1
2244 I. IMPORTANT BUG FIXES
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.
2251 - The PFR driver had a bug in its composite loading code that
2252 produces incorrectly placed accents with many fonts.
2254 - The Type42 driver crashed sometimes due to a nasty bug.
2256 - The Type 1 custom encoding charmap didn't handle the case where
2257 the first glyph index wasn't 0.
2259 - A serious typo in the TrueType composite loader produced
2260 incorrectly placed glyphs in fonts like `Wingdings' and a few
2261 others.
2264 II. MISCELLANEOUS
2266 - The Win32 Visual C++ project file has been updated to include
2267 the PFR driver as well.
2269 - `freetype.m4' is now installed by default by `make install' on
2270 Unix systems.
2272 - The function FT_Get_PS_Font_Info now works with CID and Type42
2273 fonts as well.
2276 ======================================================================
2278 CHANGES BETWEEN 2.1.1 and 2.1.0
2280 I. IMPORTANT BUG FIXES
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).
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'.
2291 - Various MacOS and Mac OS X specific fixes.
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.
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.
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).
2311 - Fixed a bug in the Postscript hinter that prevented family blues
2312 substitution to happen correctly.
2315 II. NEW FEATURES
2317 - Three new font drivers in this release:
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).
2323 * A Type42 font driver, contributed by Roberto Alameda. It is
2324 still experimental but seems to work relatively well.
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!
2331 III. MISCELLANEOUS
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.
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.
2346 ======================================================================
2348 CHANGES BETWEEN 2.1.0 and 2.0.9
2350 I. IMPORTANT BUG FIXES
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.
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.
2361 - Fixed the parsing of accelerator tables in the PCF font driver.
2363 - Fixed the Type1 glyph loader routine used to compute the font's
2364 maximum advance width.
2367 II. NEW FEATURES
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.
2374 The Unix-specific file README.UNX has been modified accordingly.
2377 III. MISCELLANEOUS
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:
2384 """
2385 Portions of this software are copyright © 1996-2002 The
2386 FreeType Project (www.freetype.org). All rights reserved.
2387 """
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.
2394 - The FreeType 2 redesign has begun. More information can be
2395 found at this URL:
2397 http://www.freetype.org/freetype2/redesign.html
2399 The following internal changes have been performed within the
2400 sources of this release:
2402 - Many internal types have been renamed to increase
2403 consistency. The following should be true, except for
2404 public types:
2406 * All structure types have a name ending in `Rec' (short
2407 for `record').
2409 * A pointer-to-structure type has the same name as the
2410 structure, _without_ the `Rec' suffix.
2412 Example:
2414 typedef struct FooRec_
2415 {
2416 ...
2418 } FooRec, *Foo;
2420 - Many internal macros have been renamed to increase
2421 consistency. The following should be true:
2423 * All macros have a name beginning with `FT_'. This
2424 required a few changes like
2426 ALLOC => FT_ALLOC
2427 FREE => FT_FREE
2428 REALLOC => FT_REALLOC
2430 * All macros are completely UPPERCASE. This required a
2431 few changes like:
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.
2440 * Whenever possible, all macro names follow the
2441 FT_<OBJECT>_<METHOD> pattern. For example
2443 ACCESS_Frame => FT_FRAME_ENTER
2444 FORGET_Frame => FT_FRAME_EXIT
2445 EXTRACT_Frame => FT_FRAME_EXTRACT
2446 RELEASE_Frame => FT_FRAME_RELEASE
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
2454 - Many internal functions have been renamed to follow the
2455 FT_<Object>_<Method> pattern. For example:
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
2464 Note that method names do not contain `_'.
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.
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.
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').
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).
2487 More details are available in the `ChangeLog' file.
2490 ======================================================================
2492 CHANGES BETWEEN 2.0.9 and 2.0.8
2494 I. IMPORTANT BUG FIXES
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.
2500 The SFNT `name' table loader has been fixed to be able to
2501 support these strange fonts.
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.
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'.
2513 - FreeType 2 should now compile fine on AIX 4.3.3 as a shared
2514 library.
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).
2519 This improves the quality of a certain number of Postscript
2520 fonts.
2523 II. NEW FEATURES
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.
2531 - Two new APIs have been added: `FT_Get_First_Char' and
2532 `FT_Get_Next_Char'.
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.
2539 III. MISCELLANEOUS
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.
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'.
2551 ======================================================================
2553 CHANGES BETWEEN 2.0.8 and 2.0.7
2555 I. IMPORTANT BUG FIXES
2557 - There was a small but nasty bug in `freetype-config.in' which
2558 caused the `freetype-config' script to fail on Unix.
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.
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.
2568 - Various fixes to the PCF font driver.
2571 ======================================================================
2573 CHANGES BETWEEN 2.0.7 and 2.0.6
2575 I. IMPORTANT BUG FIXES
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).
2582 (This made _many_ KDE applications crash on certain systems.
2583 FreeType _is_ becoming a critical system component on Linux :-)
2585 - Fixed a memory leak in the CFF font driver.
2587 - Fixed a memory leak in the PCF font driver.
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.
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.
2597 - Fixed `builds/unix/freetype2.a4' which is used to generate a
2598 valid `freetype2.m4' for use with autoconf.
2600 - Fixed the OpenVMS Makefiles.
2603 II. MISCELLANEOUS
2605 - Added `configure' and `install' scripts to the top-level
2606 directory. A GNU-style installation is thus now easily possible
2607 with
2609 ./configure <options>
2610 make
2611 make install
2614 ======================================================================
2616 CHANGES BETWEEN 2.0.6 and 2.0.5
2618 I. IMPORTANT BUG FIXES
2620 - It wasn't possible to load embedded bitmaps when the auto-hinter
2621 was used. This is now fixed.
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).
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).
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).
2637 - `FT_Glyph_To_Bitmap' did erroneously modify the source glyph in
2638 certain cases.
2640 - `glnames.py' still contained a bug that made FreeType return
2641 invalid names for certain glyphs.
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.
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.
2653 II. IMPORTANT UPDATES AND NEW FEATURES
2655 - Important updates to the Mac-specific parts of the library.
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).
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.
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.
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.
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.
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.
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.
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).
2693 III. MISCELLANEOUS
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.
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.
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.
2711 We also hope that this scheme will allow much more frequent
2712 releases than in the past.
2715 ======================================================================
2717 CHANGES BETWEEN 2.0.5 and 2.0.4
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)
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.
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.
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)
2735 - Fixed a serious typo in `src/base/ftcalc.c' which caused invalid
2736 computations in certain rare cases, producing ugly artefacts.
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.
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).
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.
2749 - Added a new function named `FT_Get_Postscript_Name' to retrieve
2750 the `unique' Postscript font name of a given face.
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.
2756 - Fixed a reallocation bug that generated a dangling pointer (and
2757 possibly memory leaks) with Postscript fonts (in
2758 src/psaux/psobjs.c).
2760 - Many fixes for 16-bit correctness.
2762 - Removed many pedantic compiler warnings from the sources.
2764 - Added an Amiga build directory in `builds/amiga'.
2767 ======================================================================
2769 CHANGES BETWEEN 2.0.4 and 2.0.3
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.
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.
2780 - Fixed a bug that prevented the linear advance width of composite
2781 TrueType glyphs to be correctly returned.
2783 - Fixed the Visual C++ project files located in
2784 `builds/win32/visualc' (previous versions used older names of the
2785 library).
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!
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.
2796 - Updated the Unix-specific portions of the build system (new
2797 libtool version, etc.).
2799 - The SFNT kerning loader now ensures that the table is sorted
2800 (since some problem fonts do not meet this requirement).
2803 =======================================================================
2805 CHANGES BETWEEN 2.0.3 and 2.0.2
2807 I. CHANGES TO THE MODULES / FONT DRIVERS
2809 - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix
2810 several annoying artefacts, mainly:
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.
2816 - Overshoot thresholding wasn't performed correctly, creating
2817 unpleasant artefacts at large character pixel sizes.
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.
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.
2828 - The PCF driver has been fixed. It reported invalid glyph
2829 dimensions for the fonts available on Solaris.
2831 - The Type 1, CID and CFF drivers have been modified to fix the
2832 computation of the EM size.
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).
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!
2843 II. HIGH-LEVEL API CHANGES
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.
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.
2857 III. INTERNALS
2859 - Added BeOS-specific files in the old build sub-system. Note
2860 that no changes were required to compile the library with Jam.
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.
2867 - A small memory leak that happened when opening 0-sized files
2868 (duh!) have been fixed.
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.
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.
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.
2883 - Hexadecimal constants have been suffixed with `U' to avoid
2884 problems with certain compilers on 64-bit platforms.
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.
2890 - The DocMaker tool has been moved from `docs' to `src/tools' and
2891 has been updated with the following:
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.
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.
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.
2905 - Now generates the current time/data on each generated page
2906 in order to distinguish between versions.
2908 DocMaker can be used with other projects now, not only FT2
2909 (e.g. MLib, FTLayout, etc.).
2912 ======================================================================
2914 CHANGES BETWEEN 2.0.2 and 2.0.1
2916 I. CHANGES TO THE MODULES / FONT DRIVERS
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.
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'.
2929 - The CFF driver has been improved by Tom Kacvinsky and Sander van
2930 der Wal:
2932 * Support for `seac' emulation.
2933 * Support for `dotsection'.
2934 * Support for retrieving glyph names through
2935 `FT_Get_Glyph_Name'.
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.
2940 - The Type 1 driver was also improved by Tom & others:
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).
2948 - Various other bugfixes, including the following:
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.
2959 II. CHANGES TO THE HIGH-LEVEL API
2961 - The library header files inclusion scheme has been changed. The
2962 old scheme looked like:
2964 #include <freetype/freetype.h>
2965 #include <freetype/ftglyph.h>
2966 #include <freetype/ftcache.h>
2967 #include <freetype/cache/ftimage.h>
2969 Now you should use:
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
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).
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.
2986 For more information, see section I of the following document:
2988 http://www.freetype.org/
2989 freetype2/docs/tutorial/step1.html
2991 or
2993 http://freetype.sourceforge.net/
2994 freetype2/docs/tutorial/step1.html
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.
3000 The latter has been updated to support the grouping of sections
3001 in chapters and better index sort. See:
3003 http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
3006 III. CHANGES TO THE BUILD PROCESS
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.
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.
3016 So, if you were doing something like:
3018 cc -c -Iinclude -Isrc src/base/ftbase.c
3020 change the line to:
3022 cc -c -Iinclude -Isrc/base src/base/ftbase.c
3024 If you were doing something like:
3026 cd src/base
3027 cc -c -I../../include -I.. ftbase.c
3029 change it to:
3031 cd src/base
3032 cc -c -I../../include ftbase.c
3035 ======================================================================
3037 CHANGES BETWEEN 2.0.1 and 2.0
3039 2.0.1 introduces a few changes:
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.
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.
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.
3055 - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
3056 a conic Bezier arc.
3058 - Updated the INSTALL file to add IDE compilation.
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.
3064 - Fixed some problems with `freetype-config'.
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).
3070 And very special thanks to Tom Kacvinsky and YAMANO-UCHI Hidetoshi
3071 for their contributions!
3074 ======================================================================
3076 CHANGES BETWEEN beta8 and 2.0
3078 - Changed the default installation path for public headers from
3079 `include/freetype' to `include/freetype2'.
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.
3086 - Fixed several small bugs:
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.
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).
3101 - Changed `cid' to use `psaux' too.
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.
3107 - Updated `docs/docmaker.py', a draft API reference is available at
3108 http://www.freetype.org/ft2api.html.
3110 - Changed `type1' to use `psaux'.
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.
3116 - Fixed an important bug in `FT_Glyph_Get_CBox'.
3118 - Fixed some compiler warnings that happened since the TrueType
3119 bytecode decoder was deactivated by default.
3121 - Fixed two memory leaks:
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.
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.
3135 ======================================================================
3137 BETA-8 (RELEASE CANDIDATE) CHANGES
3139 - Deactivated the TrueType bytecode interpreter by default.
3141 - Deactivated the `src/type1' font driver. Now `src/type1z' is used
3142 by default.
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.
3148 - Added the auto-hinting module! Fixing some bugs here and there.
3150 - Found some bugs in the composite loader (seac) of the Type1-based
3151 font drivers.
3153 - Renamed the directory `freetype2/config' to `freetype2/builds' and
3154 updated all relevant files.
3156 - Found a memory leak in the `type1' driver.
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 :-)
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.
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.
3170 I'm still working on the PCF/BDF drivers, but I'm too lazy to
3171 finish them now.
3173 - CHANGES TO THE HIGH-LEVEL API
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.
3195 - CHANGES TO THE `ftglyph.h' API
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.
3203 - Added support for CID-keyed fonts to the CFF driver. Maybe
3204 support for pure CFF + CEF fonts should come in?
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.
3210 `make multi' now works well :-)
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.
3216 - ADDED SUPPORT FOR THE AUTO-HINTER
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.
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.
3227 Now, I need to release this thing to the FreeType 2 source.
3229 - CHANGES TO THE RENDERER MODULES
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.
3235 I ditched the 5-gray-levels renderers. Basically, it involved a
3236 simple #define toggle in 'src/raster1/ftraster.c'.
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.
3246 Changed the demo programs accordingly.
3248 - MAJOR INTERNAL REDESIGN:
3250 A lot of internal modifications have been performed lately on the
3251 source in order to provide the following enhancements:
3253 * More generic module support:
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.
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.
3264 * Support for generic glyph image types:
3266 The FT_Renderer type is a pointer to a module used to perform
3267 various operations on glyph image.
3269 Each renderer is capable of handling images in a single format
3270 (e.g. ft_glyph_format_outline). Its functions are used to:
3272 - transform an glyph image
3273 - render a glyph image into a bitmap
3274 - return the control box (dimensions) of a given glyph image
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.
3280 One corresponds to the `standard' scan-converter, the other to
3281 the `smooth' one.
3283 he current renderer can be set through the new function
3284 FT_Set_Renderer.
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:
3289 FT_Get_Renderer
3290 FT_Set_Renderer
3292 See the file <freetype/ftrender.h> for more details.
3294 These changes were necessary to properly support different
3295 scalable formats in the future, like bi-color glyphs, etc.
3297 * Glyph loader object:
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.
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.
3307 See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
3308 more information.
3310 * FT_GlyphSlot has new fields:
3312 In order to support extended features (see below), the
3313 FT_GlyphSlot structure has a few new fields:
3315 linearHoriAdvance:
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.
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.
3326 Note that the two above field replace the removed `metrics2'
3327 field in the glyph slot.
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.
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.
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.
3348 loader:
3349 This is a new private field for the glyph slot. Client
3350 applications should not touch it.
3353 * Support for transforms and direct rendering in FT_Load_Glyph:
3355 Most of the functionality found in <freetype/ftglyph.h> has been
3356 moved to the core library. Hence, the following:
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.
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.
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.
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.
3383 ======================================================================
3385 OLD CHANGES FOR BETA 7
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 :-)
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..)
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..
3399 - fixed two bugs in the smooth renderer (src/base/ftgrays.c).
3400 Thanks to Boris Letocha for spotting them and providing a fix.
3402 - fixed potential `divide by zero' bugs in ftcalc.c.
3404 - added source code for the OpenType/CFF driver (still incomplete
3405 though..)
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..
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..)
3416 - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
3417 to minimally speed it up..
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.
3423 The new file `src/base/ftmm.c' is also optional to the engine..
3425 - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) +
3426 small bug fixes in FT_Load_Glyph, the `type1' driver, etc..
3428 - a minor fix to the Type 1 driver to let them apply the font matrix
3429 correctly (used for many oblique fonts..)
3431 - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
3432 to use %p instead of %lx). Thanks to Karl Robillard.
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 ??).
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 ;-)
3443 - removed TT_MAX_SUBGLYPHS, there is no static limit on the number
3444 of subglyphs in a TrueType font now..
3447 ======================================================================
3449 OLD CHANGES 16 May 2000
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..
3454 - various obsolete files were removed, and copyright header updated
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..)
3460 - created new header files, and modified sources accordingly:
3462 <freetype/fttypes.h>
3463 - simple FreeType types, without the API
3464 <freetype/internal/ftmemory.h>
3465 - definition of memory-management macros
3467 - added the `DSIG' (OpenType Digital Signature) tag to
3468 <freetype/tttags.h>
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:
3474 gcc with `-ansi -pedantic -Wall -W', Visual C++ with `/W3 /WX' and
3475 LCC
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..
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.
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..
3504 Of course, this needed a lot of changes throughout the source code
3505 to make it compile again... All cleaned up now, apparently..
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..)
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..
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).
3522 - updated the tutorial (not finished though).
3524 - updated the top-level BUILD document
3526 - fixed a potential memory leak that could occur when loading
3527 embedded bitmaps.
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').
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.
3537 - major directory hierarchy re-organisation. This was done for two
3538 things:
3540 * first, to ease the `manual' compilation of the library by
3541 requiring at lot less include paths :-)
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.
3548 Basically, you should now use the 'freetype/' prefix for header
3549 inclusion, as in:
3551 #include <freetype/freetype.h>
3552 #include <freetype/ftglyph.h>
3554 Some new include sub-directories are available:
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.
3561 #include <freetype/config/ftoption.h>
3562 #include <freetype/config/ftconfig.h>
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.
3570 As usual, the build system and the demos have been updated to
3571 reflect the change..
3573 Here's a layout of the new directory hierarchy:
3575 TOP_DIR
3576 include/
3577 freetype/
3578 freetype.h
3579 ...
3580 config/
3581 ftoption.h
3582 ftconfig.h
3583 ftmodule.h
3585 internal/
3586 ftobjs.h
3587 ftstream.h
3588 ftcalc.h
3589 ...
3591 src/
3592 base/
3593 ...
3595 sfnt/
3596 psnames/
3597 truetype/
3598 type1/
3599 type1z/
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:
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..
3609 (of course, using -Iconfig/<system> if you provide system-specific
3610 configuration files).
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..
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)
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..
3625 - some cleanups in the source code to get rid of warnings when
3626 compiling with the `-Wall -W -ansi -pedantic' options in gcc.
3628 - debugged and moved the smooth renderer to `src/base/ftgrays.c' and
3629 its header to `include/ftgrays.h'
3631 - updated TT_MAX_SUBGLYPHS to 96 as some CJK fonts have composites
3632 with up to 80 sub-glyphs !! Thanks to Werner
3635 ======================================================================
3637 OLD CHANGES - 14-apr-2000
3639 - fixed a bug in the TrueType glyph loader that prevented the
3640 correct loading of some CJK glyphs in mingli.ttf
3642 - improved the standard Type 1 hinter in `src/type1'
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..)
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..
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
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).
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'.
3667 - fixed a small bug in FT_MulFix that caused incorrect transform
3668 computation!
3670 - Note: The tutorial is out-of-date.
3673 ======================================================================
3675 OLD CHANGES - 12-mar-2000
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>'.
3682 - moved all configuration macros to `config/ftoption.h'
3684 - improvements in the Type 1 driver with AFM support
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'.
3690 - introduced new flags in FT_Outline.flags (see
3691 ft_outline_.... enums in `ftimage.h').
3693 - changed outline functions to `FT_Outline_<action>' syntax
3695 - added a smooth anti-alias renderer to the demonstration programs
3697 - added Mac graphics driver (thanks Just)
3699 - FT_Open_Face changed in order to received a pointer to a
3700 FT_Open_Args descriptor..
3702 - various cleanups, a few more API functions implemented (see
3703 FT_Attach_File)
3705 - updated some docs
3708 ======================================================================
3710 OLD CHANGES - 22-feb-2000
3712 - introduced the `psnames' module. It is used to:
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).
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)).
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).
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).
3737 Trivial AFM support has been added to read kerning information but
3738 wasn't exactly tested as it should ;-)
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..
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.
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..
3756 TODO
3758 - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
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.
3764 - Update the tutorial!
3766 - consider adding support for Multiple Master fonts in the Type 1
3767 drivers.
3769 - Test the AFM routines of the Type 1 drivers to check that kerning
3770 information is returned correctly.
3772 - write a decent auto-gridding component !! We need this to release
3773 FreeType 2.0 gold !
3776 less urgent needs:
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
3784 ======================================================================
3786 OLDER CHANGES - 27-jan-2000
3788 - updated the `sfnt' module interface to allow several SFNT-based
3789 drivers to co-exist peacefully
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..
3795 - added an experimental replacement Type 1 driver featuring advanced
3796 (and speedy) pattern matching to retrieve the data from postscript
3797 fonts.
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).
3804 ======================================================================
3806 OLD MESSAGE
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:
3812 Table Of Contents:
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
3822 ----------------------------------------------------------------------
3824 High-Level Interface:
3826 The high-level API has been considerably simplified. Here is how:
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)
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.
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'
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:
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
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
3859 ----------------------------------------------------------------------
3861 Directory Structure:
3863 Should seem obvious to most of you:
3865 freetype/
3866 config/ -- configuration sub-makefiles
3867 ansi/
3868 unix/ -- platform-specific configuration files
3869 win32/
3870 os2/
3871 msdos/
3873 include/ -- public header files, those to be included
3874 directly by client apps
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
3884 demos/ -- demos/tools
3886 docs/ -- documentation (a bit empty for now)
3889 ----------------------------------------------------------------------
3891 Glyph Image Formats:
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 ??).
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.
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.
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..
3913 ----------------------------------------------------------------------
3915 Build system:
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 :
3920 - automatic host platform detection (reverting to 'config/ansi' if
3921 it is not detected, with pseudo-standard compilation flags)
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.
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.
3932 Here's how it works:
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.
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.
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.
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:
3955 gnumake setup lcc on Win32 to use the LCC compiler
3956 gnumake setup visualc on Win32 to use Visual C++
3958 See the file `config/<system>/detect.mk' for a list of supported
3959 compilers for your platforms.
3961 It should be relatively easy to write new detection rules files and
3962 config.mk..
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..
3969 ----------------------------------------------------------------------
3971 Portability:
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:
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.
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).
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.
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).
3999 See the file `include/ftsystem.h' for more details, as well as the
4000 implementations found in `config/unix' and `config/ansi'.
4003 ----------------------------------------------------------------------
4005 Font Drivers:
4007 The Font Driver interface has been modified in order to support
4008 extensions & versioning.
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'.
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.
4020 Hence, one should call `make modules' each time a font driver is
4021 added or removed from the `src' directory.
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..
4030 ----------------------------------------------------------------------
4032 Extensions support:
4034 The extensions support is inspired by the one found in 1.x.
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.
4040 Extension ids are now strings, rather than 4-byte tags, as this is
4041 usually more readable.
4043 Each extension has:
4044 - some data, associated to each face object
4045 - an interface (table of function pointers)
4047 An extension that is format-specific should simply register itself
4048 to the correct font driver. Here is some example code:
4050 // Registering an extensions
4051 //
4052 FT_Error FT_Init_XXXX_Extension( FT_Library library )
4053 {
4054 FT_DriverInterface* tt_driver;
4056 driver = FT_Get_Driver( library, "truetype" );
4057 if (!driver) return FT_Err_Unimplemented_Feature;
4059 return FT_Register_Extension( driver, &extension_class );
4060 }
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;
4070 ext = FT_Get_Extension( face, "extensionid", &ext_interface );
4071 if (!ext) return error;
4073 return ext_interface->do_it(ext);
4074 }
4076 ------------------------------------------------------------------------
4078 Copyright 2000-2013 by
4079 David Turner, Robert Wilhelm, and Werner Lemberg.
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.
4088 Local Variables:
4089 version-control: never
4090 coding: utf-8
4091 End:
4093 --- end of CHANGES ---