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