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