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