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