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