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