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