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