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