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