1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/modules/freetype2/docs/CHANGES Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,4093 @@ 1.4 + 1.5 +CHANGES BETWEEN 2.5.2 and 2.5.3 1.6 + 1.7 + I. IMPORTANT BUG FIXES 1.8 + 1.9 + - A vulnerability was identified and fixed in the new CFF driver 1.10 + (cf. http://savannah.nongnu.org/bugs/?41697; it doesn't have a 1.11 + CVE number yet). All users should upgrade. 1.12 + 1.13 + - More bug fixes related to correct positioning of composite 1.14 + glyphs. 1.15 + 1.16 + - Many fixes to better protect against malformed input. 1.17 + 1.18 + 1.19 + II. IMPORTANT CHANGES 1.20 + 1.21 + - FreeType can now use the HarfBuzz library to greatly improve the 1.22 + auto-hinting of fonts that use OpenType features: Many glyphs 1.23 + that are part of such features but don't have cmap entries are 1.24 + now handled properly, for example small caps or superscripts. 1.25 + Define the configuration macro FT_CONFIG_OPTION_USE_HARFBUZZ to 1.26 + activate HarfBuzz support. 1.27 + 1.28 + You need HarfBuzz version 0.9.19 or newer. 1.29 + 1.30 + Note that HarfBuzz depends on FreeType; this currently causes a 1.31 + chicken-and-egg problem that can be solved as follows in case 1.32 + HarfBuzz is not yet installed on your system. 1.33 + 1.34 + 1. Compile and install FreeType without the configuration 1.35 + macro FT_CONFIG_OPTION_USE_HARFBUZZ. 1.36 + 1.37 + 2. Compile and install HarfBuzz. 1.38 + 1.39 + 3. Define macro FT_CONFIG_OPTION_USE_HARFBUZZ, then compile 1.40 + and install FreeType again. 1.41 + 1.42 + With FreeType's `configure' script the procedure boils down to 1.43 + configure, build, and install Freetype, then configure, compile, 1.44 + and install HarfBuzz, then configure, compile, and install 1.45 + FreeType again (after executing `make distclean'). 1.46 + 1.47 + - All libraries FreeType depends on are now checked using the 1.48 + `pkg-config' configuration files first, followed by alternative 1.49 + methods. 1.50 + 1.51 + - The new value `auto' for the various `--with-XXX' library 1.52 + options (for example `--with-harfbuzz=auto') makes the 1.53 + `configure' script automatically link to the libraries it finds. 1.54 + This is now the default. 1.55 + 1.56 + - In case FreeType's `configure' script can't find a library, you 1.57 + can pass environment variables to circumvent pkg-config, and 1.58 + those variables have been harmonized as a consequence of the 1.59 + changes mentioned above: 1.60 + 1.61 + LIBZ -> removed; use LIBZ_CFLAGS and LIBZ_LIBS 1.62 + LIBBZ2 -> removed; use BZIP2_CFLAGS and BZIP2_LIBS 1.63 + LIBPNG_LDFLAGS -> LIBPNG_LIBS 1.64 + 1.65 + `./configure --help' shows all available environment variables. 1.66 + 1.67 + - The `freetype-config' script now understands option `--static' 1.68 + to emit static linking information. 1.69 + 1.70 + 1.71 +====================================================================== 1.72 + 1.73 +CHANGES BETWEEN 2.5.1 and 2.5.2 1.74 + 1.75 + I. IMPORTANT BUG FIXES 1.76 + 1.77 + - Improving the display of some broken TrueType fonts introduced a 1.78 + bug that made FreeType crash on some popular (but not fully 1.79 + conformant) fonts like `ahronbd.ttf'. 1.80 + 1.81 + - Another round of improvements to correct positioning and hinting 1.82 + of composite glyphs in TrueType fonts. 1.83 + 1.84 + 1.85 + II. MISCELLANEOUS 1.86 + 1.87 + - Version 2.5.1 introduced a bug in handling embedded bitmap 1.88 + strikes of TrueType fonts, causing garbage display under some 1.89 + circumstances. 1.90 + 1.91 + - The `ftgrid' demo program couldn't be compiled in 1.92 + non-development builds. 1.93 + 1.94 + 1.95 +====================================================================== 1.96 + 1.97 +CHANGES BETWEEN 2.5 and 2.5.1 1.98 + 1.99 + I. IMPORTANT BUG FIXES 1.100 + 1.101 + - For some WinFNT files, the last glyph wasn't displayed but 1.102 + incorrectly marked as invalid. 1.103 + 1.104 + - The vertical size of glyphs was incorrectly set after a call to 1.105 + `FT_GlyphSlot_Embolden', resulting in clipped glyphs. 1.106 + 1.107 + - Many fields of the `PCLT' table in SFNT based fonts (if accessed 1.108 + with `FT_Get_Sfnt_Table') were computed incorrectly. 1.109 + 1.110 + - In TrueType fonts, hinting of composite glyphs could sometimes 1.111 + deliver incorrect positions of components or even distorted 1.112 + shapes. 1.113 + 1.114 + 1.115 + II. IMPORTANT CHANGES 1.116 + 1.117 + - WOFF font format support has been added. 1.118 + 1.119 + - The auto-hinter now supports Hebrew. Greek and Cyrillic support 1.120 + has been improved. 1.121 + 1.122 + - Support for the forthcoming `OS/2' SFNT table version 5, as can 1.123 + be found e.g. in the `Sitka' font family for Windows 8.1. 1.124 + 1.125 + - The header file layout has been changed. After installation, 1.126 + all files are now located in `<prefix>/include/freetype2'. 1.127 + 1.128 + Applications that use (a) `freetype-config' or FreeType's 1.129 + `pkg-config' file to get the include directory for the compiler, 1.130 + and (b) the documented way for header inclusion like 1.131 + 1.132 + #include <ft2build.h> 1.133 + #include FT_FREETYPE_H 1.134 + ... 1.135 + 1.136 + don't need any change to the source code. 1.137 + 1.138 + 1.139 + III. MISCELLANEOUS 1.140 + 1.141 + - The stem darkening feature of the new CFF engine can now be 1.142 + fine-tuned with the new `darkening-parameters' property. 1.143 + 1.144 + - `ftgrid' has been updated to toggle various engines with the `H' 1.145 + key, similar to `ftview' and `ftdiff'. 1.146 + 1.147 + - The functionality of `ttdebug' has been greatly enhanced. 1.148 + 1.149 + . It now displays twilight, storage, and control value data; key 1.150 + `T' shows the twilight point table, key `S' the storage data, 1.151 + and key `C' the control value table. 1.152 + 1.153 + . Some keys have been reassigned from lowercase to their 1.154 + uppercase equivalents; for example `q' to quit the program is 1.155 + now `Q'. 1.156 + 1.157 + . Key `f' finishes the current function. 1.158 + 1.159 + . Key `R' restarts the debugger. 1.160 + 1.161 + . Keys `b' and `p' set a breakpoint. 1.162 + 1.163 + . Key `B' provides a function call backtrace. 1.164 + 1.165 + - Better support of ARMv7 and x86_64 processors. 1.166 + 1.167 + - Apple's `sbix' color bitmap format is now supported. 1.168 + 1.169 + - Improved auto-hinter rendering for many TrueType fonts, 1.170 + especially in the range 20-40ppem. 1.171 + 1.172 + - A new face flag `FT_FACE_FLAG_COLOR' has been added (to be 1.173 + accessed with the macro `FT_HAS_COLOR'). 1.174 + 1.175 + - `FT_Gzip_Uncompress' (modeled after zlib's `uncompress' 1.176 + function) has been added; this is a by-product of the newly 1.177 + added WOFF support. 1.178 + 1.179 + - Support for a build with `cmake' has been contributed by John 1.180 + Cary <cary@txcorp.com>. 1.181 + 1.182 + - Support for x64 builds with Visual C++ has been contributed by 1.183 + Kenneth Miller <kennethadammiller@yahoo.com> 1.184 + 1.185 + - Manual pages for most demo programs have been added. 1.186 + 1.187 + - The GETINFO bytecode instruction for TrueType fonts was buggy if 1.188 + used to retrieve subpixel hinting information. It was necessary 1.189 + to set selector bit 6 to get results for selector bits 7-10, 1.190 + which is wrong. 1.191 + 1.192 + - Improved computation of emulated vertical metrics for TrueType 1.193 + fonts. 1.194 + 1.195 + - Fixed horizontal start-up position of vertical phantom points in 1.196 + TrueType bytecode. 1.197 + 1.198 + 1.199 +====================================================================== 1.200 + 1.201 +CHANGES BETWEEN 2.4.12 and 2.5 1.202 + 1.203 + I. IMPORTANT BUG FIXES 1.204 + 1.205 + - The cache manager function `FTC_Manager_Reset' didn't flush the 1.206 + cache. 1.207 + 1.208 + 1.209 + II. IMPORTANT CHANGES 1.210 + 1.211 + - Behdad Esfahbod (on behalf of Google) contributed support for 1.212 + color embedded bitmaps (eg. color emoji). 1.213 + 1.214 + A new load flag, FT_LOAD_COLOR, makes FreeType load color 1.215 + embedded-bitmaps, following this draft specification 1.216 + 1.217 + https://color-emoji.googlecode.com/git/specification/v1.html 1.218 + 1.219 + which defines two new SFNT tables, `CBDT' and `CBLC' (named and 1.220 + modeled after `EBDT' and `EBLC', respectively). The color 1.221 + bitmaps are stored in the new FT_PIXEL_MODE_BGRA format to 1.222 + represent BGRA pre-multiplied sRGB images. If PNG support is 1.223 + available, PNG color images as defined in the same proposed 1.224 + specification are supported also. 1.225 + 1.226 + Note that color bitmaps are converted to grayscale if client 1.227 + didn't ask for color. 1.228 + 1.229 + - As announced in the previous release, the old FreeType CFF 1.230 + engine is now disabled by default. It can be conditionally 1.231 + compiled by defining the configuration macro 1.232 + CFF_CONFIG_OPTION_OLD_ENGINE. 1.233 + 1.234 + - As announced in the previous release, all code related to macro 1.235 + FT_CONFIG_OPTION_OLD_INTERNALS has been removed, thus becoming 1.236 + obsolete. 1.237 + 1.238 + 1.239 + III. MISCELLANEOUS 1.240 + 1.241 + - The property API (`FT_Property_Get' and `FT_Property_Set') is 1.242 + now declared as stable. 1.243 + 1.244 + The exception, however, are the experimental auto-hinter 1.245 + properties `glyph-to-script-map' and `fallback-script' which are 1.246 + subject to change in a forthcoming release. 1.247 + 1.248 + - `ftview' has been updated to support color embedded bitmaps; it 1.249 + can be toggled on and off with key `c'. The small cache toggle 1.250 + is now key `K'. 1.251 + 1.252 + - It is now possible to control the version of the TrueType 1.253 + hinting engine using the new `interpreter-version' property of 1.254 + the `truetype' module: Versions 35 and 38 (the default) are 1.255 + supported, which roughly corresponds to disable and enable 1.256 + subpixel hinting support, respectively. 1.257 + 1.258 + In both `ftview' and `ftdiff', switching between the two 1.259 + versions can be done with key `H'. In the `ftbench' demo 1.260 + program, command line option `-H' has been extended to activate 1.261 + the non-default interpreter version. 1.262 + 1.263 + - The `ttdebug' program has been further improved. In particular, 1.264 + it accepts a new command line option `-H' to select the hinting 1.265 + engine. 1.266 + 1.267 + - Another round of TrueType subpixel hinting fixes. 1.268 + 1.269 + - The `apinames' tool can now create an import file for NetWare. 1.270 + 1.271 + - 64bit compilation of the new CFF engine was buggy. 1.272 + 1.273 + - Some fixes to improve robustness in memory-tight situations. 1.274 + 1.275 + 1.276 +====================================================================== 1.277 + 1.278 +CHANGES BETWEEN 2.4.11 and 2.4.12 1.279 + 1.280 + - We have another CFF parsing and hinting engine! Written by Dave 1.281 + Arnold <darnold@adobe.com>, this work has been contributed by 1.282 + Adobe in collaboration with Google. It is vastly superior to 1.283 + the old CFF engine, and it will replace it in the next release. 1.284 + Right now, it is still off by default, and you have to 1.285 + explicitly select it using the new `hinting-engine' property of 1.286 + the cff driver: 1.287 + 1.288 + ... 1.289 + #include FT_MODULE_H 1.290 + #include FT_CFF_DRIVER_H 1.291 + 1.292 + FT_Library library; 1.293 + int engine = FT_CFF_HINTING_ADOBE; 1.294 + 1.295 + 1.296 + ... 1.297 + FT_Property_Set( library, "cff", "hinting-engine", &engine ); 1.298 + 1.299 + The code has a (mature) beta status; we encourage all users to 1.300 + test it and report any problems. 1.301 + 1.302 + In case you want to activate the new CFF engine unconditionally, 1.303 + apply this patch: 1.304 + 1.305 +--- snip --- 1.306 +diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c 1.307 +index ebcf189..3f2ce6b 100644 1.308 +--- a/src/cff/cffobjs.c 1.309 ++++ b/src/cff/cffobjs.c 1.310 +@@ -1056,7 +1056,7 @@ 1.311 + 1.312 + 1.313 + /* set default property values */ 1.314 +- driver->hinting_engine = FT_CFF_HINTING_FREETYPE; 1.315 ++ driver->hinting_engine = FT_CFF_HINTING_ADOBE; 1.316 + driver->no_stem_darkening = FALSE; 1.317 + 1.318 + return FT_Err_Ok; 1.319 +--- snip --- 1.320 + 1.321 + - The macro FT_CONFIG_OPTION_OLD_INTERNALS is no longer set by 1.322 + default. In the next release, we will completely remove the 1.323 + associated code. Please update your programs in case you are 1.324 + still using this macro. 1.325 + 1.326 + 1.327 + II. MISCELLANEOUS 1.328 + 1.329 + - The (top-level) `configure' script now respects the MAKE 1.330 + environment variable to specify a `make' binary. For backwards 1.331 + compatibility, GNUMAKE still overrides MAKE, though. 1.332 + 1.333 + - The `ftview' and `ftdiff' demo programs have been redesigned, 1.334 + showing more options permanently on the screen, among other 1.335 + minor improvements. 1.336 + 1.337 + - Using the `H' key, it is now possible to select the CFF engine 1.338 + in both `ftview' and `ftdiff'. 1.339 + 1.340 + - The new command line option `-H' for `ftbench' selects the Adobe 1.341 + CFF engine. 1.342 + 1.343 + - It is now possible to directly select the LCD rendering mode 1.344 + with the keys `A'-`F' in `ftview'. The key mapping for cycling 1.345 + through LCD modes has been changed from `K' and `L' to `k' and 1.346 + `l', and toggling custom LCD filtering is no longer mapped to 1.347 + key `F' but to key `L'. 1.348 + 1.349 + - In `ftdiff', key `x' toggles between layout modes: Either use 1.350 + the advance width (this is new and now the default) or the 1.351 + bounding box information to determine line breaks. 1.352 + 1.353 + - For all demo tools, the new command line option `-v' shows the 1.354 + version. 1.355 + 1.356 + - For the demo tools with a GUI, the new command line options `-w' 1.357 + and `-h' select the width and the height of the output window, 1.358 + respectively. 1.359 + 1.360 + - The `ttdebug' program was broken and has been reactivated. Note 1.361 + that this program is not compiled by default. 1.362 + 1.363 + 1.364 +====================================================================== 1.365 + 1.366 +CHANGES BETWEEN 2.4.10 and 2.4.11 1.367 + 1.368 + I. IMPORTANT BUG FIXES 1.369 + 1.370 + - Some vulnerabilities in the BDF implementation have been fixed. 1.371 + Users of this font format should upgrade. 1.372 + 1.373 + 1.374 + II. IMPORTANT CHANGES 1.375 + 1.376 + - Subpixel hinting support has been contributed by Infinality, 1.377 + based on Greg Hitchcock's whitepaper at 1.378 + 1.379 + http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx 1.380 + 1.381 + Originally, it was a separate patch available from 1.382 + 1.383 + http://www.infinality.net/blog/ 1.384 + 1.385 + and which has been integrated. 1.386 + 1.387 + Note that ClearType support is not completely implemented! In 1.388 + particular, full support for the options `compatible_widths', 1.389 + `symmetrical_smoothing, and `bgr' (via the GETINFO bytecode 1.390 + instruction) is missing. 1.391 + 1.392 + Activation of subpixel hinting support can be controlled with 1.393 + the `TT_CONFIG_OPTION_SUBPIXEL_HINTING' configuration option; it 1.394 + is switched off by default. This feature is still experimental; 1.395 + we welcome test reports! 1.396 + 1.397 + - Support for OpenType collections (OTC) has been added. 1.398 + 1.399 + - Pure CFF fonts within an SFNT wrapper are now supported. 1.400 + 1.401 + 1.402 + III. MISCELLANEOUS 1.403 + 1.404 + - Minor rendering improvements to the auto-hinter. 1.405 + 1.406 + - `FT_GlyphSlot_Oblique' now uses a shear angle of 12°. 1.407 + 1.408 + - Experimental support to handle `property modules', for example 1.409 + to control the behaviour of the auto-hinter. The API consists 1.410 + of two new functions, `FT_Property_Set' and `FT_Property_Get'. 1.411 + 1.412 + The code is still subject to change and should not be used for 1.413 + production. 1.414 + 1.415 + - The `ftdiff' demo program now supports UTF-8 encoded input files 1.416 + for option `-f'. 1.417 + 1.418 + - Using keys `r' and `R', you can now adjust the stroker radius in 1.419 + the `ftview' demo program. 1.420 + 1.421 + - Other, minor fixes and improvements. 1.422 + 1.423 + 1.424 +====================================================================== 1.425 + 1.426 +CHANGES BETWEEN 2.4.9 and 2.4.10 1.427 + 1.428 + I. IMPORTANT BUG FIXES 1.429 + 1.430 + - Incremental glyph loading as needed by ghostscript was broken. 1.431 + 1.432 + 1.433 + II. MISCELLANEOUS 1.434 + 1.435 + - A new function `FT_Outline_EmboldenXY', contributed by Alexei 1.436 + Podtelezhnikov. 1.437 + 1.438 + - In the `ftview' demo program, key `e' has been replaced with `x' 1.439 + and `y' to embolden in the horizontal and vertical direction, 1.440 + respectively. 1.441 + 1.442 + - The glyph spacing computation in `FT_GlyphSlot_Embolden' (and 1.443 + similar code in `ftview') has been improved. 1.444 + 1.445 + - Minor improvements to the TrueType bytecode interpreter and 1.446 + glyph loader, the auto-hinter, and the B/W rasterizer. 1.447 + 1.448 + 1.449 +====================================================================== 1.450 + 1.451 +CHANGES BETWEEN 2.4.8 and 2.4.9 1.452 + 1.453 + I. IMPORTANT BUG FIXES 1.454 + 1.455 + - Another round of fixes to better handle invalid fonts. Many of 1.456 + them are vulnerabilities (see CVE-2012-1126 up to CVE-2012-1144 1.457 + and SA48320) so all users should upgrade. 1.458 + 1.459 + 1.460 + II. MISCELLANEOUS 1.461 + 1.462 + - The `ENCODING -1 <n>' format of BDF fonts is now supported. 1.463 + 1.464 + - For BDF fonts, support for the whole Unicode encoding range has 1.465 + been added. 1.466 + 1.467 + - Better TTF support for x_ppem != y_ppem. 1.468 + 1.469 + - `FT_Get_Advances' sometimes returned bogus values. 1.470 + 1.471 + - The demo programs no longer recognize and handle default 1.472 + suffixes; you now have to always specify the complete font name. 1.473 + 1.474 + - Better rendering and LCD mode cycling added to `ftview'. 1.475 + 1.476 + 1.477 +====================================================================== 1.478 + 1.479 +CHANGES BETWEEN 2.4.7 and 2.4.8 1.480 + 1.481 + I. IMPORTANT BUG FIXES 1.482 + 1.483 + - Some vulnerabilities in handling CID-keyed PostScript fonts have 1.484 + been fixed; see CVE-2011-3439. 1.485 + 1.486 + 1.487 + II. MISCELLANEOUS 1.488 + 1.489 + - Chris Liddell contributed a new API, `FT_Get_PS_Font_Value', to 1.490 + retrieve most of the dictionary keys in Type 1 fonts. 1.491 + 1.492 + 1.493 +====================================================================== 1.494 + 1.495 +CHANGES BETWEEN 2.4.6 and 2.4.7 1.496 + 1.497 + I. IMPORTANT BUG FIXES 1.498 + 1.499 + - Some vulnerabilities in handling Type 1 fonts have been fixed; 1.500 + see CVE-2011-3256. 1.501 + 1.502 + 1.503 + II. MISCELLANEOUS 1.504 + 1.505 + - FreeType now properly handles ZapfDingbats glyph names while 1.506 + constructing a Unicode character map (for fonts which don't have 1.507 + one). 1.508 + 1.509 + 1.510 +====================================================================== 1.511 + 1.512 +CHANGES BETWEEN 2.4.5 and 2.4.6 1.513 + 1.514 + I. IMPORTANT BUG FIXES 1.515 + 1.516 + - For TrueType based fonts, the ascender and descender values were 1.517 + incorrect sometimes (off by a pixel if the ppem value was not a 1.518 + multiple of 5). Depending on the use you might now experience 1.519 + a different layout; the change should result in better, more 1.520 + consistent line spacing. 1.521 + 1.522 + - Fix CVE-2011-0226 which causes a vulnerability while handling 1.523 + Type 1 fonts. 1.524 + 1.525 + - BDF fonts containing glyphs with negative values for ENCODING 1.526 + were incorrectly rejected. This bug has been introduced in 1.527 + FreeType version 2.2.0. 1.528 + 1.529 + - David Bevan contributed a major revision of the FreeType stroker 1.530 + code: 1.531 + 1.532 + . The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected. 1.533 + 1.534 + . A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has 1.535 + been introduced to support PostScript and PDF miter joins. 1.536 + 1.537 + . FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an 1.538 + alias for FT_STROKER_LINEJOIN_MITER. 1.539 + 1.540 + . Various stroking glitches has been fixed. 1.541 + 1.542 + 1.543 + II. MISCELLANEOUS 1.544 + 1.545 + - SFNT bitmap fonts which contain an outline glyph for `.notdef' 1.546 + only no longer set the FT_FACE_FLAG_SCALABLE flag. 1.547 + 1.548 + 1.549 +====================================================================== 1.550 + 1.551 +CHANGES BETWEEN 2.4.4 and 2.4.5 1.552 + 1.553 + I. IMPORTANT BUG FIXES 1.554 + 1.555 + - A rendering regression for second-order Bézier curves has been 1.556 + fixed, introduced in 2.4.3. 1.557 + 1.558 + 1.559 + II. IMPORTANT CHANGES 1.560 + 1.561 + - If autohinting is not explicitly disabled, FreeType now uses 1.562 + the autohinter if a TrueType based font doesn't contain native 1.563 + hints. 1.564 + 1.565 + - The load flag FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH has been made 1.566 + redundant and is simply ignored; this means that FreeType now 1.567 + ignores the global advance width value in TrueType fonts. 1.568 + 1.569 + 1.570 + III. MISCELLANEOUS 1.571 + 1.572 + - `FT_Sfnt_Table_Info' can now return the number of SFNT tables of 1.573 + a font. 1.574 + 1.575 + - Support for PCF files compressed with bzip2 has been contributed 1.576 + by Joel Klinghed. To make this work, the OS must provide a 1.577 + bzip2 library. 1.578 + 1.579 + - Bradley Grainger contributed project and solution files in 1.580 + Visual Studio 2010 format. 1.581 + 1.582 + - Again some fixes to better handle broken fonts. 1.583 + 1.584 + - Some improvements to the B/W rasterizer. 1.585 + 1.586 + - Fixes to the cache module to improve robustness. 1.587 + 1.588 + - Just Fill Bugs contributed (experimental) code to compute blue 1.589 + zones for CJK Ideographs, improving the alignment of horizontal 1.590 + stems at the top or bottom edges. 1.591 + 1.592 + - The `ftgrid' demo program can now display autohinter segments, 1.593 + to be toggled on and off with key `s'. 1.594 + 1.595 + 1.596 +====================================================================== 1.597 + 1.598 +CHANGES BETWEEN 2.4.3 and 2.4.4 1.599 + 1.600 + I. IMPORTANT BUG FIXES 1.601 + 1.602 + - UVS support (TrueType/OpenType cmap format 14) support is fixed. 1.603 + This regression has been introduced in version 2.4.0. 1.604 + 1.605 + 1.606 + II. MISCELLANEOUS 1.607 + 1.608 + - Detect tricky fonts (e.g. MingLiU) by the lengths and checksums 1.609 + of Type42-persistent subtables (`cvt ', `fpgm', and `prep') when 1.610 + a TrueType font without family name is given. The previous fix, 1.611 + introduced in 2.4.3, was too rigorous, causing many subsetted 1.612 + fonts (mainly from PDF files) displayed badly because FreeType 1.613 + forced rendering with the TrueType bytecode engine instead of 1.614 + the autohinter. 1.615 + 1.616 + - Better support for 64bit platforms. 1.617 + 1.618 + - More fixes to improve handling of broken fonts. 1.619 + 1.620 + 1.621 +====================================================================== 1.622 + 1.623 +CHANGES BETWEEN 2.4.2 and 2.4.3 1.624 + 1.625 + I. IMPORTANT BUG FIXES 1.626 + 1.627 + - Fix rendering of certain cubic, S-shaped arcs. This regression 1.628 + has been introduced in version 2.4.0. 1.629 + 1.630 + 1.631 + II. MISCELLANEOUS 1.632 + 1.633 + - To fix the above mentioned rendering issue, a new spline 1.634 + flattening algorithm has been introduced which speeds up both 1.635 + conic and cubic arcs. 1.636 + 1.637 + - Handling of broken fonts has been further improved. 1.638 + 1.639 + 1.640 +====================================================================== 1.641 + 1.642 +CHANGES BETWEEN 2.4.1 and 2.4.2 1.643 + 1.644 + I. IMPORTANT BUG FIXES 1.645 + 1.646 + - A stack overflow in CFF Type2 CharStrings interpreter is fixed. 1.647 + 1.648 + - Handling Type 42 font deallocation was broken; additionally, the 1.649 + library is now more robust against malformed Type 42 fonts. 1.650 + 1.651 + 1.652 + II. MISCELLANEOUS 1.653 + 1.654 + - Two new functions, `FT_Reference_Library' (in FT_MODULE_H) and 1.655 + `FT_Reference_Face' (in FT_FREETYPE_H), have been added to 1.656 + simplify life-cycle management. A counter gets initialized to 1 1.657 + at the time an FT_Library (or FT_Face) structure is created. 1.658 + The two new functions increment the respective counter. 1.659 + `FT_Done_Library' and `FT_Done_Face' then only destroy a library 1.660 + or face if the counter is 1, otherwise they simply decrement the 1.661 + counter. 1.662 + 1.663 + 1.664 +====================================================================== 1.665 + 1.666 +CHANGES BETWEEN 2.4.0 and 2.4.1 1.667 + 1.668 + I. IMPORTANT CHANGES 1.669 + 1.670 + - A serious bug in the CFF font module prevented display of many 1.671 + glyphs in CFF fonts like `MinionPro-Regular.otf'. 1.672 + 1.673 + 1.674 +====================================================================== 1.675 + 1.676 +CHANGES BETWEEN 2.3.12 and 2.4.0 1.677 + 1.678 + I. IMPORTANT CHANGES 1.679 + 1.680 + - Since May 2010, all patents regarding the TrueType bytecode 1.681 + interpreter have expired worldwide. Consequently, we now define 1.682 + TT_CONFIG_OPTION_BYTECODE_INTERPRETER by default (and undefine 1.683 + TT_CONFIG_OPTION_UNPATENTED_HINTING). 1.684 + 1.685 + - A new function `FT_Library_SetLcdFilterWeights' is available to 1.686 + adjust the filter weights set by `FT_Library_SetLcdFilter'. 1.687 + 1.688 + 1.689 + II. MISCELLANEOUS 1.690 + 1.691 + - Thanks to many reports from Robert Święcki, FreeType's stability 1.692 + in handling broken or damaged fonts is much improved. 1.693 + 1.694 + - Support for LCD filter control has been added to the demo 1.695 + programs `ftdiff' and `ftview'. 1.696 + 1.697 + 1.698 +====================================================================== 1.699 + 1.700 +CHANGES BETWEEN 2.3.11 and 2.3.12 1.701 + 1.702 + I. IMPORTANT CHANGES 1.703 + 1.704 + - For `FT_Open_Face', new parameters are available to ignore 1.705 + preferred family names: FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY and 1.706 + FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY. 1.707 + 1.708 + 1.709 + II. MISCELLANEOUS 1.710 + 1.711 + - Support for incremental font loading (controlled with the 1.712 + FT_CONFIG_OPTION_INCREMENTAL macro) is now active by default. 1.713 + 1.714 + - Better support for vertical metrics. 1.715 + 1.716 + - Various minor bug fixes. 1.717 + 1.718 + 1.719 +====================================================================== 1.720 + 1.721 +CHANGES BETWEEN 2.3.10 and 2.3.11 1.722 + 1.723 + I. IMPORTANT BUG FIXES 1.724 + 1.725 + - Version 2.3.10 broke PCF support. 1.726 + 1.727 + 1.728 +====================================================================== 1.729 + 1.730 +CHANGES BETWEEN 2.3.10 and 2.3.9 1.731 + 1.732 + I. IMPORTANT BUG FIXES 1.733 + 1.734 + - If all ASCII digits in a font have the same (unscaled) width, 1.735 + the autohinter respects this and won't change it. 1.736 + 1.737 + - TrueType fonts are now rasterized correctly if the horizontal 1.738 + and vertical resolution differ. 1.739 + 1.740 + - Type 1 fonts are now handled with increased precision internally 1.741 + to avoid serious rounding issues if non-integral coordinates are 1.742 + encountered. 1.743 + 1.744 + - Horizontally condensed CFF fonts (using the font matrix) were 1.745 + rendered incorrectly. This bug has been introduced after 1.746 + release 2.3.5. 1.747 + 1.748 + 1.749 + II. IMPORTANT CHANGES 1.750 + 1.751 + - Support for the SFNT cmap 13 table format (as defined by the new 1.752 + OpenType 1.6 specification) has been added. 1.753 + 1.754 + - B/W rasterization of well-hinted TrueType fonts at small sizes 1.755 + has been greatly improved. 1.756 + 1.757 + - Calculation of vertical metrics in OpenType fonts has been 1.758 + improved. 1.759 + 1.760 + 1.761 + III. MISCELLANEOUS 1.762 + 1.763 + - It is now possible to change the emboldening factor in the 1.764 + `ftview' demo program with keys `e' and `E'. 1.765 + 1.766 + - It is now possible to change the slant value in the `ftview' 1.767 + demo program with keys `s' and `S'. 1.768 + 1.769 + - The 5-levels grayscale mode of the `ftraster' module (which 1.770 + FreeType doesn't use by default) was broken since version 2.3.0. 1.771 + 1.772 + - Compilation of the `ftgrays' and `ftraster' modules was broken 1.773 + in stand-alone mode. 1.774 + 1.775 + - Various fixes for compilation on 64bit and 16bit architectures. 1.776 + 1.777 + 1.778 +====================================================================== 1.779 + 1.780 +CHANGES BETWEEN 2.3.9 and 2.3.8 1.781 + 1.782 + I. IMPORTANT BUG FIXES 1.783 + 1.784 + - Very unfortunately, FreeType 2.3.8 contained a change that broke 1.785 + its official ABI. The end result is that programs compiled 1.786 + against previous versions of the library, but dynamically linked 1.787 + to 2.3.8 can experience memory corruption if they call the 1.788 + `FT_Get_PS_Font_Info' function. 1.789 + 1.790 + We recommend all users to upgrade to 2.3.9 as soon as possible, 1.791 + or to downgrade to a previous release of the library if this is 1.792 + not an option. 1.793 + 1.794 + The origin of the bug is that a new field was added to the 1.795 + publicly defined `PS_FontInfoRec' structure. Unfortunately, 1.796 + objects of this type can be stack or heap allocated by callers 1.797 + of `FT_Get_PS_Font_Info', resulting in a memory buffer 1.798 + overwrite with its implementation in 2.3.8. 1.799 + 1.800 + If you want to know whether your code is vulnerable to this 1.801 + issue, simply search for the substrings `PS_FontInfo' and 1.802 + `PS_Font_Info' in your source code. If none is found, your code 1.803 + is safe and is not affected. 1.804 + 1.805 + The FreeType team apologizes for the problem. 1.806 + 1.807 + - The POSIX support of MacOS resource-fork fonts (Suitcase fonts 1.808 + and LaserWriter Type1 PostScript fonts) was broken in 2.3.8. If 1.809 + FreeType2 is built without Carbon framework, these fonts are not 1.810 + handled correctly. Version 2.3.7 didn't have this bug. 1.811 + 1.812 + - `FT_Get_Advance' (and `FT_Get_Advances') returned bad values for 1.813 + almost all font formats except TrueType fonts. 1.814 + 1.815 + - Fix a bug in the SFNT kerning table loader/parser which could 1.816 + crash the engine if certain malformed tables were encountered. 1.817 + 1.818 + - Composite SFNT bitmaps are now handled correctly. 1.819 + 1.820 + 1.821 + II. IMPORTANT CHANGES 1.822 + 1.823 + - The new functions `FT_Get_CID_Is_Internally_CID_keyed' and 1.824 + `FT_Get_CID_From_Glyph_Index' can be used to access CID-keyed 1.825 + CFF fonts via CID values. This code has been contributed by 1.826 + Michael Toftdal. 1.827 + 1.828 + 1.829 + III. MISCELLANEOUS 1.830 + 1.831 + - `FT_Outline_Get_InsideBorder' returns FT_STROKER_BORDER_RIGHT 1.832 + for empty outlines. This was incorrectly documented. 1.833 + 1.834 + - The `ftview' demo program now supports UTF-8 encoded strings. 1.835 + 1.836 + 1.837 +====================================================================== 1.838 + 1.839 +CHANGES BETWEEN 2.3.8 and 2.3.7 1.840 + 1.841 + I. IMPORTANT BUG FIXES 1.842 + 1.843 + - CID-keyed fonts in an SFNT wrapper were not handled correctly. 1.844 + 1.845 + - The smooth renderer produced truncated images (on the right) for 1.846 + outline parts with negative horizontal values. Most fonts don't 1.847 + contain outlines left to the y coordinate axis, but the effect 1.848 + was very noticeable for outlines processed with FT_Glyph_Stroke, 1.849 + using thick strokes. 1.850 + 1.851 + - `FT_Get_TrueType_Engine_Type' returned a wrong value if both 1.852 + configuration macros TT_CONFIG_OPTION_BYTECODE_INTERPRETER and 1.853 + TT_CONFIG_OPTION_UNPATENTED_HINTING were defined. 1.854 + 1.855 + - The `face_index' field in the `FT_Face' structure wasn't 1.856 + initialized properly after calling FT_Open_Face and friends with 1.857 + a positive face index for CFFs, WinFNTs, and, most importantly, 1.858 + for TrueType Collections (TTCs). 1.859 + 1.860 + 1.861 + II. IMPORTANT CHANGES 1.862 + 1.863 + - Rudimentary support for Type 1 fonts and CID-keyed Type 1 fonts 1.864 + in an SFNT wrapper has been added -- such fonts are used on the 1.865 + Mac. The core SFNT tables `TYP1' and `CID ' are passed to the 1.866 + PS Type 1 and CID-keyed PS font drivers; other tables (`ALMX', 1.867 + `BBOX', etc.) are not supported yet. 1.868 + 1.869 + - A new interface to extract advance values of glyphs without 1.870 + loading their outlines has been added. The functions are called 1.871 + `FT_Get_Advance' and `FT_Get_Advances'; they are defined in file 1.872 + `ftadvanc.h' (to be accessed as FT_ADVANCES_H). 1.873 + 1.874 + - A new function `FT_Get_FSType_Flags' (in FT_FREETYPE_H) has been 1.875 + contributed by David Bevan to access the embedding and 1.876 + subsetting restriction information of fonts. 1.877 + 1.878 + 1.879 + III. MISCELLANEOUS 1.880 + 1.881 + - FT_MulFix is now an inlined function; by default, assembler code 1.882 + is provided for x86 and ARM. See FT_CONFIG_OPTION_INLINE_MULFIX 1.883 + and FT_CONFIG_OPTION_NO_ASSEMBLER (in ftoption.h) for more. 1.884 + 1.885 + - The handling of `tricky' fonts (this is, fonts which don't work 1.886 + with the autohinter, needing the font format's hinting engine) 1.887 + has been generalized and changed slightly: 1.888 + 1.889 + . A new face flag FT_FACE_FLAG_TRICKY indicates that the font 1.890 + format's hinting engine is necessary for correct rendering. 1.891 + The macro FT_IS_TRICKY can be used to check this flag. 1.892 + 1.893 + . FT_LOAD_NO_HINTING is now ignored for tricky fonts. To really 1.894 + force raw loading of such fonts (without hinting), both 1.895 + FT_LOAD_NO_HINTING and FT_LOAD_NO_AUTOHINT must be used -- 1.896 + this is something which you probably never want to do. 1.897 + 1.898 + . Tricky TrueType fonts always use the bytecode interpreter, 1.899 + either the patented or unpatented version. 1.900 + 1.901 + - The function `FT_GlyphSlot_Own_Bitmap' has been moved from 1.902 + FT_SYNTHESIS_H to FT_BITMAP_H; it is now part of the `official' 1.903 + API. (The functions in FT_SYNTHESIS_H are still subject to 1.904 + change, however.) 1.905 + 1.906 + - In the `ftdiff' demo program you can now toggle the use of 1.907 + FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH with key `a'. 1.908 + 1.909 + 1.910 +====================================================================== 1.911 + 1.912 +CHANGES BETWEEN 2.3.7 and 2.3.6 1.913 + 1.914 + I. IMPORTANT BUG FIXES 1.915 + 1.916 + - If the library was compiled on an i386 platform using gcc, and 1.917 + compiler option -O3 was given, `FT_MulFix' sometimes returned 1.918 + incorrect results which could have caused problems with 1.919 + `FT_Request_Metrics' and `FT_Select_Metrics', returning an 1.920 + incorrect descender size. 1.921 + 1.922 + - Pure CFFs without subfonts were scaled incorrectly if the font 1.923 + matrix was non-standard. This bug has been introduced in 1.924 + version 2.3.6. 1.925 + 1.926 + - The `style_name' field in the `FT_FaceRec' structure often 1.927 + contained a wrong value for Type 1 fonts. This misbehaviour 1.928 + has been introduced in version 2.3.6 while trying to fix 1.929 + another problem. [Note, however, that this value is 1.930 + informative only since the used algorithm to extract it is 1.931 + very simplistic.] 1.932 + 1.933 + 1.934 + II. IMPORTANT CHANGES 1.935 + 1.936 + - Two new macros, FT_OUTLINE_SMART_DROPOUTS and 1.937 + FT_OUTLINE_EXCLUDE_STUBS, have been introduced. Together with 1.938 + FT_OUTLINE_IGNORE_DROPOUTS (which was ignored previously) it is 1.939 + now possible to control the dropout mode of the `raster' module 1.940 + (for B&W rasterization), using the `flags' field in the 1.941 + `FT_Outline' structure. 1.942 + 1.943 + - The TrueType bytecode interpreter now passes the dropout mode to 1.944 + the B&W rasterizer. This greatly increases the output for small 1.945 + ppem values of many fonts like `pala.ttf'. 1.946 + 1.947 + 1.948 +====================================================================== 1.949 + 1.950 +CHANGES BETWEEN 2.3.6 and 2.3.5 1.951 + 1.952 + I. IMPORTANT BUG FIXES 1.953 + 1.954 + - A bunch of potential security problems have been found. All 1.955 + users should update. 1.956 + 1.957 + - Microsoft Unicode cmaps in TrueType fonts are now always 1.958 + preferred over Apple cmaps. This is not a bug per se, but there 1.959 + exist some buggy fonts created for MS which have broken Apple 1.960 + cmaps. This affects only the automatic selection of FreeType; 1.961 + it's always possible to manually select an Apple Unicode cmap if 1.962 + desired. 1.963 + 1.964 + - Many bug fixes to the TrueType bytecode interpreter. 1.965 + 1.966 + - Improved Mac support. 1.967 + 1.968 + - Subsetted CID-keyed CFFs are now supported correctly. 1.969 + 1.970 + - CID-keyed CFFs with subfonts which are scaled in a non-standard 1.971 + way are now handled correctly. 1.972 + 1.973 + - A call to FT_Open_Face with `face_index' < 0 crashed FreeType if 1.974 + the font was a Windows (bitmap) FNT/FON. 1.975 + 1.976 + 1.977 + II. IMPORTANT CHANGES 1.978 + 1.979 + - The new function `FT_Get_CID_Registry_Ordering_Supplement' gives 1.980 + access to those fields in a CID-keyed font. The code has been 1.981 + contributed by Derek Clegg. 1.982 + 1.983 + - George Williams contributed code to validate the new `MATH' 1.984 + OpenType table (within the `otvalid' module). The `ftvalid' 1.985 + demo program has been extended accordingly. 1.986 + 1.987 + - An API for cmap 14 support (for Unicode Variant Selectors, UVS) 1.988 + has been contributed by George Williams. 1.989 + 1.990 + - A new face flag FT_FACE_FLAG_CID_KEYED has been added, together 1.991 + with a macro FT_IS_CID_KEYED which evaluates to 1 if the font is 1.992 + CID-keyed. 1.993 + 1.994 + 1.995 + III. MISCELLANEOUS 1.996 + 1.997 + - Build support for symbian has been contributed. 1.998 + 1.999 + - Better WGL4 glyph name support, contributed by Sergey Tolstov. 1.1000 + 1.1001 + - Debugging output of the various FT_TRACEX macros is now sent to 1.1002 + stderr. 1.1003 + 1.1004 + - The `ftview' demo program now provides artificial slanting too. 1.1005 + 1.1006 + - The `ftvalid' demo program has a new option `-f' to select the 1.1007 + font index. 1.1008 + 1.1009 + 1.1010 +====================================================================== 1.1011 + 1.1012 +CHANGES BETWEEN 2.3.5 and 2.3.4 1.1013 + 1.1014 + I. IMPORTANT BUG FIXES 1.1015 + 1.1016 + - Some subglyphs in TrueType fonts were handled incorrectly due to 1.1017 + a missing graphics state reinitialization. 1.1018 + 1.1019 + - Large .Z files (as distributed with some X11 packages) weren't 1.1020 + handled correctly, making FreeType increase the heap stack in an 1.1021 + endless loop. 1.1022 + 1.1023 + - A large number of bugs have been fixed to avoid crashes and 1.1024 + endless loops with invalid fonts. 1.1025 + 1.1026 + 1.1027 + II. IMPORTANT CHANGES 1.1028 + 1.1029 + - The two new cache functions `FTC_ImageCache_LookupScaler' and 1.1030 + `FTC_SBit_Cache_LookupScaler' have been added to allow lookup of 1.1031 + glyphs using an `FTC_Scaler' object; this makes it possible to 1.1032 + use fractional pixel sizes in the cache. The demo programs have 1.1033 + been updated accordingly to use this feature. 1.1034 + 1.1035 + - A new API `FT_Get_CMap_Format' has been added to get the cmap 1.1036 + format of a TrueType font. This is useful in handling PDF 1.1037 + files. The code has been contributed by Derek Clegg. 1.1038 + 1.1039 + - The auto-hinter now produces better output by default for 1.1040 + non-Latin scripts like Indic. This was done by using the CJK 1.1041 + hinting module as the default instead of the Latin one. Thanks 1.1042 + to Rahul Bhalerao for this suggestion. 1.1043 + 1.1044 + - A new API `FT_Face_CheckTrueTypePatents' has been added to find 1.1045 + out whether a given TrueType font uses patented bytecode 1.1046 + instructions. The `ft2demos' bundle contains a new program 1.1047 + called `ftpatchk' which demonstrates its usage. 1.1048 + 1.1049 + - A new API `FT_Face_SetUnpatentedHinting' has been added to 1.1050 + enable or disable the unpatented hinter. 1.1051 + 1.1052 + - Support for Windows FON files in PE format has been contributed 1.1053 + by Dmitry Timoshkov. 1.1054 + 1.1055 + 1.1056 + III. MISCELLANEOUS 1.1057 + 1.1058 + - Vincent Richomme contributed Visual C++ project files for Pocket 1.1059 + PCs. 1.1060 + 1.1061 + 1.1062 +====================================================================== 1.1063 + 1.1064 +CHANGES BETWEEN 2.3.4 and 2.3.3 1.1065 + 1.1066 + I. IMPORTANT BUG FIXES 1.1067 + 1.1068 + - A serious bug in the handling of bitmap fonts (and bitmap 1.1069 + strikes of outline fonts) has been introduced in 2.3.3. 1.1070 + 1.1071 + 1.1072 +====================================================================== 1.1073 + 1.1074 +CHANGES BETWEEN 2.3.3 and 2.3.2 1.1075 + 1.1076 + I. IMPORTANT BUG FIXES 1.1077 + 1.1078 + - Remove a serious regression in the TrueType bytecode interpreter 1.1079 + that was introduced in version 2.3.2. Note that this does not 1.1080 + disable the improvements introduced to the interpreter in 1.1081 + version 2.3.2, only some ill cases that occurred with certain 1.1082 + fonts (though a few popular ones). 1.1083 + 1.1084 + - The auto-hinter now ignores single-point contours for computing 1.1085 + blue zones. This bug created `wavy' baselines when rendering 1.1086 + text with various fonts that use these contours to model 1.1087 + mark-attach points (these are points that are never rasterized 1.1088 + and are placed outside of the glyph's real outline). 1.1089 + 1.1090 + - The `rsb_delta' and `lsb_delta' glyph slot fields are now set to 1.1091 + zero for mono-spaced fonts. Otherwise code that uses them would 1.1092 + essentially ruin the fixed-advance property. 1.1093 + 1.1094 + - Fix CVE-2007-1351 which can cause an integer overflow while 1.1095 + parsing BDF fonts, leading to a potentially exploitable heap 1.1096 + overflow condition. 1.1097 + 1.1098 + 1.1099 + II. MISCELLANEOUS 1.1100 + 1.1101 + - Fixed compilation issues on some 64-bit platforms (see ChangeLog 1.1102 + for details). 1.1103 + 1.1104 + - A new demo program `ftdiff' has been added to compare TrueType 1.1105 + hinting, FreeType's auto hinting, and rendering without hinting 1.1106 + in three columns. 1.1107 + 1.1108 + 1.1109 +====================================================================== 1.1110 + 1.1111 +CHANGES BETWEEN 2.3.2 and 2.3.1 1.1112 + 1.1113 + I. IMPORTANT BUG FIXES 1.1114 + 1.1115 + - FreeType returned incorrect kerning information from TrueType 1.1116 + fonts when the bytecode interpreter was enabled. This happened 1.1117 + due to a typo introduced in version 2.3.0. 1.1118 + 1.1119 + - Negative kerning values from PFM files are now reported 1.1120 + correctly (they were read as 16-bit unsigned values from the 1.1121 + file). 1.1122 + 1.1123 + - Fixed a small memory leak when `FT_Init_FreeType' failed for 1.1124 + some reason. 1.1125 + 1.1126 + - The Postscript hinter placed and sized very thin and ghost stems 1.1127 + incorrectly. 1.1128 + 1.1129 + - The TrueType bytecode interpreter has been fixed to get rid of 1.1130 + most of the rare differences seen in comparison to the Windows 1.1131 + font loader. 1.1132 + 1.1133 + 1.1134 + II. IMPORTANT CHANGES 1.1135 + 1.1136 + - The auto-hinter now better deals with serifs and corner cases 1.1137 + (e.g., glyph '9' in Arial at 9pt, 96dpi). It also improves 1.1138 + spacing adjustments and doesn't change widths for non-spacing 1.1139 + glyphs. 1.1140 + 1.1141 + - Many Mac-specific functions are deprecated (but still 1.1142 + available); modern replacements have been provided for them. 1.1143 + See the documentation in file `ftmac.h'. 1.1144 + 1.1145 + 1.1146 +====================================================================== 1.1147 + 1.1148 +CHANGES BETWEEN 2.3.1 and 2.3.0 1.1149 + 1.1150 + I. IMPORTANT BUG FIXES 1.1151 + 1.1152 + - The TrueType interpreter sometimes returned incorrect horizontal 1.1153 + metrics due to a bug in the handling of the SHZ instruction. 1.1154 + 1.1155 + - A typo in a security check introduced after version 2.2.1 1.1156 + prevented FreeType to render some glyphs in CFF fonts. 1.1157 + 1.1158 + 1.1159 +====================================================================== 1.1160 + 1.1161 +CHANGES BETWEEN 2.3.0 and 2.2.1 1.1162 + 1.1163 + I. IMPORTANT BUG FIXES 1.1164 + 1.1165 + - The PCF font loader is now much more robust while loading 1.1166 + malformed font files. 1.1167 + 1.1168 + - Various memory leaks have been found and fixed. 1.1169 + 1.1170 + - The TrueType name loader now deals properly with some fonts that 1.1171 + encode their names in UTF-16 (the specification was vague, and 1.1172 + the code incorrectly assumed UCS-4). 1.1173 + 1.1174 + - Fixed the TrueType bytecode loader to deal properly with subtle 1.1175 + monochrome/gray issues when scaling the CVT. Some fonts 1.1176 + exhibited bad rendering artifacts otherwise. 1.1177 + 1.1178 + - `FT_GlyphSlot_Embolden' now supports vertical layouts correctly 1.1179 + (it mangled the vertical advance height). 1.1180 + 1.1181 + - Fixed byte endian issues of `ftmac.c' to support Mac OS X on 1.1182 + i386. 1.1183 + 1.1184 + - The PFR font loader no longer erroneously tags font files 1.1185 + without any outlines as FT_FACE_FLAG_SCALABLE. 1.1186 + 1.1187 + 1.1188 + II. NEW API FUNCTIONS 1.1189 + 1.1190 + - `FT_Library_SetLcdFilter' allows you to select a special filter 1.1191 + to be applied to the bitmaps generated by `FT_Render_Glyph' if 1.1192 + one of the FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V modes has 1.1193 + been selected. This filter is used to reduce color fringes; 1.1194 + several settings are available through the FT_LCD_FILTER_XXX 1.1195 + enumeration. 1.1196 + 1.1197 + Its declaration and documentation can be found in file 1.1198 + `include/freetype/ftlcdfil.h' (to be accessed with macro 1.1199 + FT_LCD_FILTER_H). 1.1200 + 1.1201 + *IMPORTANT*: This function returns an error 1.1202 + (FT_Err_Unimplemented_Feature) in default builds of the library 1.1203 + for patent reasons. See below. 1.1204 + 1.1205 + - `FT_Get_Gasp' allows you to query the flags of the TrueType 1.1206 + `gasp' table for a given character pixel size. This is useful 1.1207 + to duplicate the text rendering of MS Windows when the native 1.1208 + bytecode interpreter is enabled (which isn't the default for 1.1209 + other patent reasons). 1.1210 + 1.1211 + Its declaration and documentation can be found in file 1.1212 + `include/freetype/ftgasp.h' (to be accessed with macro 1.1213 + FT_GASP_H). 1.1214 + 1.1215 + 1.1216 + III. IMPORTANT CHANGES 1.1217 + 1.1218 + - The auto-hinter has been tuned a lot to improve its results with 1.1219 + serif fonts, resulting in much better font rendering of many web 1.1220 + pages. 1.1221 + 1.1222 + - The unpatented hinter is now part of the default build of the 1.1223 + library; we have added code to automatically support `tricky' 1.1224 + fonts that need it. 1.1225 + 1.1226 + This means that FreeType should `just work' with certain Asian 1.1227 + fonts, like MingLiU, which cannot properly be loaded without a 1.1228 + bytecode interpreter, but which fortunately do not use any of 1.1229 + the patented bytecode opcodes. We detect these fonts by name, 1.1230 + so please report any font file that doesn't seem to work with 1.1231 + FreeType, and we shall do what we can to support it in a next 1.1232 + release. 1.1233 + 1.1234 + Note that the API hasn't changed, so you can still force 1.1235 + unpatented hinting with a special parameter to `FT_Open_Face' as 1.1236 + well. This might be useful in same cases; for example, a PDF 1.1237 + reader might present a user option to activate it to deal with 1.1238 + certain `tricky' embedded fonts which cannot be clearly 1.1239 + identified. 1.1240 + 1.1241 + If you are a developer for embedded systems, you might want to 1.1242 + *disable* the feature to save code space by undefining 1.1243 + TT_CONFIG_OPTION_UNPATENTED_HINTING in file `ftoption.h'. 1.1244 + 1.1245 + - LCD-optimized rendering is now *disabled* in all default builds 1.1246 + of the library, mainly due to patent issues. For more 1.1247 + information see: 1.1248 + 1.1249 + http://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html 1.1250 + 1.1251 + A new configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING 1.1252 + has been introduced in `ftoption.h'; manually define it in this 1.1253 + file if you want to re-enable the feature. 1.1254 + 1.1255 + The change only affects the implementation, not the FreeType 1.1256 + API. This means that clients don't need to be modified, because 1.1257 + the library still generates LCD decimated bitmaps, but with the 1.1258 + added constraint that R=G=B on each triplet. 1.1259 + 1.1260 + The displayed result should be equal to normal anti-aliased 1.1261 + rendering. 1.1262 + 1.1263 + Additionally, if FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not 1.1264 + defined, the new `FT_Library_SetLcdFilter' function returns the 1.1265 + FT_Err_Unimplemented_Feature error code. 1.1266 + 1.1267 + - Some computation bugs in the TrueType bytecode interpreter were 1.1268 + found, which allow us to get rid of very subtle and rare 1.1269 + differences we had experienced with the Windows renderer. 1.1270 + 1.1271 + - It is now possible to cross-compile the library easily. See the 1.1272 + file `docs/INSTALL.CROSS' for details. 1.1273 + 1.1274 + - The file `src/base/ftmac.c' now contains code for Mac OS X only; 1.1275 + its deprecated function `FT_GetFile_From_Mac_Font_Name' always 1.1276 + returns an error even if the QuickDraw framework is available. 1.1277 + The previous version has been moved to `builds/mac/ftmac.c'. 1.1278 + 1.1279 + Selecting configure option `--with-quickdraw-carbon' makes the 1.1280 + build process use the original `ftmac.c' file instead of the Mac 1.1281 + OS X-only version. 1.1282 + 1.1283 + 1.1284 + IV. MISCELLANEOUS 1.1285 + 1.1286 + - Various performance and memory footprint optimizations have been 1.1287 + performed on the TrueType and CFF font loaders, sometimes with 1.1288 + very drastic benefits (e.g., the TrueType loader is now about 1.1289 + 25% faster; FreeType should use less heap memory under nearly 1.1290 + all conditions). 1.1291 + 1.1292 + - The anti-aliased rasterizer has been optimized and is now 15% to 1.1293 + 25% percent faster than in previous versions, depending on 1.1294 + content. 1.1295 + 1.1296 + - The Type 1 loader has been improved; as an example, it now skips 1.1297 + top-level dictionaries properly. 1.1298 + 1.1299 + - Better support for Mac fonts on POSIX systems, plus compilation 1.1300 + fixes for Mac OS X on ppc64 where `ftmac.c' cannot be built. 1.1301 + 1.1302 + - Configuration without `--with-old-mac-fonts' does not include 1.1303 + `ftmac.c' (this was the behaviour in FreeType version 2.1.10). 1.1304 + 1.1305 + - The TrueTypeGX validator (gxvalid) checks the order of glyph IDs 1.1306 + in the kern table. 1.1307 + 1.1308 + 1.1309 +====================================================================== 1.1310 + 1.1311 +CHANGES BETWEEN 2.2.1 and 2.2 1.1312 + 1.1313 + I. IMPORTANT BUG FIXES 1.1314 + 1.1315 + - Various integer overflows have been fixed. 1.1316 + 1.1317 + - PFB fonts with MacOS resource fork weren't handled correctly on 1.1318 + non-MacOS platforms. 1.1319 + 1.1320 + 1.1321 +====================================================================== 1.1322 + 1.1323 +CHANGES BETWEEN 2.2 and 2.1.10 1.1324 + 1.1325 +(not released officially) 1.1326 + 1.1327 + I. IMPORTANT BUG FIXES 1.1328 + 1.1329 + - Vertical metrics for SFNT fonts were incorrect sometimes. 1.1330 + 1.1331 + - The FT_HAS_KERNING macro always returned 0. 1.1332 + 1.1333 + - CFF OpenType fonts didn't return correct vertical metrics for 1.1334 + glyphs with outlines. 1.1335 + 1.1336 + - If FreeType was compiled without hinters, all font formats based 1.1337 + on PS outlines weren't scaled correctly. 1.1338 + 1.1339 + 1.1340 + II. IMPORTANT CHANGES 1.1341 + 1.1342 + - Version 2.2 no longer exposes its internals, this is, the header 1.1343 + files located in the `include/freetype/internal' directory of 1.1344 + the source package are not copied anymore by the `make install' 1.1345 + command. Consequently, a number of rogue clients which directly 1.1346 + access FreeType's internal functions and structures won't 1.1347 + compile without modification. 1.1348 + 1.1349 + We provide patches for most of those rogue clients. See the 1.1350 + following page for more information: 1.1351 + 1.1352 + http://www.freetype.org/freetype2/patches/rogue-patches.html 1.1353 + 1.1354 + Note that, as a convenience to our Unix desktop users, version 1.1355 + 2.2 is *binary* compatible with FreeType 2.1.7, which means that 1.1356 + installing this release on an existing distribution shall not 1.1357 + break any working desktop. 1.1358 + 1.1359 + - FreeType's build mechanism has been redesigned. With GNU make 1.1360 + it is now sufficient in most cases to edit two files: 1.1361 + `modules.cfg', to select the library components, and the 1.1362 + configuration file `include/freetype/config/ftoption.h' (which 1.1363 + can be copied to the objects directory). Removing unused module 1.1364 + directories to prevent its compilation and editing 1.1365 + `include/freetype/config/ftmodule.h' is no longer necessary. 1.1366 + 1.1367 + - The LIGHT hinting algorithm produces more pleasant results. 1.1368 + Also, using the FT_LOAD_TARGET_LIGHT flags within FT_Load_Glyph 1.1369 + always forces auto-hinting, as a special exception. This allows 1.1370 + you to experiment with it even if you have enabled the TrueType 1.1371 + bytecode interpreter in your build. 1.1372 + 1.1373 + - The auto hinter now employs a new algorithm for CJK fonts, based 1.1374 + on Akito Hirai's patch. Note that this only works for fonts 1.1375 + with a Unicode charmap at the moment. 1.1376 + 1.1377 + - The following callback function types have changed slightly (by 1.1378 + adding the `const' keyword where appropriate): 1.1379 + 1.1380 + FT_Outline_MoveToFunc 1.1381 + FT_Outline_LineToFunc 1.1382 + FT_Outline_ConicToFunc 1.1383 + FT_Outline_CubicToFunc 1.1384 + FT_SpanFunc 1.1385 + FT_Raster_RenderFunc 1.1386 + 1.1387 + FT_Glyph_TransformFunc 1.1388 + FT_Renderer_RenderFunc 1.1389 + FT_Renderer_TransformFunc 1.1390 + 1.1391 + Note that this doesn't affect binary backward compatibility. 1.1392 + 1.1393 + - On MacOS, new APIs have been added as replacements for legacy 1.1394 + APIs: `FT_New_Face_From_FSRef' for `FT_New_Face_From_FSSpec', 1.1395 + and `FT_GetFile_From_Mac_ATS_Name' for 1.1396 + `FT_GetFile_From_Mac_Name'. Legacy APIs are still available, if 1.1397 + FreeType is built without disabling them. 1.1398 + 1.1399 + - A new API `FT_Select_Size' has been added to select a bitmap 1.1400 + strike by its index. Code using other functions to select 1.1401 + bitmap strikes should be updated to use this function. 1.1402 + 1.1403 + - A new API `FT_Get_SubGlyph_Info' has been added to retrieve 1.1404 + subglyph data. This can be used by rogue clients which used to 1.1405 + access the internal headers to get the corresponding data. 1.1406 + 1.1407 + - In 2.1.10, the behaviour of `FT_Set_Pixel_Sizes' was changed for 1.1408 + BDF/PCF fonts, and only for them. This causes inconsistency. 1.1409 + In this release, we undo the change. The intent of the change 1.1410 + in 2.1.10 is to allow size selection through real dimensions, 1.1411 + which can now be done through `FT_Request_Size'. 1.1412 + 1.1413 + - Some security issues were discovered and fixed in the CFF and 1.1414 + Type 1 loader, causing crashes of FreeType by malformed font 1.1415 + files. 1.1416 + 1.1417 + 1.1418 + III. MISCELLANEOUS 1.1419 + 1.1420 + - The documentation for FT_LOAD_TARGET_XXX and FT_RENDER_MODE_XXX 1.1421 + values now better reflects its usage and differences: One set is 1.1422 + used to specify the hinting algorithm, the other to specify the 1.1423 + pixel rendering mode. 1.1424 + 1.1425 + - `FT_New_Face' and `FT_New_Face_From_FSSpec' in ftmac.c have been 1.1426 + changed to count supported scalable faces (sfnt, LWFN) only, and 1.1427 + to return the number of available faces via face->num_faces. 1.1428 + Unsupported bitmap faces (fbit, NFNT) are ignored. 1.1429 + 1.1430 + - builds/unix/configure has been improved for MacOS X. It now 1.1431 + automatically checks available functions in Carbon library, and 1.1432 + prepare to use newest functions by default. Options to specify 1.1433 + the dependencies of each Carbon APIs (FSSpec, FSRef, old/new 1.1434 + QuickDraw, ATS) are available too. By manual disabling of all 1.1435 + QuickDraw functionality, FreeType can be built without 1.1436 + `deprecated function' warnings on MacOS 10.4.x, but 1.1437 + FT_GetFile_Mac_Name in ftmac.c then is changed to a dummy 1.1438 + function, and returns an `unimplemented' error. For details see 1.1439 + builds/mac/README. 1.1440 + 1.1441 + - SFNT cmap handling has been improved, mainly to run much faster 1.1442 + with CJK fonts. 1.1443 + 1.1444 + - A new function `FT_Get_TrueType_Engine_Type (declared in 1.1445 + `FT_MODULE_H') is provided to determine the status of the 1.1446 + TrueType bytecode interpreter compiled into the library 1.1447 + (patented, unpatented, unimplemented). 1.1448 + 1.1449 + - Vertical metrics of glyphs are synthesized if the font does not 1.1450 + provide such information. You can tell whether the metrics are 1.1451 + synthesized or not by checking the FT_FACE_FLAG_VERTICAL flag of 1.1452 + the face. 1.1453 + 1.1454 + - The demo programs `ftview' and `ftstring' have been rewritten 1.1455 + for better readability. `ftview' has a new switch `-p' to test 1.1456 + FT_New_Memory_Face (instead of FT_New_Face). 1.1457 + 1.1458 + - FreeType now honours bit 1 in the `head' table of TrueType fonts 1.1459 + (meaning `left sidebearing point at x=0'). This helps with some 1.1460 + buggy fonts. 1.1461 + 1.1462 + - Rudimentary support for Adobe's new `SING Glyphlet' format. See 1.1463 + 1.1464 + http://www.adobe.com/products/indesign/sing_gaiji.html 1.1465 + 1.1466 + for more information. 1.1467 + 1.1468 + - The `ftdump' program from the `ft2demos' bundle now shows some 1.1469 + information about charmaps. It also supports a new switch `-v' 1.1470 + to increase verbosity. 1.1471 + 1.1472 + - Better AFM support. This includes track kerning support. 1.1473 + 1.1474 + 1.1475 +====================================================================== 1.1476 + 1.1477 +CHANGES BETWEEN 2.1.10 and 2.1.9 1.1478 + 1.1479 + I. IMPORTANT BUG FIXES 1.1480 + 1.1481 + - The size comparison for BDF and PCF files could fail sometimes. 1.1482 + 1.1483 + - Some CFF files were still not loaded correctly. Patch from 1.1484 + Derek Noonburg. 1.1485 + 1.1486 + - The stroker still had some serious bugs. 1.1487 + 1.1488 + - Boris Letocha fixed a bug in the TrueType interpreter: The 1.1489 + NPUSHW instruction wasn't skipped correctly in IF clauses. Some 1.1490 + fonts like `Helvetica 75 Bold' failed. 1.1491 + 1.1492 + - Another serious bug in handling TrueType hints caused many 1.1493 + distortions. It has been introduced in version 2.1.8, and it is 1.1494 + highly recommended to upgrade. 1.1495 + 1.1496 + - FreeType didn't properly parse empty Type 1 glyphs. 1.1497 + 1.1498 + - An unbound dynamic buffer growth was fixed in the PFR loader. 1.1499 + 1.1500 + - Several bugs have been fixed in the cache sub-system. 1.1501 + 1.1502 + - FreeType behaved incorrectly when resizing two distinct but very 1.1503 + close character pixel sizes through `FT_Set_Char_Size' (Savannah 1.1504 + bug #12263). 1.1505 + 1.1506 + - The auto-hinter didn't work properly for fonts without a Unicode 1.1507 + charmap -- it even refused to load the glyphs. 1.1508 + 1.1509 + 1.1510 + II. IMPORTANT CHANGES 1.1511 + 1.1512 + - Many fixes have been applied to drastically reduce the amount of 1.1513 + heap memory used by FreeType, especially when using 1.1514 + memory-mapped font files (which is the default on Unix systems 1.1515 + which support them). 1.1516 + 1.1517 + - The auto-hinter has been replaced with a new module, called the 1.1518 + `auto-fitter'. It consumes less memory than its predecessor, 1.1519 + and it is prepared to support non-latin scripts better in next 1.1520 + releases. 1.1521 + 1.1522 + - George Williams contributed code to read kerning data from PFM 1.1523 + files. 1.1524 + 1.1525 + - FreeType now uses the TT_NAME_ID_PREFERRED_FAMILY and 1.1526 + TT_NAME_ID_PREFERRED_SUBFAMILY strings (if available) for 1.1527 + setting family and style in SFNT fonts (patch from Kornfeld 1.1528 + Eliyahu Peter). 1.1529 + 1.1530 + - A new API `FT_Sfnt_Table_Info' (in FT_TRUETYPE_TABLES_H) has 1.1531 + been added to retrieve name and size information of SFNT tables. 1.1532 + 1.1533 + - A new API `FT_OpenType_Validate' (in FT_OPENTYPE_VALIDATE_H) has 1.1534 + been added to validate OpenType tables (BASE, GDEF, GPOS, GSUB, 1.1535 + JSTF). After validation it is no longer necessary to check 1.1536 + for errors in those tables while accessing them. 1.1537 + 1.1538 + Note that this module might be moved to another library in the 1.1539 + future to avoid a tight dependency between FreeType and the 1.1540 + OpenType specification. 1.1541 + 1.1542 + - A new API in FT_BITMAP_H (`FT_Bitmap_New', `FT_Bitmap_Convert', 1.1543 + `FT_Bitmap_Copy', `FT_Bitmap_Embolden', `FT_Bitmap_Done') has 1.1544 + been added. Its use is to convert an FT_Bitmap structure in 1.1545 + 1bpp, 2bpp, 4bpp, or 8bpp format into another 8bpp FT_Bitmap, 1.1546 + probably using a different pitch, and to further manipulate it. 1.1547 + 1.1548 + - A new API `FT_Outline_Embolden' (in FT_OUTLINE_H) gives finer 1.1549 + control how outlines are embolded. 1.1550 + 1.1551 + - `FT_GlyphSlot_Embolden' (in FT_SYNTHESIS_H) now handles bitmaps 1.1552 + also (code contributed by Chia I Wu). Note that this function 1.1553 + is still experimental and may be replaced with a better API. 1.1554 + 1.1555 + - The method how BDF and PCF bitmap fonts are accessed has been 1.1556 + refined. Formerly, FT_Set_Pixel_Sizes and FT_Set_Char_Size 1.1557 + were synonyms in FreeType's BDF and PCF interface. This has 1.1558 + changed now. FT_Set_Pixel_Sizes should be used to select the 1.1559 + actual font dimensions (the `strike', which is the sum of the 1.1560 + `FONT_ASCENT' and `FONT_DESCENT' properties), while 1.1561 + FT_Set_Char_Size selects the `nominal' size (the `PIXELSIZE' 1.1562 + property). In both functions, the width parameter is ignored. 1.1563 + 1.1564 + 1.1565 + III. MISCELLANEOUS 1.1566 + 1.1567 + - The BDF driver no longer converts all returned bitmaps with a 1.1568 + depth of 2bpp or 4bpp to a depth of 8bpp. The documentation has 1.1569 + not mentioned this explicitly, but implementors might have 1.1570 + relied on this after looking into the source files. 1.1571 + 1.1572 + - A new option `--ftversion' has been added to freetype-config to 1.1573 + return the FreeType version. 1.1574 + 1.1575 + - The memory debugger has been updated to dump allocation 1.1576 + statistics on all allocation sources in the library. This is 1.1577 + useful to spot greedy allocations when loading and processing 1.1578 + fonts. 1.1579 + 1.1580 + - We removed a huge array of constant pointers to constant strings 1.1581 + in the `psnames' module. The problem was that compilations in 1.1582 + PIC mode (i.e., when generating a Unix shared object/dll) put 1.1583 + the array into the non-shared writable section of the library 1.1584 + since absolute pointers are not relocatable by nature. 1.1585 + 1.1586 + This reduces the memory consumption by approximately 16KByte per 1.1587 + process linked to FreeType. We now also store the array in a 1.1588 + compressed form (as a trie) which saves about 20KByte of code as 1.1589 + well. 1.1590 + 1.1591 + - Kirill Smelkov provided patches to make src/raster/ftraster.c 1.1592 + compile stand-alone again. 1.1593 + 1.1594 + 1.1595 +====================================================================== 1.1596 + 1.1597 +CHANGES BETWEEN 2.1.9 and 2.1.8 1.1598 + 1.1599 + I. IMPORTANT BUG FIXES 1.1600 + 1.1601 + - The function `FT_Get_CharMap_Index' was only declared, without 1.1602 + any real code. For consistency, it has been renamed to 1.1603 + `FT_Get_Charmap_Index'. (This function is needed to implement 1.1604 + cmap caches.) 1.1605 + 1.1606 + - `FT_Outline_Get_BBox' sometimes returned incorrect values for 1.1607 + conic outlines (e.g., for TrueType fonts). 1.1608 + 1.1609 + - Handling of `bhed' table has been fixed. 1.1610 + 1.1611 + - The TrueType driver with enabled byte code interpreter sometimes 1.1612 + returned artifacts due to incorrect rounding. This bug has been 1.1613 + introduced after version 2.1.4. 1.1614 + 1.1615 + - The BDF driver dropped the last glyph in the font. 1.1616 + 1.1617 + - The BDF driver now uses the DEFAULT_CHAR property (if available) 1.1618 + to select a glyph shape for the undefined glyph. 1.1619 + 1.1620 + - The stroker failed for closed outlines and single points. 1.1621 + 1.1622 + 1.1623 + II. IMPORTANT CHANGES 1.1624 + 1.1625 + - George Williams contributed code to handle Apple's font 1.1626 + distortion technology found in GX fonts (`avar', `cvar', `fvar', 1.1627 + and `gvar' tables; the Multiple Masters API has been slightly 1.1628 + extended to cope with the new functionality). 1.1629 + 1.1630 + - The `FT_GlyphSlotRec' structure has been extended: The elements 1.1631 + `lsb_delta' and `rsb_delta' give the difference between hinted 1.1632 + and unhinted left and right side bearings if autohinting is 1.1633 + active. Using those values can improve the inter-letter spacing 1.1634 + considerably. See the documentation of `FT_GlyphSlotRec' and 1.1635 + the `ftstring' demo program how to use it. 1.1636 + 1.1637 + - Loading TrueType and Type 1 fonts has been made much faster. 1.1638 + 1.1639 + - The stroker is no longer experimental (but the cache subsystem 1.1640 + still is). 1.1641 + 1.1642 + 1.1643 + III. MISCELLANEOUS 1.1644 + 1.1645 + - A new documentation file `formats.txt' describes various font 1.1646 + formats supported (and not supported) by FreeType. 1.1647 + 1.1648 + 1.1649 +====================================================================== 1.1650 + 1.1651 +CHANGES BETWEEN 2.1.8 and 2.1.7 1.1652 + 1.1653 + I. IMPORTANT BUG FIXES 1.1654 + 1.1655 + - The native TrueType hinter contained some bugs which prevented 1.1656 + some fonts to be rendered correctly, most notably Legendum.otf. 1.1657 + 1.1658 + - The PostScript hinter now produces improved results. 1.1659 + 1.1660 + - The linear advance width and height values were incorrectly 1.1661 + rounded, making them virtually unusable if not loaded with 1.1662 + FT_LOAD_LINEAR_DESIGN. 1.1663 + 1.1664 + - Indexing CID-keyed CFF fonts is now working: The glyph index is 1.1665 + correctly treated as a CID, similar to FreeType's CID driver 1.1666 + module. Note that CID CMap support is still missing. 1.1667 + 1.1668 + - The FT_FACE_FLAGS_GLYPH_NAMES flag is now set correctly for all 1.1669 + font formats. 1.1670 + 1.1671 + - Some subsetted Type 1 fonts weren't parsed correctly. This bug 1.1672 + has been introduced in 2.1.7. In summary, the Type 1 parser has 1.1673 + become more robust. 1.1674 + 1.1675 + - Non-decimal numbers weren't parsed correctly in PS fonts. 1.1676 + 1.1677 + - The WinFNT driver now correctly reports FT_ENCODING_NONE for all 1.1678 + but one encoding. Use the new FT_WinFNT_ID_XXX values together 1.1679 + with `FT_Get_WinFNT_Header' to get the WinFNT charset ID. 1.1680 + 1.1681 + - The descender metrics (face->size->metrics.descender) for WinFNT 1.1682 + bitmap fonts had the wrong sign. 1.1683 + 1.1684 + - The (emulated) `seac' support for CFF fonts was broken. 1.1685 + 1.1686 + - The `flex' operator didn't work for CFF fonts. 1.1687 + 1.1688 + - PS glyphs which use the `hintmask' operator haven't been 1.1689 + rendered correctly in some cases. 1.1690 + 1.1691 + - Metrics for BDF and PCF bitmap font formats have been fixed. 1.1692 + 1.1693 + - Autohinting is now disabled for glyphs which are vertically 1.1694 + distorted or mirrored (using a transformation matrix). This 1.1695 + fixes a bug which produced zero-height glyphs. 1.1696 + 1.1697 + - The `freetype-config' script now handles --prefix and 1.1698 + --exec-prefix correctly; it also returns the proper --rpath (or 1.1699 + -R) value if FreeType has been built as a shared library. 1.1700 + 1.1701 + 1.1702 + II. IMPORTANT CHANGES 1.1703 + 1.1704 + - Both PCF and BDF drivers now handle the SETWIDTH_NAME and 1.1705 + ADD_STYLE_NAME properties. Values are appended to 1.1706 + face->style_name; example: `Bold SemiCondensed'. 1.1707 + 1.1708 + - The PCF driver now handles bitmap fonts compressed with the LZW 1.1709 + algorithm (extension .pcf.Z, compressed with `compress'). 1.1710 + 1.1711 + - A new API function `FT_Get_CMap_Language_ID' (declared in 1.1712 + `tttables.h') is available to get the language ID of a 1.1713 + TrueType/SFNT cmap. 1.1714 + 1.1715 + - The hexadecimal format of data after the `StartData' command in 1.1716 + CID-keyed Type 1 fonts is now supported. While this can't occur 1.1717 + in file-based fonts, it can happen in document-embedded 1.1718 + resources of PostScript documents. 1.1719 + 1.1720 + - Embedded bitmaps in SFNT-based CFF fonts are now supported. 1.1721 + 1.1722 + - A simple API is now available to control FreeType's tracing 1.1723 + mechanism if compiled with FT_DEBUG_LEVEL_TRACE. See the file 1.1724 + `ftdebug.h' for more details. 1.1725 + 1.1726 + - YAMATO Masatake contributed improved handling of MacOS resource 1.1727 + forks on non-MacOS platforms (for example, Linux can mount MacOS 1.1728 + file systems). 1.1729 + 1.1730 + - Support for MacOS has been improved; there is now a new function 1.1731 + `FT_New_Face_From_FSSpec' similar to `FT_New_Face' except that 1.1732 + it accepts an FSSpec instead of a path. 1.1733 + 1.1734 + - The cache sub-system has been rewritten. 1.1735 + 1.1736 + - There is now support for deinstallation of faces. 1.1737 + 1.1738 + - A new API function `FTC_Manager_RemoveFaceID' has been added 1.1739 + to delete all `idle' nodes that correspond to a given 1.1740 + FTC_FaceID. All `locked' nodes (i.e., those with a reference 1.1741 + count > 0), will be modified to prevent them from appearing in 1.1742 + further lookups (they will be cleaned normally when their 1.1743 + reference count reaches 0). 1.1744 + 1.1745 + - There is now support for point scaling (i.e., providing 1.1746 + character sizes in points + dpis, instead of pixels). 1.1747 + 1.1748 + - Three abstract cache classes are now available: 1.1749 + 1.1750 + FTC_GCache: Used to store one glyph item per cache node, 1.1751 + with the ability to group common attributes into 1.1752 + `families'. This replaces the old 1.1753 + FTC_GlyphCache class. 1.1754 + 1.1755 + FTC_ICache: Used to store one FT_Glyph per cache node. This 1.1756 + extends FTC_GCache. Family definition, family 1.1757 + comparison, and glyph loading are however left 1.1758 + to sub-classes. 1.1759 + 1.1760 + FTC_SCache: Used to store up to 16 small bitmaps per cache 1.1761 + node. This extends FTC_GCache. Family 1.1762 + definition, family comparison and glyph loading 1.1763 + are however left to sub-classes. 1.1764 + 1.1765 + - The file `src/cache/ftcbasic.c' implements: 1.1766 + 1.1767 + FTC_ImageCache: Extends FTC_ICache; implements family 1.1768 + definitions and glyph loading similar to the 1.1769 + old API. 1.1770 + 1.1771 + FTC_SBitCache: Extends FTC_SCache, implements family 1.1772 + definitions and glyph loading similar to the 1.1773 + old API 1.1774 + 1.1775 + Client applications should be able to extend FTC_GCache, 1.1776 + FTC_ICache, or FTC_SCache much more easily (i.e., less code to 1.1777 + write, and less callbacks). For example, one could envision 1.1778 + caches that are capable of storing transformed (obliqued), 1.1779 + stroked, emboldened, or colored glyph images. Use 1.1780 + `ftcbasic.c' as an example. 1.1781 + 1.1782 + - All public APIs are now in `include/freetype/ftcache.h', (to 1.1783 + be accessed as `FT_CACHE_H'). The contents of 1.1784 + `include/freetype/cache/' is only needed by applications that 1.1785 + wish to implement their own caches. 1.1786 + 1.1787 + - There were some major performance improvements through the use 1.1788 + of various programming tricks. Cache hits are up to 70% 1.1789 + faster than in the old code. 1.1790 + 1.1791 + - The FTC_CMapCache has been simplified. Charmaps can only be 1.1792 + accessed by index right now. There is also a new API named 1.1793 + `FT_Charmap_GetIndex' for this purpose. 1.1794 + 1.1795 + - The demo programs have been updated to the new code. The 1.1796 + previous versions will not work with the current one. 1.1797 + 1.1798 + - Using an invalid face index in FT_Open_Face and friends now 1.1799 + causes an error even if the font contains a single face only. 1.1800 + 1.1801 + 1.1802 + III. MISCELLANEOUS 1.1803 + 1.1804 + - Wolfgang Domröse contributed support files for building FreeType 1.1805 + on the Atari using the PureC compiler. Note that the Atari is a 1.1806 + 16bit platform. 1.1807 + 1.1808 + - Vitaliy Pasternak contributed project files for VS.NET 2003. 1.1809 + 1.1810 + 1.1811 +====================================================================== 1.1812 + 1.1813 +CHANGES BETWEEN 2.1.7 and 2.1.6 1.1814 + 1.1815 + I. IMPORTANT BUG FIXES 1.1816 + 1.1817 + - Updated to newest libtool version, fixing build problems on 1.1818 + various platforms. 1.1819 + 1.1820 + - On Unix platforms, `make install' didn't copy the correct 1.1821 + `ftconfig.h' file. 1.1822 + 1.1823 + Note that version 2.1.7 contains the same library C source code as 1.1824 + version 2.1.6. 1.1825 + 1.1826 + 1.1827 +====================================================================== 1.1828 + 1.1829 +CHANGES BETWEEN 2.1.6 and 2.1.5 1.1830 + 1.1831 + I. IMPORTANT BUG FIXES 1.1832 + 1.1833 + - The PFR font driver didn't load kerning tables correctly, and 1.1834 + the functions in FT_PFR_H didn't work at all. 1.1835 + 1.1836 + - Type 1 font files in binary format (PFB) with an end-of-file 1.1837 + indicator weren't accepted by the FreeType engine. 1.1838 + 1.1839 + - Fonts which contain /PaintType and /StrokeWidth no longer cause 1.1840 + a segfault. This bug has been introduced in version 2.1.5. 1.1841 + 1.1842 + - Fonts loaded with FT_LOAD_RENDER no longer cause strange 1.1843 + results. This bug has been introduced in version 2.1.5. 1.1844 + 1.1845 + - Some Windows (bitmap) FNT/FON files couldn't be handled 1.1846 + correctly. 1.1847 + 1.1848 + 1.1849 + II. IMPORTANT CHANGES 1.1850 + 1.1851 + - The internal module API has been heavily changed in favor of 1.1852 + massive simplifications within the font engine. This also means 1.1853 + that authors of third-party modules must adapt their code to the 1.1854 + new scheme. 1.1855 + 1.1856 + NOTE: THE NEW SCHEME IS NOT COMPLETED YET. PLEASE WAIT UNTIL A 1.1857 + FINAL ANNOUNCEMENT! 1.1858 + 1.1859 + - The PostScript parser has been enhanced to handle comments and 1.1860 + strings correctly. Additionally, more syntax forms are 1.1861 + recognized. 1.1862 + 1.1863 + - Added the optional unpatented hinting system for TrueType. It 1.1864 + allows typefaces which need hinting to produce correct glyph 1.1865 + forms (e.g., Chinese typefaces from Dynalab) to work acceptably 1.1866 + without infringing Apple patents. This system is compiled only 1.1867 + if TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING is defined in 1.1868 + ftoption.h (activated by default). 1.1869 + 1.1870 + 1.1871 + III. MISCELLANEOUS 1.1872 + 1.1873 + - There is now a guard in the public header files to protect 1.1874 + against inclusion of freetype.h from FreeType 1. 1.1875 + 1.1876 + - Direct inclusion of freetype.h and other public header files no 1.1877 + longer works. You have to use the documented scheme 1.1878 + 1.1879 + #include <ft2build.h> 1.1880 + #include FT_FREETYPE_H 1.1881 + 1.1882 + to load freetype.h with a symbolic name. This protects against 1.1883 + renaming of public header files (which shouldn't happen but 1.1884 + actually has, avoiding two public header files with the same 1.1885 + name). 1.1886 + 1.1887 + 1.1888 +====================================================================== 1.1889 + 1.1890 +CHANGES BETWEEN 2.1.5 and 2.1.4 1.1891 + 1.1892 + I. IMPORTANT BUG FIXES 1.1893 + 1.1894 + - Parsing the /CIDFontName field now removes the leading slash to 1.1895 + be in sync with other font drivers. 1.1896 + 1.1897 + - gzip support was buggy. Some fonts could not be read. 1.1898 + 1.1899 + - Fonts which have nested subglyphs more than one level deep no 1.1900 + longer cause a segfault. 1.1901 + 1.1902 + - Creation of synthetic cmaps for fonts in CFF format was broken 1.1903 + partially. 1.1904 + 1.1905 + - Numeric font dictionary entries for synthetic fonts are no 1.1906 + longer overwritten. 1.1907 + 1.1908 + - The font matrix wasn't applied to the advance width for Type1, 1.1909 + CID, and CFF fonts. This caused problems when loading certain 1.1910 + synthetic Type 1 fonts like `Helvetica Narrow'. 1.1911 + 1.1912 + - The test for the charset registry in BDF and PCF fonts is now 1.1913 + case-insensitive. 1.1914 + 1.1915 + - FT_Vector_Rotate sometimes returned strange values due to 1.1916 + rounding errors. 1.1917 + 1.1918 + - The PCF driver now returns the correct number of glyphs 1.1919 + (including an artificial `notdef' glyph at index 0). 1.1920 + 1.1921 + - FreeType now supports buggy CMaps which are contained in many 1.1922 + CJK fonts from Dynalab. 1.1923 + 1.1924 + - Opening an invalid font on a Mac caused a segfault due to 1.1925 + double-freeing memory. 1.1926 + 1.1927 + - BDF fonts with more than 32768 glyphs weren't supported 1.1928 + properly. 1.1929 + 1.1930 + 1.1931 + II. IMPORTANT CHANGES 1.1932 + 1.1933 + - Accessing bitmap font formats has been synchronized. To do that 1.1934 + the FT_Bitmap_Size structure has been extended to contain new 1.1935 + fields `size', `x_ppem', and `y_ppem'. 1.1936 + 1.1937 + - The FNT driver now returns multiple faces, not multiple strikes. 1.1938 + 1.1939 + - The `psnames' module has been updated to the Adobe Glyph List 1.1940 + version 2.0. 1.1941 + 1.1942 + - The `psnames' module now understands `uXXXX[X[X]]' glyph names. 1.1943 + 1.1944 + - The algorithm for guessing the font style has been improved. 1.1945 + 1.1946 + - For fonts in SFNT format, root->height is no longer increased if 1.1947 + the line gap is zero. There exist fonts (containing e.g. form 1.1948 + drawing characters) which intentionally have a zero line gap 1.1949 + value. 1.1950 + 1.1951 + - ft_glyph_bbox_xxx flags are now deprecated in favour of 1.1952 + FT_GLYPH_BBOX_XXX. 1.1953 + 1.1954 + - ft_module_xxx flags are now deprecated in favour of 1.1955 + FT_MODULE_XXX. 1.1956 + 1.1957 + - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now 1.1958 + deprecated in favour of 1.1959 + FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB} -- those encodings 1.1960 + are not specific to Microsoft. 1.1961 + 1.1962 + 1.1963 + III. MISCELLANEOUS 1.1964 + 1.1965 + - The autohinter has been further improved; for example, `m' 1.1966 + glyphs now retain its vertical symmetry. 1.1967 + 1.1968 + - Partial support of Mac fonts on non-Mac platforms. 1.1969 + 1.1970 + - `make refdoc' (after first `make') builds the HTML 1.1971 + documentation. You need Python for this. 1.1972 + 1.1973 + - The make build system should now work more reliably on DOS-like 1.1974 + platforms. 1.1975 + 1.1976 + - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has 1.1977 + been added. 1.1978 + 1.1979 + - Better VMS build support. 1.1980 + 1.1981 + - Support for the pkg-config package by providing a `freetype.pc' 1.1982 + file. 1.1983 + 1.1984 + - New configure option --with-old-mac-fonts for Darwin. 1.1985 + 1.1986 + - Some source files have been renamed (mainly to fit into the 8.3 1.1987 + naming scheme). 1.1988 + 1.1989 + 1.1990 +====================================================================== 1.1991 + 1.1992 +CHANGES BETWEEN 2.1.4 and 2.1.3 1.1993 + 1.1994 + I. IMPORTANT BUG FIXES 1.1995 + 1.1996 + - Updated to newest libtool version, fixing build problems on 1.1997 + various platforms. 1.1998 + 1.1999 + - A fix in the Gzip stream reader: It couldn't read certain .gz 1.2000 + files properly due to a small typo. In certain cases, FreeType 1.2001 + could also loop endlessly when trying to load tiny gzipped 1.2002 + files. 1.2003 + 1.2004 + - The configure script now tries to use the system-wide zlib when 1.2005 + it finds one (instead of the copy found in src/gzip). And 1.2006 + `freetype-config' has been updated to return relevant flags in 1.2007 + this case when invoked with `--libs' (e.g. `-lzlib'). 1.2008 + 1.2009 + - Certain fonts couldn't be loaded by 2.1.3 because they lacked a 1.2010 + Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously 1.2011 + rejected them. 1.2012 + 1.2013 + - The CFF loader was modified to accept fonts which only contain a 1.2014 + subset of their reference charset. This prevented the correct 1.2015 + use of PDF-embedded fonts. 1.2016 + 1.2017 + - The logic to detect Unicode charmaps has been modified. This is 1.2018 + required to support fonts which include both 16-bit and 32-bit 1.2019 + charmaps (like very recent asian ones) using the new 10 and 12 1.2020 + SFNT formats. 1.2021 + 1.2022 + - The TrueType loader now limits the depth of composite glyphs. 1.2023 + This is necessary to prevent broken fonts to break the engine by 1.2024 + blowing the stack with recursive glyph definitions. 1.2025 + 1.2026 + - The CMap cache is now capable of managing UCS-4 character codes 1.2027 + that are mapped through extended charmaps in recent 1.2028 + TrueType/OpenType fonts. 1.2029 + 1.2030 + - The cache sub-system now properly manages out-of-memory 1.2031 + conditions instead of blindly reporting them to the caller. 1.2032 + This means that it will try to empty the cache before restarting 1.2033 + its allocations to see if that can help. 1.2034 + 1.2035 + - The PFR driver didn't return the list of available embedded 1.2036 + bitmaps properly. 1.2037 + 1.2038 + - There was a nasty memory leak when using embedded bitmaps in 1.2039 + certain font formats. 1.2040 + 1.2041 + 1.2042 + II. IMPORTANT CHANGES 1.2043 + 1.2044 + - David Chester contributed some enhancements to the auto-hinter 1.2045 + that significantly increase the quality of its output. The 1.2046 + Postscript hinter was also improved in several ways. 1.2047 + 1.2048 + - The FT_RENDER_MODE_LIGHT render mode was implemented. 1.2049 + 1.2050 + - A new API function called `FT_Get_BDF_Property' has been added 1.2051 + to FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font 1.2052 + files. THIS IS STILL EXPERIMENTAL, since it hasn't been 1.2053 + properly tested yet. 1.2054 + 1.2055 + - A Windows FNT specific API has been added, mostly to access font 1.2056 + headers. This is used by Wine. 1.2057 + 1.2058 + - TrueType tables without an `hmtx' table are now tolerated when 1.2059 + an incremental interface is used. This happens for certain 1.2060 + Type42 fonts passed from Ghostscript to FreeType. 1.2061 + 1.2062 + - The PFR font driver is now capable of returning the font family 1.2063 + and style names when they are available (instead of the sole 1.2064 + `FontID'). This is performed by parsing an *undocumented* 1.2065 + portion of the font file! 1.2066 + 1.2067 + 1.2068 + III. MISCELLANEOUS 1.2069 + 1.2070 + - The path stroker in FT_STROKER_H has entered beta stage. It now 1.2071 + works very well, but its interface might change a bit in the 1.2072 + future. More on this in later releases. 1.2073 + 1.2074 + - The documentation for FT_Size_Metrics didn't appear properly in 1.2075 + the API reference. 1.2076 + 1.2077 + - The file docs/VERSION.DLL has been updated to explain versioning 1.2078 + with FreeType (i.e., comparing release/libtool/so numbers, and 1.2079 + how to use them in autoconf scripts). 1.2080 + 1.2081 + - The installation documentation has been seriously revamped. 1.2082 + Everything is now in the `docs' directory. 1.2083 + 1.2084 + 1.2085 +====================================================================== 1.2086 + 1.2087 +CHANGES BETWEEN 2.1.3 and 2.1.2 1.2088 + 1.2089 + I. IMPORTANT BUG FIXES 1.2090 + 1.2091 + - FT_Vector_Transform had been incorrectly modified in 2.1.2, 1.2092 + resulting in incorrect transformations being applied (for 1.2093 + example, rotations were processed in opposite angles). 1.2094 + 1.2095 + - The format 8 and 12 TrueType charmap enumeration routines have 1.2096 + been fixed (FT_Get_Next_Char returned invalid values). 1.2097 + 1.2098 + - The PFR font driver returned incorrect advance widths if the 1.2099 + outline and metrics resolution defined in the font file were 1.2100 + different. 1.2101 + 1.2102 + - FT_Glyph_To_Bitmap now returns successfully when called with an 1.2103 + FT_BitmapGlyph argument (it previously returned an error). 1.2104 + 1.2105 + - A bug in the Type 1 loader that prevented valid font bounding 1.2106 + boxes to be loaded from multiple master fonts. 1.2107 + 1.2108 + - The SFNT validation code has been rewritten. FreeType can now 1.2109 + load `broken' fonts that were usable on Windows, but not with 1.2110 + previous versions of the library. 1.2111 + 1.2112 + - The computation of bearings in the BDF driver has been fixed. 1.2113 + 1.2114 + - The Postscript hinter crashed when trying to hint certain glyphs 1.2115 + (more precisely, when trying to apply hints to an empty glyph 1.2116 + outline). 1.2117 + 1.2118 + - The TrueType glyph loader now supports composites in `Apple 1.2119 + format' (they differ slightly from Microsoft/OpenType ones in 1.2120 + the way transformation offsets are computed). 1.2121 + 1.2122 + - FreeType was very slow at opening certain asian CID/CFF fonts, 1.2123 + due to fixed increment in dynamic array re-allocations. This 1.2124 + has been changed to exponential behaviour to get acceptable 1.2125 + performance. 1.2126 + 1.2127 + 1.2128 + 1.2129 + II. IMPORTANT CHANGES 1.2130 + 1.2131 + - The PCF driver now supports gzip-compressed font files natively. 1.2132 + This means that you will be able to use all these bitmap fonts 1.2133 + that come with XFree86 with FreeType (and libXft/libXft2, by 1.2134 + extension). 1.2135 + 1.2136 + - The automatic and postscript hinters have both been updated. 1.2137 + This results in a relatively important increase of rendering 1.2138 + quality since many nasty defaults have been suppressed. Please 1.2139 + visit the web page: 1.2140 + 1.2141 + http://www.freetype.org/hinting/smooth-hinting.html 1.2142 + 1.2143 + for additional details on this topic. 1.2144 + 1.2145 + - The `load_flags' parameter of `FT_Load_Glyph' is now an FT_Int32 1.2146 + (instead of just being an FT_Int). This breaks source and 1.2147 + binary compatibility for 16bit systems only, while retaining 1.2148 + both of them for 32 and 64 bit ones. 1.2149 + 1.2150 + Some new flags have been added consequently: 1.2151 + 1.2152 + FT_LOAD_NO_AUTOHINT :: Disable the use of the auto-hinter 1.2153 + (but not native format hinters). 1.2154 + 1.2155 + FT_LOAD_TARGET_NORMAL :: Hint and render for normal 1.2156 + anti-aliased displays. 1.2157 + 1.2158 + FT_LOAD_TARGET_MONO :: Hint and render for 1-bit displays. 1.2159 + 1.2160 + FT_LOAD_TARGET_LCD :: Hint and render for horizontal RGB or 1.2161 + BGR sub-pixel displays (like LCD 1.2162 + screens). THIS IS STILL 1.2163 + EXPERIMENTAL! 1.2164 + 1.2165 + FT_LOAD_TARGET_LCD_V :: Same as FT_LOAD_TARGET_LCD, for 1.2166 + vertical sub-pixel displays (like 1.2167 + rotated LCD screens). THIS IS STILL 1.2168 + EXPERIMENTAL! 1.2169 + 1.2170 + FT_LOAD_MONOCHROME is still supported, but only affects 1.2171 + rendering, not the hinting. 1.2172 + 1.2173 + Note that the `ftview' demo program available in the `ft2demos' 1.2174 + package has been updated to support LCD-optimized display on 1.2175 + non-paletted displays (under Win32 and X11). 1.2176 + 1.2177 + - The PFR driver now supports embedded bitmaps (all formats 1.2178 + supported), and returns correct kerning metrics for all glyphs. 1.2179 + 1.2180 + - The TrueType charmap loader now supports certain `broken' fonts 1.2181 + that load under Windows without problems. 1.2182 + 1.2183 + - The cache API has been slightly modified (it's still a beta!): 1.2184 + 1.2185 + - The type FTC_ImageDesc has been removed; it is now replaced 1.2186 + by FTC_ImageTypeRec. Note that one of its fields is a 1.2187 + `load_flag' parameter for FT_Load_Glyph. 1.2188 + 1.2189 + - The field `num_grays' of FT_SBitRec has been changed to 1.2190 + `max_grays' in order to fit within a single byte. Its 1.2191 + maximum value is thus 255 (instead of 256 as previously). 1.2192 + 1.2193 + 1.2194 + III. MISCELLANEOUS 1.2195 + 1.2196 + - Added support for the DESTDIR variable during `make install'. 1.2197 + This simplifies packaging of FreeType. 1.2198 + 1.2199 + - Included modified copies of the ZLib sources in `src/gzip' in 1.2200 + order to support gzip-compressed PCF fonts. We do not use the 1.2201 + system-provided zlib for now, though this is a probable 1.2202 + enhancement for future releases. 1.2203 + 1.2204 + - The DocMaker tool used to generate the on-line API reference has 1.2205 + been completely rewritten. It is now located in 1.2206 + `src/tools/docmaker/docmaker.py'. Features: 1.2207 + 1.2208 + - better cross-referenced output 1.2209 + - more polished output 1.2210 + - uses Python regular expressions (though it didn't speed the 1.2211 + program) 1.2212 + - much more modular structure, which allows for different 1.2213 + `backends' in order to generate HTML, XML, or whatever 1.2214 + format. 1.2215 + 1.2216 + One can regenerate the API reference by calling: 1.2217 + 1.2218 + python src/tools/docmaker/docmaker.py \ 1.2219 + --prefix=ft2 \ 1.2220 + --title=FreeType-2.1.3 \ 1.2221 + --output=<outputdirectory> 1.2222 + include/freetype/*.h \ 1.2223 + include/freetype/config/*.h \ 1.2224 + include/freetype/cache/*.h 1.2225 + 1.2226 + - A new, experimental, support for incremental font loading (i.e., 1.2227 + loading of fonts where the glyphs are not in the font file 1.2228 + itself, but provided by an external component, like a Postscript 1.2229 + interpreter) has been added by Graham Asher. This is still work 1.2230 + in progress, however. 1.2231 + 1.2232 + - A new, EXPERIMENTAL, path stroker has been added. It doesn't 1.2233 + suffer from severe rounding errors and treat bezier arcs 1.2234 + directly. Still work in progress (i.e. not part of the official 1.2235 + API). See the file <freetype/ftstroker.h> for some of the 1.2236 + details. 1.2237 + 1.2238 + - The massive re-formatting of sources and internal re-design is 1.2239 + still under-way. Many internal functions, constants, and types 1.2240 + have been renamed. 1.2241 + 1.2242 + 1.2243 +====================================================================== 1.2244 + 1.2245 +CHANGES BETWEEN 2.1.2 and 2.1.1 1.2246 + 1.2247 + I. IMPORTANT BUG FIXES 1.2248 + 1.2249 + - Many font drivers didn't select a Unicode charmap by default 1.2250 + when a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS 1.2251 + options enabled), causing many applications to not be able to 1.2252 + display text correctly with the 2.1.x releases. 1.2253 + 1.2254 + - The PFR driver had a bug in its composite loading code that 1.2255 + produces incorrectly placed accents with many fonts. 1.2256 + 1.2257 + - The Type42 driver crashed sometimes due to a nasty bug. 1.2258 + 1.2259 + - The Type 1 custom encoding charmap didn't handle the case where 1.2260 + the first glyph index wasn't 0. 1.2261 + 1.2262 + - A serious typo in the TrueType composite loader produced 1.2263 + incorrectly placed glyphs in fonts like `Wingdings' and a few 1.2264 + others. 1.2265 + 1.2266 + 1.2267 + II. MISCELLANEOUS 1.2268 + 1.2269 + - The Win32 Visual C++ project file has been updated to include 1.2270 + the PFR driver as well. 1.2271 + 1.2272 + - `freetype.m4' is now installed by default by `make install' on 1.2273 + Unix systems. 1.2274 + 1.2275 + - The function FT_Get_PS_Font_Info now works with CID and Type42 1.2276 + fonts as well. 1.2277 + 1.2278 + 1.2279 +====================================================================== 1.2280 + 1.2281 +CHANGES BETWEEN 2.1.1 and 2.1.0 1.2282 + 1.2283 + I. IMPORTANT BUG FIXES 1.2284 + 1.2285 + - The `version_info' returned by `freetype-config' in 2.1.0 1.2286 + returned an invalid value. It now returns 9:1:3 (2.0.9 returned 1.2287 + 9:0:3). 1.2288 + 1.2289 + - Version 2.1.0 couldn't be linked against applications on Win32 1.2290 + and Amiga systems due to a new debug function that wasn't 1.2291 + properly propagated to the system-specific directory in 1.2292 + `builds'. 1.2293 + 1.2294 + - Various MacOS and Mac OS X specific fixes. 1.2295 + 1.2296 + - Fixed a bug in the TrueType charmap validation routines that 1.2297 + made version 2.1.0 too restrictive -- many popular fonts have 1.2298 + been rejected. 1.2299 + 1.2300 + - There was still a very small difference between the monochrome 1.2301 + glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the 1.2302 + bytecode interpreter enabled. This was caused by an invalid 1.2303 + flag setting in the TrueType glyph loader, making the rasterizer 1.2304 + change its drop-out control mode. Now the results should 1.2305 + _really_ be completely identical. 1.2306 + 1.2307 + - The TrueType name table loader has been improved to support many 1.2308 + popular though buggy Asian fonts. It now ignores empty name 1.2309 + entries, invalid pointer offsets and a few other incorrect 1.2310 + subtleties. Moreover, name strings are now loaded on demand, 1.2311 + which reduces the memory load of many faces (e.g. the ARIAL.TTF 1.2312 + font file contains a 10kByte name table with 70 names). 1.2313 + 1.2314 + - Fixed a bug in the Postscript hinter that prevented family blues 1.2315 + substitution to happen correctly. 1.2316 + 1.2317 + 1.2318 + II. NEW FEATURES 1.2319 + 1.2320 + - Three new font drivers in this release: 1.2321 + 1.2322 + * A BDF font driver, contributed by Franco Zappa Nardelli, 1.2323 + heavily modified by Werner Lemberg. It also supports 1.2324 + anti-aliased bitmaps (using a slightly extended BDF format). 1.2325 + 1.2326 + * A Type42 font driver, contributed by Roberto Alameda. It is 1.2327 + still experimental but seems to work relatively well. 1.2328 + 1.2329 + * A PFR font driver, contributed by David Turner himself. It 1.2330 + doesn't support PFR hinting -- note that BitStream has at 1.2331 + least two patents on this format! 1.2332 + 1.2333 + 1.2334 + III. MISCELLANEOUS 1.2335 + 1.2336 + - The cache sub-system has been optimized in important ways. 1.2337 + Cache hits are now significantly faster. For example, using the 1.2338 + CMap cache is about twice faster than calling FT_Get_Char_Index 1.2339 + on most platforms. Similarly, using an SBit cache is about five 1.2340 + times faster than loading the bitmaps from a bitmap file, and 1.2341 + 300 to 500 times faster than generating them from a scalable 1.2342 + format. 1.2343 + 1.2344 + Note that you should recompile your sources if you designed a 1.2345 + custom cache class for the FT2 Cache subsystem, since the 1.2346 + changes performed are source, but not binary, compatible. 1.2347 + 1.2348 + 1.2349 +====================================================================== 1.2350 + 1.2351 +CHANGES BETWEEN 2.1.0 and 2.0.9 1.2352 + 1.2353 + I. IMPORTANT BUG FIXES 1.2354 + 1.2355 + - The TrueType bytecode interpreter has been fixed to produce 1.2356 + _exactly_ the same output as FreeType 1.x. Previous differences 1.2357 + were due to slightly distinct fixed-point computation routines 1.2358 + used to perform dot products and vector length measurements. 1.2359 + 1.2360 + It seems that native TrueType hinting is _extremely_ sensitive 1.2361 + to rounding errors. The required vector computation routines 1.2362 + have been optimized and placed within the `ttinterp.c' file. 1.2363 + 1.2364 + - Fixed the parsing of accelerator tables in the PCF font driver. 1.2365 + 1.2366 + - Fixed the Type1 glyph loader routine used to compute the font's 1.2367 + maximum advance width. 1.2368 + 1.2369 + 1.2370 + II. NEW FEATURES 1.2371 + 1.2372 + - The `configure' script used on Unix systems has been modified to 1.2373 + check that GNU Make is being used to build the library. 1.2374 + Otherwise, it will display a message proposing to use the 1.2375 + GNUMAKE environment variable to name it. 1.2376 + 1.2377 + The Unix-specific file README.UNX has been modified accordingly. 1.2378 + 1.2379 + 1.2380 + III. MISCELLANEOUS 1.2381 + 1.2382 + - The FreeType License in `docs/FTL.TXT' has been updated to 1.2383 + include a proposed preferred disclaimer. If you are using 1.2384 + FreeType in your products, you are encouraged (but not mandated) 1.2385 + to use the following text in your documentation: 1.2386 + 1.2387 + """ 1.2388 + Portions of this software are copyright © 1996-2002 The 1.2389 + FreeType Project (www.freetype.org). All rights reserved. 1.2390 + """ 1.2391 + 1.2392 + - The default size of the render pool has been reduced to 16kByte. 1.2393 + This shouldn't result in any noticeable performance penalty, 1.2394 + unless you are using the engine as-is to render very large and 1.2395 + complex glyphs. 1.2396 + 1.2397 + - The FreeType 2 redesign has begun. More information can be 1.2398 + found at this URL: 1.2399 + 1.2400 + http://www.freetype.org/freetype2/redesign.html 1.2401 + 1.2402 + The following internal changes have been performed within the 1.2403 + sources of this release: 1.2404 + 1.2405 + - Many internal types have been renamed to increase 1.2406 + consistency. The following should be true, except for 1.2407 + public types: 1.2408 + 1.2409 + * All structure types have a name ending in `Rec' (short 1.2410 + for `record'). 1.2411 + 1.2412 + * A pointer-to-structure type has the same name as the 1.2413 + structure, _without_ the `Rec' suffix. 1.2414 + 1.2415 + Example: 1.2416 + 1.2417 + typedef struct FooRec_ 1.2418 + { 1.2419 + ... 1.2420 + 1.2421 + } FooRec, *Foo; 1.2422 + 1.2423 + - Many internal macros have been renamed to increase 1.2424 + consistency. The following should be true: 1.2425 + 1.2426 + * All macros have a name beginning with `FT_'. This 1.2427 + required a few changes like 1.2428 + 1.2429 + ALLOC => FT_ALLOC 1.2430 + FREE => FT_FREE 1.2431 + REALLOC => FT_REALLOC 1.2432 + 1.2433 + * All macros are completely UPPERCASE. This required a 1.2434 + few changes like: 1.2435 + 1.2436 + READ_Short => FT_READ_SHORT 1.2437 + NEXT_Short => FT_NEXT_SHORT 1.2438 + GET_ULongLE => FT_GET_ULONG_LE 1.2439 + MEM_Set => FT_MEM_SET 1.2440 + MEM_Copy => FT_MEM_COPY 1.2441 + etc. 1.2442 + 1.2443 + * Whenever possible, all macro names follow the 1.2444 + FT_<OBJECT>_<METHOD> pattern. For example 1.2445 + 1.2446 + ACCESS_Frame => FT_FRAME_ENTER 1.2447 + FORGET_Frame => FT_FRAME_EXIT 1.2448 + EXTRACT_Frame => FT_FRAME_EXTRACT 1.2449 + RELEASE_Frame => FT_FRAME_RELEASE 1.2450 + 1.2451 + FILE_Pos => FT_STREAM_POS 1.2452 + FILE_Seek => FT_STREAM_SEEK 1.2453 + FILE_Read => FT_STREAM_READ 1.2454 + FILE_ReadAt => FT_STREAM_READ_AT 1.2455 + READ_Fields => FT_STREAM_READ_FIELDS 1.2456 + 1.2457 + - Many internal functions have been renamed to follow the 1.2458 + FT_<Object>_<Method> pattern. For example: 1.2459 + 1.2460 + FT_Seek_Stream => FT_Stream_Seek 1.2461 + FT_Read_Stream_At => FT_Stream_ReadAt 1.2462 + FT_Done_Stream => FT_Stream_Close 1.2463 + FT_New_Stream => FT_Stream_Open 1.2464 + FT_New_Memory_Stream => FT_Stream_OpenMemory 1.2465 + FT_Extract_Frame => FT_Stream_ExtractFrame 1.2466 + 1.2467 + Note that method names do not contain `_'. 1.2468 + 1.2469 + - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced 1.2470 + with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a 1.2471 + type as the fourth argument. Instead, the array element 1.2472 + type size is computed automatically from the type of the 1.2473 + target pointer used. 1.2474 + 1.2475 + - A new object class, FT_CMap, has been introduced. These 1.2476 + internal objects are used to model character maps. This 1.2477 + eases the support of additional charmap types within the 1.2478 + engine. 1.2479 + 1.2480 + - A new configuration file named `ftstdlib.h' has been added 1.2481 + to `include/freetype/config'. It is used to define aliases 1.2482 + for _every_ routine of the ISO C library that the font 1.2483 + engine uses. Each aliases has a `ft_' prefix 1.2484 + (e.g. `ft_strlen' is an alias for `strlen'). 1.2485 + 1.2486 + This is used to ease the porting of FreeType 2 to exotic 1.2487 + runtime environments where the ISO C Library isn't available 1.2488 + (e.g. XFree86 extension modules). 1.2489 + 1.2490 + More details are available in the `ChangeLog' file. 1.2491 + 1.2492 + 1.2493 +====================================================================== 1.2494 + 1.2495 +CHANGES BETWEEN 2.0.9 and 2.0.8 1.2496 + 1.2497 + I. IMPORTANT BUG FIXES 1.2498 + 1.2499 + - Certain fonts like `foxjump.ttf' contain broken name tables with 1.2500 + invalid entries and wild offsets. This caused FreeType to crash 1.2501 + when trying to load them. 1.2502 + 1.2503 + The SFNT `name' table loader has been fixed to be able to 1.2504 + support these strange fonts. 1.2505 + 1.2506 + Moreover, the code in charge of processing this table has been 1.2507 + changed to always favour Windows-formatted entries over other 1.2508 + ones. Hence, a font that works on Windows but not on the Mac 1.2509 + will load cleanly in FreeType and report accurate values for 1.2510 + Family & PostScript names. 1.2511 + 1.2512 + - The CID font driver has been fixed. It unfortunately returned a 1.2513 + Postscript Font name with a leading slash, as in 1.2514 + `/MunhwaGothic-Regular'. 1.2515 + 1.2516 + - FreeType 2 should now compile fine on AIX 4.3.3 as a shared 1.2517 + library. 1.2518 + 1.2519 + - A bug in the Postscript hinter has been found and fixed, 1.2520 + removing un-even stem widths at small pixel sizes (like 14-17). 1.2521 + 1.2522 + This improves the quality of a certain number of Postscript 1.2523 + fonts. 1.2524 + 1.2525 + 1.2526 + II. NEW FEATURES 1.2527 + 1.2528 + - A new function named `FT_Library_Version' has been added to 1.2529 + return the current library's major, minor, and patch version 1.2530 + numbers. This is important since the macros FREETYPE_MAJOR, 1.2531 + FREETYPE_MINOR, and FREETYPE_PATCH cannot be used when the 1.2532 + library is dynamically linked by a program. 1.2533 + 1.2534 + - Two new APIs have been added: `FT_Get_First_Char' and 1.2535 + `FT_Get_Next_Char'. 1.2536 + 1.2537 + Together, these can be used to iterate efficiently over the 1.2538 + currently selected charmap of a given face. Read the API 1.2539 + reference for more details. 1.2540 + 1.2541 + 1.2542 + III. MISCELLANEOUS 1.2543 + 1.2544 + - The FreeType sources are under heavy internal re-factoring. As 1.2545 + a consequence, we have created a branch named `STABLE' on the 1.2546 + CVS to hold all future releases/fixes in the 2.0.x family. 1.2547 + 1.2548 + The HEAD branch now contains the re-factored sources and 1.2549 + shouldn't be used for testing or packaging new releases. In 1.2550 + case you would like to access the 2.0.9 sources from our CVS 1.2551 + repository, use the tag `VER-2-0-9'. 1.2552 + 1.2553 + 1.2554 +====================================================================== 1.2555 + 1.2556 +CHANGES BETWEEN 2.0.8 and 2.0.7 1.2557 + 1.2558 + I. IMPORTANT BUG FIXES 1.2559 + 1.2560 + - There was a small but nasty bug in `freetype-config.in' which 1.2561 + caused the `freetype-config' script to fail on Unix. 1.2562 + 1.2563 + This didn't prevent the installation of the library or even its 1.2564 + execution, but caused problems when trying to compile many Unix 1.2565 + packages that depend on it. 1.2566 + 1.2567 + - Some TrueType or OpenType fonts embedded in PDF documents do not 1.2568 + have a 'cmap', 'post' and 'name' as is required by the 1.2569 + specification. FreeType no longer refuses to load such fonts. 1.2570 + 1.2571 + - Various fixes to the PCF font driver. 1.2572 + 1.2573 + 1.2574 +====================================================================== 1.2575 + 1.2576 +CHANGES BETWEEN 2.0.7 and 2.0.6 1.2577 + 1.2578 + I. IMPORTANT BUG FIXES 1.2579 + 1.2580 + - Fixed two bugs in the Type 1 font driver. The first one 1.2581 + resulted in a memory leak in subtle cases. The other one caused 1.2582 + FreeType to crash when trying to load `.gsf' files (Ghostscript 1.2583 + so-called Postscript fonts). 1.2584 + 1.2585 + (This made _many_ KDE applications crash on certain systems. 1.2586 + FreeType _is_ becoming a critical system component on Linux :-) 1.2587 + 1.2588 + - Fixed a memory leak in the CFF font driver. 1.2589 + 1.2590 + - Fixed a memory leak in the PCF font driver. 1.2591 + 1.2592 + - Fixed the Visual C++ project file 1.2593 + `builds/win32/visualc/freetype.dsp' since it didn't include the 1.2594 + Postscript hinter component, causing errors at build time. 1.2595 + 1.2596 + - Fixed a small rendering bug in the anti-aliased renderer that 1.2597 + only occurred when trying to draw thin (less than 1 pixel) 1.2598 + strokes. 1.2599 + 1.2600 + - Fixed `builds/unix/freetype2.a4' which is used to generate a 1.2601 + valid `freetype2.m4' for use with autoconf. 1.2602 + 1.2603 + - Fixed the OpenVMS Makefiles. 1.2604 + 1.2605 + 1.2606 + II. MISCELLANEOUS 1.2607 + 1.2608 + - Added `configure' and `install' scripts to the top-level 1.2609 + directory. A GNU-style installation is thus now easily possible 1.2610 + with 1.2611 + 1.2612 + ./configure <options> 1.2613 + make 1.2614 + make install 1.2615 + 1.2616 + 1.2617 +====================================================================== 1.2618 + 1.2619 +CHANGES BETWEEN 2.0.6 and 2.0.5 1.2620 + 1.2621 + I. IMPORTANT BUG FIXES 1.2622 + 1.2623 + - It wasn't possible to load embedded bitmaps when the auto-hinter 1.2624 + was used. This is now fixed. 1.2625 + 1.2626 + - The TrueType font driver didn't load some composites properly 1.2627 + (the sub-glyphs were slightly shifted, and this was only 1.2628 + noticeable when using monochrome rendering). 1.2629 + 1.2630 + - Various fixes to the auto-hinter. They merely improve the 1.2631 + output of sans-serif fonts. Note that there are still problems 1.2632 + with serifed fonts and composites (accented characters). 1.2633 + 1.2634 + - All scalable font drivers erroneously returned un-fitted glyph 1.2635 + advances when hinting was requested. This created problems for 1.2636 + a number of layout applications. This is a very old bug that 1.2637 + got undetected mainly because most test/demo program perform 1.2638 + rounding explicitly or implicitly (through the cache). 1.2639 + 1.2640 + - `FT_Glyph_To_Bitmap' did erroneously modify the source glyph in 1.2641 + certain cases. 1.2642 + 1.2643 + - `glnames.py' still contained a bug that made FreeType return 1.2644 + invalid names for certain glyphs. 1.2645 + 1.2646 + - The library crashed when loading certain Type 1 fonts like 1.2647 + `sadn.pfb' (`Stalingrad Normal'), which appear to contain 1.2648 + pathetic font info dictionaries. 1.2649 + 1.2650 + - The TrueType glyph loader is now much more paranoid and checks 1.2651 + everything when loading a given glyph image. This was necessary 1.2652 + to avoid problems (crashes and/or memory overwrites) with broken 1.2653 + fonts that came from a really buggy automatic font converter. 1.2654 + 1.2655 + 1.2656 + II. IMPORTANT UPDATES AND NEW FEATURES 1.2657 + 1.2658 + - Important updates to the Mac-specific parts of the library. 1.2659 + 1.2660 + - The caching sub-system has been completely re-designed, and its 1.2661 + API has evolved (the old one is still supported for backward 1.2662 + compatibility). 1.2663 + 1.2664 + The documentation for it is not yet completed, sorry. For now, 1.2665 + you are encouraged to continue using the old API. However, the 1.2666 + ftview demo program in the ft2demos package has already been 1.2667 + updated to use the new caching functions. 1.2668 + 1.2669 + - A new charmap cache is provided too. See `FTC_CMapCache'. This 1.2670 + is useful to perform character code -> glyph index translations 1.2671 + quickly, without the need for an opened FT_Face. 1.2672 + 1.2673 + - A NEW POSTSCRIPT HINTER module has been added to support native 1.2674 + hints in the following formats: PostScript Type 1, PostScript 1.2675 + CID, and CFF/CEF. 1.2676 + 1.2677 + Please test! Note that the auto-hinter produces better results 1.2678 + for a number of badly-hinted fonts (mostly auto-generated ones) 1.2679 + though. 1.2680 + 1.2681 + - A memory debugger is now part of the standard FreeType sources. 1.2682 + To enable it, define FT_DEBUG_MEMORY in 1.2683 + <freetype/config/ftoption.h>, and recompile the library. 1.2684 + 1.2685 + Additionally, define the _environment_ variable FT_DEBUG_MEMORY 1.2686 + and run any program using FreeType. When the library is exited, 1.2687 + a summary of memory footprints and possible leaks will be 1.2688 + displayed. 1.2689 + 1.2690 + This works transparently with _any_ program that uses FreeType. 1.2691 + However, you will need a lot of memory to use this (allocated 1.2692 + blocks are never released to the heap to detect double deletes 1.2693 + easily). 1.2694 + 1.2695 + 1.2696 + III. MISCELLANEOUS 1.2697 + 1.2698 + - We are aware of subtle differences between the output of 1.2699 + FreeType versions 1 and 2 when it comes to monochrome 1.2700 + TrueType-hinted glyphs. These are most probably due to small 1.2701 + differences in the monochrome rasterizers and will be worked out 1.2702 + in an upcoming release. 1.2703 + 1.2704 + - We have decided to fork the sources in a `stable' branch, and an 1.2705 + `unstable' one, since FreeType is becoming a critical component 1.2706 + of many Unix systems. 1.2707 + 1.2708 + The next bug-fix releases of the library will be named 2.0.7, 1.2709 + 2.0.8, etc., while the `2.1' branch will contain a version of 1.2710 + the sources where we will start major reworking of the library's 1.2711 + internals, in order to produce FreeType 2.2.0 (or even 3.0) in a 1.2712 + more distant future. 1.2713 + 1.2714 + We also hope that this scheme will allow much more frequent 1.2715 + releases than in the past. 1.2716 + 1.2717 + 1.2718 +====================================================================== 1.2719 + 1.2720 +CHANGES BETWEEN 2.0.5 and 2.0.4 1.2721 + 1.2722 + NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER. THIS MODULE 1.2723 + WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1) 1.2724 + 1.2725 + - Fixed a bug that made certain glyphs, like `Cacute', `cacute' and 1.2726 + `lslash' unavailable from Unicode charmaps of Postscript fonts. 1.2727 + This prevented the correct display of Polish text, for example. 1.2728 + 1.2729 + - The kerning table of Type 1 fonts was loaded by FreeType, when its 1.2730 + AFM file was attached to its face, but the 1.2731 + FT_FACE_FLAG_HAS_KERNING bit flags was not set correctly, 1.2732 + preventing FT_Get_Kerning to return meaningful values. 1.2733 + 1.2734 + - Improved SFNT (TrueType & OpenType) charmap support. Slightly 1.2735 + better performance, as well as support for the new formats defined 1.2736 + by the OpenType 1.3 specification (8, 10, and 12) 1.2737 + 1.2738 + - Fixed a serious typo in `src/base/ftcalc.c' which caused invalid 1.2739 + computations in certain rare cases, producing ugly artefacts. 1.2740 + 1.2741 + - The size of the EM square is computed with a more accurate 1.2742 + algorithm for Postscript fonts. The old one caused slight errors 1.2743 + with embedded fonts found in PDF documents. 1.2744 + 1.2745 + - Fixed a bug in the cache manager that prevented normal LRU 1.2746 + behaviour within the cache manager, causing unnecessary reloads 1.2747 + (for FT_Face and FT_Size objects only). 1.2748 + 1.2749 + - Added a new function named `FT_Get_Name_Index' to retrieve the 1.2750 + glyph index of a given glyph name, when found in a face. 1.2751 + 1.2752 + - Added a new function named `FT_Get_Postscript_Name' to retrieve 1.2753 + the `unique' Postscript font name of a given face. 1.2754 + 1.2755 + - Added a new public header size named FT_SIZES_H (or 1.2756 + <freetype/ftsizes.h>) providing new FT_Size-management functions: 1.2757 + FT_New_Size, FT_Activate_Size, FT_Done_Size. 1.2758 + 1.2759 + - Fixed a reallocation bug that generated a dangling pointer (and 1.2760 + possibly memory leaks) with Postscript fonts (in 1.2761 + src/psaux/psobjs.c). 1.2762 + 1.2763 + - Many fixes for 16-bit correctness. 1.2764 + 1.2765 + - Removed many pedantic compiler warnings from the sources. 1.2766 + 1.2767 + - Added an Amiga build directory in `builds/amiga'. 1.2768 + 1.2769 + 1.2770 +====================================================================== 1.2771 + 1.2772 +CHANGES BETWEEN 2.0.4 and 2.0.3 1.2773 + 1.2774 + - Fixed a rather annoying bug that was introduced in 2.0.3. Namely, 1.2775 + the font transformation set through FT_Set_Transform was applied 1.2776 + twice to auto-hinted glyphs, resulting in incorrectly rotated text 1.2777 + output. 1.2778 + 1.2779 + - Fixed _many_ compiler warnings. FT2 should now compile cleanly 1.2780 + with Visual C++'s most pedantic warning level (/W4). It already 1.2781 + compiled fine with GCC and a few other compilers. 1.2782 + 1.2783 + - Fixed a bug that prevented the linear advance width of composite 1.2784 + TrueType glyphs to be correctly returned. 1.2785 + 1.2786 + - Fixed the Visual C++ project files located in 1.2787 + `builds/win32/visualc' (previous versions used older names of the 1.2788 + library). 1.2789 + 1.2790 + - Many 32-bit constants have an `L' appended to their value, in 1.2791 + order to improve the 16-bitness of the code. Someone is actually 1.2792 + trying to use FT2 on an Atari ST machine! 1.2793 + 1.2794 + - Updated the `builds/detect.mk' file in order to automatically 1.2795 + build FT2 on AIX systems. AIX uses `/usr/sbin/init' instead of 1.2796 + `/sbin/init' and wasn't previously detected as a Unix platform by 1.2797 + the FreeType build system. 1.2798 + 1.2799 + - Updated the Unix-specific portions of the build system (new 1.2800 + libtool version, etc.). 1.2801 + 1.2802 + - The SFNT kerning loader now ensures that the table is sorted 1.2803 + (since some problem fonts do not meet this requirement). 1.2804 + 1.2805 + 1.2806 +======================================================================= 1.2807 + 1.2808 +CHANGES BETWEEN 2.0.3 and 2.0.2 1.2809 + 1.2810 + I. CHANGES TO THE MODULES / FONT DRIVERS 1.2811 + 1.2812 + - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix 1.2813 + several annoying artefacts, mainly: 1.2814 + 1.2815 + - Blue zone alignment of horizontal stems wasn't performed 1.2816 + correctly, resulting in artefacts like the `d' being placed 1.2817 + one pixel below the `b' in some fonts like Time New Roman. 1.2818 + 1.2819 + - Overshoot thresholding wasn't performed correctly, creating 1.2820 + unpleasant artefacts at large character pixel sizes. 1.2821 + 1.2822 + - Composite glyph loading has been simplified. This gets rid 1.2823 + of various artefacts where the components of a composite 1.2824 + glyphs were not correctly spaced. 1.2825 + 1.2826 + These are the last changes to the current auto-hinting module. 1.2827 + A new hinting sub-system is currently in the work in order to 1.2828 + support native hints in Type 1 / CFF / OpenType fonts, as well 1.2829 + as globally improve rendering. 1.2830 + 1.2831 + - The PCF driver has been fixed. It reported invalid glyph 1.2832 + dimensions for the fonts available on Solaris. 1.2833 + 1.2834 + - The Type 1, CID and CFF drivers have been modified to fix the 1.2835 + computation of the EM size. 1.2836 + 1.2837 + - The Type 1 driver has been fixed to avoid a dangerous bug that 1.2838 + crashed the library with non-conforming fonts (i.e. ones that do 1.2839 + not place the .notdef glyph at position 0). 1.2840 + 1.2841 + - The TrueType driver had a rather subtle bug (dangling pointer 1.2842 + when loading composite glyphs) that could crash the library in 1.2843 + rare occasions! 1.2844 + 1.2845 + 1.2846 + II. HIGH-LEVEL API CHANGES 1.2847 + 1.2848 + - The error code enumeration values have been changed. An error 1.2849 + value is decomposed in a generic error code, and a module 1.2850 + number. see <freetype/fterrors.h> for details. 1.2851 + 1.2852 + - A new public header file has been introduced, named 1.2853 + FT_TRIGONOMETRY_H (include/freetype/fttrigon.h), providing 1.2854 + trigonometric functions to compute sines, cosines, arctangents, 1.2855 + etc. with 16.16 fixed precision. The implementation is based on 1.2856 + the CORDIC algorithm and is very fast while being sufficiently 1.2857 + accurate. 1.2858 + 1.2859 + 1.2860 + III. INTERNALS 1.2861 + 1.2862 + - Added BeOS-specific files in the old build sub-system. Note 1.2863 + that no changes were required to compile the library with Jam. 1.2864 + 1.2865 + - The configuration is now capable of automatically detecting 1.2866 + 64-bit integers on a set of predefined compilers (GCC, Visual 1.2867 + C++, Borland C++) and will use them by default. This provides a 1.2868 + small performance boost. 1.2869 + 1.2870 + - A small memory leak that happened when opening 0-sized files 1.2871 + (duh!) have been fixed. 1.2872 + 1.2873 + - Fixed bezier stack depth bug in the routines provided by the 1.2874 + FT_BBOX_H header file. Also fixed similar bugs in the 1.2875 + rasterizers. 1.2876 + 1.2877 + - The outline bounding box code has been rewritten to use direct 1.2878 + computations, instead of bezier sub-division, to compute the 1.2879 + exact bounding box of glyphs. This is slightly slower but more 1.2880 + accurate. 1.2881 + 1.2882 + - The build system has been improved and fixed, mainly to support 1.2883 + `make' on Windows 2000 correctly, avoid problems with `make 1.2884 + distclean' on non Unix systems, etc. 1.2885 + 1.2886 + - Hexadecimal constants have been suffixed with `U' to avoid 1.2887 + problems with certain compilers on 64-bit platforms. 1.2888 + 1.2889 + - A new directory named `src/tools' has been created. It contains 1.2890 + Python scripts and simple unit test programs used to develop the 1.2891 + library. 1.2892 + 1.2893 + - The DocMaker tool has been moved from `docs' to `src/tools' and 1.2894 + has been updated with the following: 1.2895 + 1.2896 + - Now accepts the `--title=XXXX' or `-t XXXX' option from the 1.2897 + command line to set the project's name in the generated API 1.2898 + reference. 1.2899 + 1.2900 + - Now accepts the `--output=DIR' or `-o DIR' option from the 1.2901 + command line to set the output directory for all generated 1.2902 + HTML files. 1.2903 + 1.2904 + - Now accepts the `--prefix=XXXX' or `-p XXX' option from the 1.2905 + command line to set the file prefix to use for all 1.2906 + generated HTML files. 1.2907 + 1.2908 + - Now generates the current time/data on each generated page 1.2909 + in order to distinguish between versions. 1.2910 + 1.2911 + DocMaker can be used with other projects now, not only FT2 1.2912 + (e.g. MLib, FTLayout, etc.). 1.2913 + 1.2914 + 1.2915 +====================================================================== 1.2916 + 1.2917 +CHANGES BETWEEN 2.0.2 and 2.0.1 1.2918 + 1.2919 + I. CHANGES TO THE MODULES / FONT DRIVERS 1.2920 + 1.2921 + - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to 1.2922 + avoid legal problems with the Apple patents. It seems that we 1.2923 + mistakenly turned this option on in previous releases of the 1.2924 + build. 1.2925 + 1.2926 + Note that if you want to use the bytecode interpreter in order 1.2927 + to get high-quality TrueType rendering, you will need to toggle 1.2928 + by hand the definition of the 1.2929 + TT_CONFIG_OPTION_BYTECODE_INTERPRETER macro in the file 1.2930 + `include/freetype/config/ftoption.h'. 1.2931 + 1.2932 + - The CFF driver has been improved by Tom Kacvinsky and Sander van 1.2933 + der Wal: 1.2934 + 1.2935 + * Support for `seac' emulation. 1.2936 + * Support for `dotsection'. 1.2937 + * Support for retrieving glyph names through 1.2938 + `FT_Get_Glyph_Name'. 1.2939 + 1.2940 + The first two items are necessary to correctly a large number of 1.2941 + Type 1 fonts converted to the CFF formats by Adobe Acrobat. 1.2942 + 1.2943 + - The Type 1 driver was also improved by Tom & others: 1.2944 + 1.2945 + * Better EM size computation. 1.2946 + * Better support for synthetic (transformed) fonts. 1.2947 + * The Type 1 driver returns the charstrings corresponding to 1.2948 + each glyph in the `glyph->control_data' field after a call to 1.2949 + `FT_Load_Glyph' (thanks Ha Shao). 1.2950 + 1.2951 + - Various other bugfixes, including the following: 1.2952 + 1.2953 + * Fixed a nasty memory leak in the Type 1 driver. 1.2954 + * The autohinter and the pcf driver used static writable data 1.2955 + when they shouldn't. 1.2956 + * Many casts were added to make the code more 64-bits safe. It 1.2957 + also now compiles on Windows XP 64-bits without warnings. 1.2958 + * Some incorrect writable statics were removed in the `autohint' 1.2959 + and `pcf' drivers. FreeType 2 now compiles on Epoc again. 1.2960 + 1.2961 + 1.2962 + II. CHANGES TO THE HIGH-LEVEL API 1.2963 + 1.2964 + - The library header files inclusion scheme has been changed. The 1.2965 + old scheme looked like: 1.2966 + 1.2967 + #include <freetype/freetype.h> 1.2968 + #include <freetype/ftglyph.h> 1.2969 + #include <freetype/ftcache.h> 1.2970 + #include <freetype/cache/ftimage.h> 1.2971 + 1.2972 + Now you should use: 1.2973 + 1.2974 + #include <ft2build.h> 1.2975 + #include FT_FREETYPE_H 1.2976 + #include FT_GLYPH_H 1.2977 + #include FT_CACHE_H 1.2978 + #include FT_CACHE_IMAGE_H 1.2979 + 1.2980 + NOTE THAT THE OLD INCLUSION SCHEME WILL STILL WORK WITH THIS 1.2981 + RELEASE. HOWEVER, WE DO NOT GUARANTEE THAT THIS WILL STILL BE 1.2982 + TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1). 1.2983 + 1.2984 + The file <ft2build.h> is used to define the header filename 1.2985 + macros. The complete and commented list of macros is available 1.2986 + in the API reference under the section name `Header File Macros' 1.2987 + in Chapter I. 1.2988 + 1.2989 + For more information, see section I of the following document: 1.2990 + 1.2991 + http://www.freetype.org/ 1.2992 + freetype2/docs/tutorial/step1.html 1.2993 + 1.2994 + or 1.2995 + 1.2996 + http://freetype.sourceforge.net/ 1.2997 + freetype2/docs/tutorial/step1.html 1.2998 + 1.2999 + - Many, many comments have been added to the public source file in 1.3000 + order to automatically generate the API Reference through the 1.3001 + `docmaker.py' Python script. 1.3002 + 1.3003 + The latter has been updated to support the grouping of sections 1.3004 + in chapters and better index sort. See: 1.3005 + 1.3006 + http://www.freetype.org/freetype2/docs/reference/ft2-toc.html 1.3007 + 1.3008 + 1.3009 + III. CHANGES TO THE BUILD PROCESS 1.3010 + 1.3011 + - If you are not building FreeType 2 with its own build system 1.3012 + (but with your own Makefiles or project files), you will need to 1.3013 + be aware that the build process has changed a little bit. 1.3014 + 1.3015 + You don't need to put the `src' directory in the include path 1.3016 + when compiling any FT2 component. Instead, simply put the 1.3017 + component's directory in the current include path. 1.3018 + 1.3019 + So, if you were doing something like: 1.3020 + 1.3021 + cc -c -Iinclude -Isrc src/base/ftbase.c 1.3022 + 1.3023 + change the line to: 1.3024 + 1.3025 + cc -c -Iinclude -Isrc/base src/base/ftbase.c 1.3026 + 1.3027 + If you were doing something like: 1.3028 + 1.3029 + cd src/base 1.3030 + cc -c -I../../include -I.. ftbase.c 1.3031 + 1.3032 + change it to: 1.3033 + 1.3034 + cd src/base 1.3035 + cc -c -I../../include ftbase.c 1.3036 + 1.3037 + 1.3038 +====================================================================== 1.3039 + 1.3040 +CHANGES BETWEEN 2.0.1 and 2.0 1.3041 + 1.3042 + 2.0.1 introduces a few changes: 1.3043 + 1.3044 + - Fixed many bugs related to the support of CFF / OpenType fonts. 1.3045 + These formats are now much better supported though there is 1.3046 + still work planned to deal with charset tables and PDF-embedded 1.3047 + CFF files that use the old `seac' command. 1.3048 + 1.3049 + - The library could not be compiled in debug mode with a very 1.3050 + small number of C compilers whose pre-processors didn't 1.3051 + implement the `##' directive correctly (i.e. per se the ANSI C 1.3052 + specification!) An elegant fix was found. 1.3053 + 1.3054 + - Added support for the free Borland command-line C++ Builder 1.3055 + compiler. Use `make setup bcc32'. Also fixed a few source 1.3056 + lines that generated new warnings with BCC32. 1.3057 + 1.3058 + - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of 1.3059 + a conic Bezier arc. 1.3060 + 1.3061 + - Updated the INSTALL file to add IDE compilation. 1.3062 + 1.3063 + - Other minor bug fixes, from invalid Type 1 style flags to 1.3064 + correct support of synthetic (obliqued) fonts in the 1.3065 + auto-hinter, better support for embedded bitmaps in a SFNT font. 1.3066 + 1.3067 + - Fixed some problems with `freetype-config'. 1.3068 + 1.3069 + Finally, the `standard' scheme for including FreeType headers is now 1.3070 + gradually changing, but this will be explained in a later release 1.3071 + (probably 2.0.2). 1.3072 + 1.3073 + And very special thanks to Tom Kacvinsky and YAMANO-UCHI Hidetoshi 1.3074 + for their contributions! 1.3075 + 1.3076 + 1.3077 +====================================================================== 1.3078 + 1.3079 +CHANGES BETWEEN beta8 and 2.0 1.3080 + 1.3081 + - Changed the default installation path for public headers from 1.3082 + `include/freetype' to `include/freetype2'. 1.3083 + 1.3084 + Also added a new `freetype-config' that is automatically generated 1.3085 + and installed on Unix and Cygwin systems. The script itself is 1.3086 + used to retrieve the current install path, C compilation flags as 1.3087 + well as linker flags. 1.3088 + 1.3089 + - Fixed several small bugs: 1.3090 + 1.3091 + * Incorrect max advance width for fixed-pitch Type 1 fonts. 1.3092 + * Incorrect glyph names for certain TrueType fonts. 1.3093 + * The glyph advance was not copied when FT_Glyph_To_Bitmap was 1.3094 + called. 1.3095 + * The linearHoriAdvance and linearVertAdvance fields were not 1.3096 + correctly returned for glyphs processed by the auto-hinter. 1.3097 + * `type1z' renamed back to `type1'; the old `type1' module has 1.3098 + been removed. 1.3099 + 1.3100 + - Revamped the build system to make it a lot more generic. This 1.3101 + will allow us to re-use nearly un-modified in lots of other 1.3102 + projects (including FreeType Layout). 1.3103 + 1.3104 + - Changed `cid' to use `psaux' too. 1.3105 + 1.3106 + - Added the cache sub-system. See <freetype/ftcache.h> as well as 1.3107 + the sources in `src/cache'. Note that it compiles but is still 1.3108 + untested for now. 1.3109 + 1.3110 + - Updated `docs/docmaker.py', a draft API reference is available at 1.3111 + http://www.freetype.org/ft2api.html. 1.3112 + 1.3113 + - Changed `type1' to use `psaux'. 1.3114 + 1.3115 + - Created a new module named `psaux' to hold the Type 1 & Type 2 1.3116 + parsing routines. It should be used by `type1', `cid', and `cff' 1.3117 + in the future. 1.3118 + 1.3119 + - Fixed an important bug in `FT_Glyph_Get_CBox'. 1.3120 + 1.3121 + - Fixed some compiler warnings that happened since the TrueType 1.3122 + bytecode decoder was deactivated by default. 1.3123 + 1.3124 + - Fixed two memory leaks: 1.3125 + 1.3126 + * The memory manager (16 bytes) isn't released in 1.3127 + FT_Done_FreeType! 1.3128 + * Using custom input streams, the copy of the original stream was 1.3129 + never released. 1.3130 + 1.3131 + - Fixed the auto-hinter by performing automatic computation of the 1.3132 + `filling direction' of each glyph. This is done through a simple 1.3133 + and fast approximation, and seems to work (problems spotted by 1.3134 + Werner though). The Arphic fonts are a lot nicer though there are 1.3135 + still a lot of things to do to handle Asian fonts correctly. 1.3136 + 1.3137 + 1.3138 +====================================================================== 1.3139 + 1.3140 +BETA-8 (RELEASE CANDIDATE) CHANGES 1.3141 + 1.3142 + - Deactivated the TrueType bytecode interpreter by default. 1.3143 + 1.3144 + - Deactivated the `src/type1' font driver. Now `src/type1z' is used 1.3145 + by default. 1.3146 + 1.3147 + - Updates to the build system. We now compile the library correctly 1.3148 + under Unix system through `configure' which is automatically 1.3149 + called on the first `make' invocation. 1.3150 + 1.3151 + - Added the auto-hinting module! Fixing some bugs here and there. 1.3152 + 1.3153 + - Found some bugs in the composite loader (seac) of the Type1-based 1.3154 + font drivers. 1.3155 + 1.3156 + - Renamed the directory `freetype2/config' to `freetype2/builds' and 1.3157 + updated all relevant files. 1.3158 + 1.3159 + - Found a memory leak in the `type1' driver. 1.3160 + 1.3161 + - Incorporated Tom's patches to support flex operators correctly in 1.3162 + OpenType/CFF fonts. Now all I need is to support pure CFF and CEF 1.3163 + fonts to be done with this driver :-) 1.3164 + 1.3165 + - Added the Windows FNT/FON driver in `src/winfonts'. For now, it 1.3166 + always `simulates' a Unicode charmap, so it shouldn't be 1.3167 + considered completed right now. 1.3168 + 1.3169 + It is there to be more a proof of concept than anything else 1.3170 + anyway. The driver is a single C source file, that compiles to 3 1.3171 + Kb of code. 1.3172 + 1.3173 + I'm still working on the PCF/BDF drivers, but I'm too lazy to 1.3174 + finish them now. 1.3175 + 1.3176 + - CHANGES TO THE HIGH-LEVEL API 1.3177 + 1.3178 + * FT_Get_Kerning has a new parameter that allows you to select the 1.3179 + coordinates of the kerning vector (font units, scaled, scaled + 1.3180 + grid-fitted). 1.3181 + * The outline functions are now in <freetype/ftoutln.h> and not 1.3182 + part of <freetype/freetype.h> anymore. 1.3183 + * <freetype/ftmodule.h> now contains declarations for 1.3184 + FT_New_Library, FT_Done_Library, FT_Add_Default_Modules. 1.3185 + * The so-called convenience functions have moved from `ftoutln.c' 1.3186 + to `ftglyph.c', and are thus available with this optional 1.3187 + component of the library. They are declared in 1.3188 + <freetype/ftglyph.h> now. 1.3189 + * Anti-aliased rendering is now the default for FT_Render_Glyph 1.3190 + (i.e. corresponds to render_mode == 0 == ft_render_mode_normal). 1.3191 + To generate a monochrome bitmap, use ft_render_mode_mono, or the 1.3192 + FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char. 1.3193 + FT_LOAD_ANTI_ALIAS is still defined, but values to 0. 1.3194 + * <freetype/freetype.h> now include <freetype/config/ftconfig.h>, 1.3195 + solving a few headaches :-) 1.3196 + * The type FT_GlyphSlotRec has now a `library' field. 1.3197 + 1.3198 + - CHANGES TO THE `ftglyph.h' API 1.3199 + 1.3200 + This API has been severely modified in order to make it simpler, 1.3201 + clearer, and more efficient. It certainly now looks like a real 1.3202 + `glyph factory' object, and allows client applications to manage 1.3203 + (i.e. transform, bbox and render) glyph images without ever 1.3204 + knowing their original format. 1.3205 + 1.3206 + - Added support for CID-keyed fonts to the CFF driver. Maybe 1.3207 + support for pure CFF + CEF fonts should come in? 1.3208 + 1.3209 + - Cleaned up source code in order to avoid two functions with the 1.3210 + same name. Also changed the names of the files in `type1z' from 1.3211 + `t1XXXX' to `z1XXXX' in order to avoid any conflicts. 1.3212 + 1.3213 + `make multi' now works well :-) 1.3214 + 1.3215 + Also removed the use of `cidafm' for now, even if the source files 1.3216 + are still there. This functionality will certainly go into a 1.3217 + specific module. 1.3218 + 1.3219 + - ADDED SUPPORT FOR THE AUTO-HINTER 1.3220 + 1.3221 + It works :-) I have a demo program which simply is a copy of 1.3222 + `ftview' that does a `FT_Add_Module(library, 1.3223 + &autohinter_module_class)' after library initialization, and Type 1.3224 + 1 & OpenType/CFF fonts are now hinted. 1.3225 + 1.3226 + CID fonts are not hinted, as they include no charmap and the 1.3227 + auto-hinter doesn't include `generic' global metrics computations 1.3228 + yet. 1.3229 + 1.3230 + Now, I need to release this thing to the FreeType 2 source. 1.3231 + 1.3232 + - CHANGES TO THE RENDERER MODULES 1.3233 + 1.3234 + The monochrome and smooth renderers are now in two distinct 1.3235 + directories, namely `src/raster1' and `src/smooth'. Note that the 1.3236 + old `src/renderer' is now gone. 1.3237 + 1.3238 + I ditched the 5-gray-levels renderers. Basically, it involved a 1.3239 + simple #define toggle in 'src/raster1/ftraster.c'. 1.3240 + 1.3241 + FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now 1.3242 + select the best renderer available, depending on render mode. If 1.3243 + the current renderer for a given glyph image format isn't capable 1.3244 + of supporting the render mode, another one will be found in the 1.3245 + library's list. This means that client applications do not need 1.3246 + to switch or set the renderers themselves (as in the latest 1.3247 + change), they'll get what they want automatically. At last. 1.3248 + 1.3249 + Changed the demo programs accordingly. 1.3250 + 1.3251 + - MAJOR INTERNAL REDESIGN: 1.3252 + 1.3253 + A lot of internal modifications have been performed lately on the 1.3254 + source in order to provide the following enhancements: 1.3255 + 1.3256 + * More generic module support: 1.3257 + 1.3258 + The FT_Module type is now defined to represent a handle to a 1.3259 + given module. The file <freetype/ftmodule.h> contains the 1.3260 + FT_Module_Class definition, as well as the module-loading public 1.3261 + API. 1.3262 + 1.3263 + The FT_Driver type is still defined, and still represents a 1.3264 + pointer to a font driver. Note that FT_Add_Driver is replaced 1.3265 + by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc. 1.3266 + 1.3267 + * Support for generic glyph image types: 1.3268 + 1.3269 + The FT_Renderer type is a pointer to a module used to perform 1.3270 + various operations on glyph image. 1.3271 + 1.3272 + Each renderer is capable of handling images in a single format 1.3273 + (e.g. ft_glyph_format_outline). Its functions are used to: 1.3274 + 1.3275 + - transform an glyph image 1.3276 + - render a glyph image into a bitmap 1.3277 + - return the control box (dimensions) of a given glyph image 1.3278 + 1.3279 + The scan converters `ftraster.c' and `ftgrays.c' have been moved 1.3280 + to the new directory `src/renderer', and are used to provide two 1.3281 + default renderer modules. 1.3282 + 1.3283 + One corresponds to the `standard' scan-converter, the other to 1.3284 + the `smooth' one. 1.3285 + 1.3286 + he current renderer can be set through the new function 1.3287 + FT_Set_Renderer. 1.3288 + 1.3289 + The old raster-related function FT_Set_Raster, FT_Get_Raster and 1.3290 + FT_Set_Raster_Mode have now disappeared, in favor of the new: 1.3291 + 1.3292 + FT_Get_Renderer 1.3293 + FT_Set_Renderer 1.3294 + 1.3295 + See the file <freetype/ftrender.h> for more details. 1.3296 + 1.3297 + These changes were necessary to properly support different 1.3298 + scalable formats in the future, like bi-color glyphs, etc. 1.3299 + 1.3300 + * Glyph loader object: 1.3301 + 1.3302 + A new internal object, called a 'glyph loader' has been 1.3303 + introduced in the base layer. It is used by all scalable format 1.3304 + font drivers to load glyphs and composites. 1.3305 + 1.3306 + This object has been created to reduce the code size of each 1.3307 + driver, as each one of them basically re-implemented its 1.3308 + functionality. 1.3309 + 1.3310 + See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for 1.3311 + more information. 1.3312 + 1.3313 + * FT_GlyphSlot has new fields: 1.3314 + 1.3315 + In order to support extended features (see below), the 1.3316 + FT_GlyphSlot structure has a few new fields: 1.3317 + 1.3318 + linearHoriAdvance: 1.3319 + 1.3320 + This field gives the linearly scaled (i.e. scaled but 1.3321 + unhinted) advance width for the glyph, expressed as a 16.16 1.3322 + fixed pixel value. This is useful to perform WYSIWYG text. 1.3323 + 1.3324 + linearVertAdvance: 1.3325 + This field gives the linearly scaled advance height for the 1.3326 + glyph (relevant in vertical glyph layouts only). This is 1.3327 + useful to perform WYSIWYG text. 1.3328 + 1.3329 + Note that the two above field replace the removed `metrics2' 1.3330 + field in the glyph slot. 1.3331 + 1.3332 + advance: 1.3333 + This field is a vector that gives the transformed advance for 1.3334 + the glyph. By default, it corresponds to the advance width, 1.3335 + unless FT_LOAD_VERTICAL_LAYOUT was specified when calling 1.3336 + FT_Load_Glyph or FT_Load_Char. 1.3337 + 1.3338 + bitmap_left: 1.3339 + This field gives the distance in integer pixels from the 1.3340 + current pen position to the left-most pixel of a glyph image 1.3341 + IF IT IS A BITMAP. It is only valid when the `format' field 1.3342 + is set to `ft_glyph_format_bitmap', for example, after calling 1.3343 + the new function FT_Render_Glyph. 1.3344 + 1.3345 + bitmap_top: 1.3346 + This field gives the distance in integer pixels from the 1.3347 + current pen position (located on the baseline) to the top-most 1.3348 + pixel of the glyph image IF IT IS A BITMAP. Positive values 1.3349 + correspond to upwards Y. 1.3350 + 1.3351 + loader: 1.3352 + This is a new private field for the glyph slot. Client 1.3353 + applications should not touch it. 1.3354 + 1.3355 + 1.3356 + * Support for transforms and direct rendering in FT_Load_Glyph: 1.3357 + 1.3358 + Most of the functionality found in <freetype/ftglyph.h> has been 1.3359 + moved to the core library. Hence, the following: 1.3360 + 1.3361 + - A transform can be specified for a face through 1.3362 + FT_Set_Transform. this transform is applied by FT_Load_Glyph 1.3363 + to scalable glyph images (i.e. NOT TO BITMAPS) before the 1.3364 + function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM 1.3365 + was set in the load flags. 1.3366 + 1.3367 + - Once a glyph image has been loaded, it can be directly 1.3368 + converted to a bitmap by using the new FT_Render_Glyph 1.3369 + function. Note that this function takes the glyph image from 1.3370 + the glyph slot, and converts it to a bitmap whose properties 1.3371 + are returned in `face.glyph.bitmap', `face.glyph.bitmap_left' 1.3372 + and `face.glyph.bitmap_top'. The original native image might 1.3373 + be lost after the conversion. 1.3374 + 1.3375 + - When using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph 1.3376 + and FT_Load_Char functions will call FT_Render_Glyph 1.3377 + automatically when needed. 1.3378 + 1.3379 + - Reformatted all modules source code in order to get rid of the 1.3380 + basic data types redifinitions (i.e. `TT_Int' instead of `FT_Int', 1.3381 + `T1_Fixed' instead of `FT_Fixed'). Hence the format-specific 1.3382 + prefixes like `TT_', `T1_', `T2_' and `CID_' are only used for 1.3383 + relevant structures. 1.3384 + 1.3385 + 1.3386 +====================================================================== 1.3387 + 1.3388 +OLD CHANGES FOR BETA 7 1.3389 + 1.3390 + - bug-fixed the OpenType/CFF parser. It now loads and displays my 1.3391 + two fonts nicely, but I'm pretty certain that more testing is 1.3392 + needed :-) 1.3393 + 1.3394 + - fixed the crummy Type 1 hinter, it now handles accented characters 1.3395 + correctly (well, the accent is not always well placed, but that's 1.3396 + another problem..) 1.3397 + 1.3398 + - added the CID-keyed Type 1 driver in `src/cid'. Works pretty well 1.3399 + for only 13 Kb of code ;-) Doesn't read AFM files though, nor the 1.3400 + really useful CMAP files.. 1.3401 + 1.3402 + - fixed two bugs in the smooth renderer (src/base/ftgrays.c). 1.3403 + Thanks to Boris Letocha for spotting them and providing a fix. 1.3404 + 1.3405 + - fixed potential `divide by zero' bugs in ftcalc.c. 1.3406 + 1.3407 + - added source code for the OpenType/CFF driver (still incomplete 1.3408 + though..) 1.3409 + 1.3410 + - modified the SFNT driver slightly to perform more robust header 1.3411 + checks in TT_Load_SFNT_Header. This prevents certain font files 1.3412 + (e.g. some Type 1 Multiple Masters) from being incorrectly 1.3413 + `recognized' as TrueType font files.. 1.3414 + 1.3415 + - moved a lot of stuff from the TrueType driver to the SFNT module, 1.3416 + this allows greater code re-use between font drivers 1.3417 + (e.g. TrueType, OpenType, Compact-TrueType, etc..) 1.3418 + 1.3419 + - added a tiny segment cache to the SFNT Charmap 4 decoder, in order 1.3420 + to minimally speed it up.. 1.3421 + 1.3422 + - added support for Multiple Master fonts in `type1z'. There is 1.3423 + also a new file named <freetype/ftmm.h> which defines functions to 1.3424 + manage them from client applications. 1.3425 + 1.3426 + The new file `src/base/ftmm.c' is also optional to the engine.. 1.3427 + 1.3428 + - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) + 1.3429 + small bug fixes in FT_Load_Glyph, the `type1' driver, etc.. 1.3430 + 1.3431 + - a minor fix to the Type 1 driver to let them apply the font matrix 1.3432 + correctly (used for many oblique fonts..) 1.3433 + 1.3434 + - some fixes for 64-bit systems (mainly changing some FT_TRACE calls 1.3435 + to use %p instead of %lx). Thanks to Karl Robillard. 1.3436 + 1.3437 + - fixed some bugs in the sbit loader (src/base/sfnt/ttsbit.c) + 1.3438 + added a new flag, FT_LOAD_CROP_BITMAP to query that bitmaps be 1.3439 + cropped when loaded from a file (maybe I should move the bitmap 1.3440 + cropper to the base layer ??). 1.3441 + 1.3442 + - changed the default number of gray levels of the smooth renderer 1.3443 + to 256 (instead of the previous 128). Of course, the human eye 1.3444 + can't see any difference ;-) 1.3445 + 1.3446 + - removed TT_MAX_SUBGLYPHS, there is no static limit on the number 1.3447 + of subglyphs in a TrueType font now.. 1.3448 + 1.3449 + 1.3450 +====================================================================== 1.3451 + 1.3452 +OLD CHANGES 16 May 2000 1.3453 + 1.3454 + - tagged `BETA-6' in the CVS tree. This one is a serious release 1.3455 + candidate even though it doesn't incorporate the auto-hinter yet.. 1.3456 + 1.3457 + - various obsolete files were removed, and copyright header updated 1.3458 + 1.3459 + - finally updated the standard raster to fix the monochrome 1.3460 + rendering bug + re-enable support for 5-gray levels anti-aliasing 1.3461 + (suck, suck..) 1.3462 + 1.3463 + - created new header files, and modified sources accordingly: 1.3464 + 1.3465 + <freetype/fttypes.h> 1.3466 + - simple FreeType types, without the API 1.3467 + <freetype/internal/ftmemory.h> 1.3468 + - definition of memory-management macros 1.3469 + 1.3470 + - added the `DSIG' (OpenType Digital Signature) tag to 1.3471 + <freetype/tttags.h> 1.3472 + 1.3473 + - light update/cleaning of the build system + changes to the sources 1.3474 + in order to get rid of _all_ compiler warnings with three 1.3475 + compilers, i.e: 1.3476 + 1.3477 + gcc with `-ansi -pedantic -Wall -W', Visual C++ with `/W3 /WX' and 1.3478 + LCC 1.3479 + 1.3480 + IMPORTANT NOTE FOR WIN32-LCC USERS: 1.3481 + | 1.3482 + | It seems the C pre-processor that comes with LCC is broken, it 1.3483 + | doesn't recognize the ANSI standard directives # and ## 1.3484 + | correctly when one of the argument is a macro. Also, 1.3485 + | something like: 1.3486 + | 1.3487 + | #define F(x) print##x 1.3488 + | 1.3489 + | F(("hello")) 1.3490 + | 1.3491 + | will get incorrectly translated to: 1.3492 + | 1.3493 + | print "hello") 1.3494 + | 1.3495 + | by its pre-processor. For this reason, you simply cannot build 1.3496 + | FreeType 2 in debug mode with this compiler.. 1.3497 + 1.3498 + - yet another massive grunt work. I've changed the definition of 1.3499 + the EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These 1.3500 + now take an argument, which is the function's return value type. 1.3501 + 1.3502 + This is necessary to compile FreeType as a DLL on Windows and 1.3503 + OS/2. Depending on the compiler used, a compiler-specific keyword 1.3504 + like __export or __system must be placed before (VisualC++) or 1.3505 + after (BorlandC++) the type.. 1.3506 + 1.3507 + Of course, this needed a lot of changes throughout the source code 1.3508 + to make it compile again... All cleaned up now, apparently.. 1.3509 + 1.3510 + Note also that there is a new EXPORT_VAR macro defined to allow 1.3511 + the _declaration_ of an exportable public (constant) 1.3512 + variable. This is the case of the raster interfaces (see 1.3513 + ftraster.h and ftgrays.h), as well as each module's interface (see 1.3514 + sfdriver.h, psdriver.h, etc..) 1.3515 + 1.3516 + - new feature: it is now possible to pass extra parameters to font 1.3517 + drivers when creating a new face object. For now, 1.3518 + this capability is unused. It could however prove to 1.3519 + be useful in a near future.. 1.3520 + 1.3521 + the FT_Open_Args structure was changes, as well as the internal 1.3522 + driver interface (the specific `init_face' module function has 1.3523 + now a different signature). 1.3524 + 1.3525 + - updated the tutorial (not finished though). 1.3526 + 1.3527 + - updated the top-level BUILD document 1.3528 + 1.3529 + - fixed a potential memory leak that could occur when loading 1.3530 + embedded bitmaps. 1.3531 + 1.3532 + - added the declaration of FT_New_Memory_Face in 1.3533 + <freetype/freetype.h>, as it was missing from the public header 1.3534 + (the implementation was already in `ftobjs.c'). 1.3535 + 1.3536 + - the file <freetype/fterrors.h> has been seriously updated in order 1.3537 + to allow the automatic generation of error message tables. See 1.3538 + the comments within it for more information. 1.3539 + 1.3540 + - major directory hierarchy re-organisation. This was done for two 1.3541 + things: 1.3542 + 1.3543 + * first, to ease the `manual' compilation of the library by 1.3544 + requiring at lot less include paths :-) 1.3545 + 1.3546 + * second, to allow external programs to effectively access 1.3547 + internal data fields. For example, this can be extremely 1.3548 + useful if someone wants to write a font producer or a font 1.3549 + manager on top of FreeType. 1.3550 + 1.3551 + Basically, you should now use the 'freetype/' prefix for header 1.3552 + inclusion, as in: 1.3553 + 1.3554 + #include <freetype/freetype.h> 1.3555 + #include <freetype/ftglyph.h> 1.3556 + 1.3557 + Some new include sub-directories are available: 1.3558 + 1.3559 + a. the `freetype/config' directory, contains two files used to 1.3560 + configure the build of the library. Client applications 1.3561 + should not need to look at these normally, but they can if 1.3562 + they want. 1.3563 + 1.3564 + #include <freetype/config/ftoption.h> 1.3565 + #include <freetype/config/ftconfig.h> 1.3566 + 1.3567 + b. the `freetype/internal' directory, contains header files that 1.3568 + describes library internals. These are the header files that 1.3569 + were previously found in the `src/base' and `src/shared' 1.3570 + directories. 1.3571 + 1.3572 + 1.3573 + As usual, the build system and the demos have been updated to 1.3574 + reflect the change.. 1.3575 + 1.3576 + Here's a layout of the new directory hierarchy: 1.3577 + 1.3578 + TOP_DIR 1.3579 + include/ 1.3580 + freetype/ 1.3581 + freetype.h 1.3582 + ... 1.3583 + config/ 1.3584 + ftoption.h 1.3585 + ftconfig.h 1.3586 + ftmodule.h 1.3587 + 1.3588 + internal/ 1.3589 + ftobjs.h 1.3590 + ftstream.h 1.3591 + ftcalc.h 1.3592 + ... 1.3593 + 1.3594 + src/ 1.3595 + base/ 1.3596 + ... 1.3597 + 1.3598 + sfnt/ 1.3599 + psnames/ 1.3600 + truetype/ 1.3601 + type1/ 1.3602 + type1z/ 1.3603 + 1.3604 + 1.3605 + Compiling a module is now much easier, for example, the following 1.3606 + should work when in the TOP_DIR directory on an ANSI build: 1.3607 + 1.3608 + gcc -c -I./include -I./src/base src/base/ftbase.c 1.3609 + gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c 1.3610 + etc.. 1.3611 + 1.3612 + (of course, using -Iconfig/<system> if you provide system-specific 1.3613 + configuration files). 1.3614 + 1.3615 + - updated the structure of FT_Outline_Funcs in order to allow direct 1.3616 + coordinate scaling within the outline decomposition routine (this 1.3617 + is important for virtual `on' points with TrueType outlines) + 1.3618 + updates to the rasters to support this.. 1.3619 + 1.3620 + - updated the OS/2 table loading code in `src/sfnt/ttload.c' in 1.3621 + order to support version 2 of the table (see OpenType 1.2 spec) 1.3622 + 1.3623 + - created `include/tttables.h' and `include/t1tables.h' to allow 1.3624 + client applications to access some of the SFNT and T1 tables of a 1.3625 + face with a procedural interface (see `FT_Get_Sfnt_Table') + 1.3626 + updates to internal source files to reflect the change.. 1.3627 + 1.3628 + - some cleanups in the source code to get rid of warnings when 1.3629 + compiling with the `-Wall -W -ansi -pedantic' options in gcc. 1.3630 + 1.3631 + - debugged and moved the smooth renderer to `src/base/ftgrays.c' and 1.3632 + its header to `include/ftgrays.h' 1.3633 + 1.3634 + - updated TT_MAX_SUBGLYPHS to 96 as some CJK fonts have composites 1.3635 + with up to 80 sub-glyphs !! Thanks to Werner 1.3636 + 1.3637 + 1.3638 +====================================================================== 1.3639 + 1.3640 +OLD CHANGES - 14-apr-2000 1.3641 + 1.3642 + - fixed a bug in the TrueType glyph loader that prevented the 1.3643 + correct loading of some CJK glyphs in mingli.ttf 1.3644 + 1.3645 + - improved the standard Type 1 hinter in `src/type1' 1.3646 + 1.3647 + - fixed two bugs in the experimental Type 1 driver in `src/type1z' 1.3648 + to handle the new XFree86 4.0 fonts (and a few other ones..) 1.3649 + 1.3650 + - the smooth renderer is now complete and supports sub-banding to 1.3651 + render large glyphs at high speed. However, it is still located 1.3652 + in `demos/src/ftgrays.c' and should move to the library itself in 1.3653 + the next beta. NOTE: The smooth renderer doesn't compile in 1.3654 + stand-alone mode anymore, but this should be fixed RSN.. 1.3655 + 1.3656 + - introduced convenience functions to more easily deal with glyph 1.3657 + images, see `include/ftglyph.h' for more details, as well as the 1.3658 + new demo program named `demos/src/ftstring.c' that demonstrates 1.3659 + its use 1.3660 + 1.3661 + - implemented FT_LOAD_NO_RECURSE in both the TrueType and Type 1 1.3662 + drivers (this is required by the auto-hinter to improve its 1.3663 + results). 1.3664 + 1.3665 + - changed the raster interface, in order to allow client 1.3666 + applications to provide their own span-drawing callbacks. 1.3667 + However, only the smooth renderer supports this. See 1.3668 + `FT_Raster_Params' in the file `include/ftimage.h'. 1.3669 + 1.3670 + - fixed a small bug in FT_MulFix that caused incorrect transform 1.3671 + computation! 1.3672 + 1.3673 + - Note: The tutorial is out-of-date. 1.3674 + 1.3675 + 1.3676 +====================================================================== 1.3677 + 1.3678 +OLD CHANGES - 12-mar-2000 1.3679 + 1.3680 + - changed the layout of configuration files : now, all ANSI 1.3681 + configuration files are located in 1.3682 + `freetype2/config'. System-specific over-rides can be placed in 1.3683 + `freetype2/config/<system>'. 1.3684 + 1.3685 + - moved all configuration macros to `config/ftoption.h' 1.3686 + 1.3687 + - improvements in the Type 1 driver with AFM support 1.3688 + 1.3689 + - changed the fields in the FT_Outline structure : the old `flags' 1.3690 + array is re-named `tags', while all ancient flags are encoded into 1.3691 + a single unsigned int named `flags'. 1.3692 + 1.3693 + - introduced new flags in FT_Outline.flags (see 1.3694 + ft_outline_.... enums in `ftimage.h'). 1.3695 + 1.3696 + - changed outline functions to `FT_Outline_<action>' syntax 1.3697 + 1.3698 + - added a smooth anti-alias renderer to the demonstration programs 1.3699 + 1.3700 + - added Mac graphics driver (thanks Just) 1.3701 + 1.3702 + - FT_Open_Face changed in order to received a pointer to a 1.3703 + FT_Open_Args descriptor.. 1.3704 + 1.3705 + - various cleanups, a few more API functions implemented (see 1.3706 + FT_Attach_File) 1.3707 + 1.3708 + - updated some docs 1.3709 + 1.3710 + 1.3711 +====================================================================== 1.3712 + 1.3713 +OLD CHANGES - 22-feb-2000 1.3714 + 1.3715 + - introduced the `psnames' module. It is used to: 1.3716 + 1.3717 + o convert a Postscript glyph name into the equivalent Unicode 1.3718 + character code (used by the Type 1 driver(s) to synthesize on 1.3719 + the fly a Unicode charmap). 1.3720 + 1.3721 + o provide an interface to retrieve the Postscript names of the 1.3722 + Macintosh, Adobe Standard & Adobe Expert character codes. 1.3723 + (the Macintosh names are used by the SFNT-module postscript 1.3724 + names support routines, while the other two tables are used by 1.3725 + the Type 1 driver(s)). 1.3726 + 1.3727 + - introduced the `type1z' alternate Type 1 driver. This is a (still 1.3728 + experimental) driver for the Type 1 format that will ultimately 1.3729 + replace the one in `src/type1'. It uses pattern matching to load 1.3730 + data from the font, instead of a finite state analyzer. It works 1.3731 + much better than the `old' driver with `broken' fonts. It is also 1.3732 + much smaller (under 15 Kb). 1.3733 + 1.3734 + - the Type 1 drivers (both in `src/type1' and `src/type1z') are 1.3735 + nearly complete. They both provide automatic Unicode charmap 1.3736 + synthesis through the `psnames' module. No re-encoding vector is 1.3737 + needed. (note that they still leak memory due to some code 1.3738 + missing, and I'm getting lazy). 1.3739 + 1.3740 + Trivial AFM support has been added to read kerning information but 1.3741 + wasn't exactly tested as it should ;-) 1.3742 + 1.3743 + - The TrueType glyph loader has been seriously rewritten (see the 1.3744 + file `src/truetype/ttgload.c'. It is now much, much simpler as 1.3745 + well as easier to read, maintain and understand :-) Preliminary 1.3746 + versions introduced a memory leak that has been reported by Jack 1.3747 + Davis, and is now fixed.. 1.3748 + 1.3749 + - introduced the new `ft_glyph_format_plotter', used to represent 1.3750 + stroked outlines like Windows `Vector' fonts, and certain Type 1 1.3751 + fonts like `Hershey'. The corresponding raster will be written 1.3752 + soon. 1.3753 + 1.3754 + - FT_New_Memory_Face is gone. Likewise, FT_Open_Face has a new 1.3755 + interface that uses a structure to describe the input stream, the 1.3756 + driver (if required), etc.. 1.3757 + 1.3758 + 1.3759 +TODO 1.3760 + 1.3761 + - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap 1.3762 + 1.3763 + - Add a function like FT_Load_Character(face, char_code, load_flags) 1.3764 + that would really embed a call to FT_Get_Char_Index then 1.3765 + FT_Load_Glyph to ease developer's work. 1.3766 + 1.3767 + - Update the tutorial! 1.3768 + 1.3769 + - consider adding support for Multiple Master fonts in the Type 1 1.3770 + drivers. 1.3771 + 1.3772 + - Test the AFM routines of the Type 1 drivers to check that kerning 1.3773 + information is returned correctly. 1.3774 + 1.3775 + - write a decent auto-gridding component !! We need this to release 1.3776 + FreeType 2.0 gold ! 1.3777 + 1.3778 + 1.3779 +less urgent needs: 1.3780 + 1.3781 + - add a CFF/Type2 driver 1.3782 + - add a BDF driver 1.3783 + - add a FNT/PCF/HBF driver 1.3784 + - add a Speedo driver from the X11 sources 1.3785 + 1.3786 + 1.3787 +====================================================================== 1.3788 + 1.3789 +OLDER CHANGES - 27-jan-2000 1.3790 + 1.3791 + - updated the `sfnt' module interface to allow several SFNT-based 1.3792 + drivers to co-exist peacefully 1.3793 + 1.3794 + - updated the `T1_Face' type to better separate Postscript font 1.3795 + content from the rest of the FT_Face structure. Might be used 1.3796 + later by the CFF/Type2 driver.. 1.3797 + 1.3798 + - added an experimental replacement Type 1 driver featuring advanced 1.3799 + (and speedy) pattern matching to retrieve the data from postscript 1.3800 + fonts. 1.3801 + 1.3802 + - very minor changes in the implementation of FT_Set_Char_Size and 1.3803 + FT_Set_Pixel_Sizes (they now implement default to lighten the font 1.3804 + driver's code). 1.3805 + 1.3806 + 1.3807 +====================================================================== 1.3808 + 1.3809 +OLD MESSAGE 1.3810 + 1.3811 +This file summarizes the changes that occurred since the last `beta' 1.3812 +of FreeType 2. Because the list is important, it has been divided into 1.3813 +separate sections: 1.3814 + 1.3815 +Table Of Contents: 1.3816 + 1.3817 + I High-Level Interface (easier !) 1.3818 + II Directory Structure 1.3819 + III Glyph Image Formats 1.3820 + IV Build System 1.3821 + V Portability 1.3822 + VI Font Drivers 1.3823 + 1.3824 + 1.3825 +---------------------------------------------------------------------- 1.3826 + 1.3827 +High-Level Interface: 1.3828 + 1.3829 + The high-level API has been considerably simplified. Here is how: 1.3830 + 1.3831 + - resource objects have disappeared. this means that face objects 1.3832 + can now be created with a single function call (see FT_New_Face 1.3833 + and FT_Open_Face) 1.3834 + 1.3835 + - when calling either FT_New_Face & FT_Open_Face, a size object 1.3836 + and a glyph slot object are automatically created for the face, 1.3837 + and can be accessed through `face->glyph' and `face->size' if 1.3838 + one really needs to. In most cases, there's no need to call 1.3839 + FT_New_Size or FT_New_Glyph. 1.3840 + 1.3841 + - similarly, FT_Load_Glyph now only takes a `face' argument 1.3842 + (instead of a glyph slot and a size). Also, its `result' 1.3843 + parameter is gone, as the glyph image type is returned in the 1.3844 + field `face->glyph.format' 1.3845 + 1.3846 + - the list of available charmaps is directly accessible through 1.3847 + `face->charmaps', counting `face->num_charmaps' elements. Each 1.3848 + charmap has an 'encoding' field which specifies which known 1.3849 + encoding it deals with. Valid values are, for example: 1.3850 + 1.3851 + ft_encoding_unicode (for ASCII, Latin-1 and Unicode) 1.3852 + ft_encoding_apple_roman 1.3853 + ft_encoding_sjis 1.3854 + ft_encoding_adobe_standard 1.3855 + ft_encoding_adobe_expert 1.3856 + 1.3857 + other values may be added in the future. Each charmap still 1.3858 + holds its `platform_id' and `encoding_id' values in case the 1.3859 + encoding is too exotic for the current library 1.3860 + 1.3861 + 1.3862 +---------------------------------------------------------------------- 1.3863 + 1.3864 +Directory Structure: 1.3865 + 1.3866 + Should seem obvious to most of you: 1.3867 + 1.3868 + freetype/ 1.3869 + config/ -- configuration sub-makefiles 1.3870 + ansi/ 1.3871 + unix/ -- platform-specific configuration files 1.3872 + win32/ 1.3873 + os2/ 1.3874 + msdos/ 1.3875 + 1.3876 + include/ -- public header files, those to be included 1.3877 + directly by client apps 1.3878 + 1.3879 + src/ -- sources of the library 1.3880 + base/ -- the base layer 1.3881 + sfnt/ -- the sfnt `driver' (see the drivers section 1.3882 + below) 1.3883 + truetype/ -- the truetype driver 1.3884 + type1/ -- the type1 driver 1.3885 + shared/ -- some header files shared between drivers 1.3886 + 1.3887 + demos/ -- demos/tools 1.3888 + 1.3889 + docs/ -- documentation (a bit empty for now) 1.3890 + 1.3891 + 1.3892 +---------------------------------------------------------------------- 1.3893 + 1.3894 +Glyph Image Formats: 1.3895 + 1.3896 + Drivers are now able to register new glyph image formats within the 1.3897 + library. For now, the base layer supports of course bitmaps and 1.3898 + vector outlines, but one could imagine something different like 1.3899 + colored bitmaps, bi-color vectors or whatever else (Metafonts anyone 1.3900 + ??). 1.3901 + 1.3902 + See the file `include/ftimage.h'. Note also that the type 1.3903 + FT_Raster_Map is gone, and is now replaced by FT_Bitmap, which 1.3904 + should encompass all known bitmap types. 1.3905 + 1.3906 + Each new image format must provide at least one `raster', i.e. a 1.3907 + module capable of transforming the glyph image into a bitmap. It's 1.3908 + also possible to change the default raster used for a given glyph 1.3909 + image format. 1.3910 + 1.3911 + The default outline scan-converter now uses 128 levels of grays by 1.3912 + default, which tends to smooth many things. Note that the demo 1.3913 + programs have been updated significantly in order to display these.. 1.3914 + 1.3915 + 1.3916 +---------------------------------------------------------------------- 1.3917 + 1.3918 +Build system: 1.3919 + 1.3920 + You still need GNU Make to build the library. The build system has 1.3921 + been very seriously re-vamped in order to provide things like : 1.3922 + 1.3923 + - automatic host platform detection (reverting to 'config/ansi' if 1.3924 + it is not detected, with pseudo-standard compilation flags) 1.3925 + 1.3926 + - the ability to compile from the Makefiles with very different and 1.3927 + exotic compilers. Note that linking the library can be difficult 1.3928 + for some platforms. 1.3929 + 1.3930 + For example, the file `config/win32/lcclib.bat' is invoked by the 1.3931 + build system to create the `.lib' file with LCC-Win32 because its 1.3932 + librarian has too many flaws to be invoked directly from the 1.3933 + Makefile. 1.3934 + 1.3935 + Here's how it works: 1.3936 + 1.3937 + - the first time you type `make', the build system runs a series of 1.3938 + sub-makefiles in order to detect your host platform. It then 1.3939 + dumps what it found, and creates a file called `config.mk' in the 1.3940 + current directory. This is a sub-Makefile used to define many 1.3941 + important Make variables used to build the library. 1.3942 + 1.3943 + - the second time, the build system detects the `config.mk' then use 1.3944 + it to build the library. All object files go into 'obj' by 1.3945 + default, as well as the library file, but this can easily be 1.3946 + changed. 1.3947 + 1.3948 + Note that you can run `make setup' to force another host platform 1.3949 + detection even if a `config.mk' is present in the current 1.3950 + directory. Another solution is simply to delete the file, then 1.3951 + re-run make. 1.3952 + 1.3953 + Finally, the default compiler for all platforms is gcc (for now, 1.3954 + this will hopefully changed in the future). You can however specify 1.3955 + a different compiler by specifying it after the 'setup' target as 1.3956 + in: 1.3957 + 1.3958 + gnumake setup lcc on Win32 to use the LCC compiler 1.3959 + gnumake setup visualc on Win32 to use Visual C++ 1.3960 + 1.3961 + See the file `config/<system>/detect.mk' for a list of supported 1.3962 + compilers for your platforms. 1.3963 + 1.3964 + It should be relatively easy to write new detection rules files and 1.3965 + config.mk.. 1.3966 + 1.3967 + Finally, to build the demo programs, go to `demos' and launch GNU 1.3968 + Make, it will use the `config.mk' in the top directory to build the 1.3969 + test programs.. 1.3970 + 1.3971 + 1.3972 +---------------------------------------------------------------------- 1.3973 + 1.3974 +Portability: 1.3975 + 1.3976 + In the previous beta, a single FT_System object was used to 1.3977 + encompass all low-level operations like thread synchronisation, 1.3978 + memory management and i/o access. This has been greatly simplified: 1.3979 + 1.3980 + - thread synchronisation has been dropped, for the simple reason 1.3981 + that the library is already re-entrant, and that if you really 1.3982 + need two threads accessing the same FT_Library, you should 1.3983 + really synchronize access to it yourself with a simple mutex. 1.3984 + 1.3985 + - memory management is performed through a very simple object 1.3986 + called `FT_Memory', which really is a table containing a table 1.3987 + of pointers to functions like malloc, realloc and free as well 1.3988 + as some user data (closure). 1.3989 + 1.3990 + - resources have disappeared (they created more problems than they 1.3991 + solved), and i/o management have been simplified greatly as a 1.3992 + result. Streams are defined through FT_Stream objects, which 1.3993 + can be either memory-based or disk-based. 1.3994 + 1.3995 + Note that each face has its own stream, which is closed only 1.3996 + when the face object is destroyed. Hence, a function like 1.3997 + TT_Flush_Face in 1.x cannot be directly supported. However, if 1.3998 + you really need something like this, you can easily tailor your 1.3999 + own streams to achieve the same feature at a lower level (and 1.4000 + use FT_Open_Face instead of FT_New_Face to create the face). 1.4001 + 1.4002 + See the file `include/ftsystem.h' for more details, as well as the 1.4003 + implementations found in `config/unix' and `config/ansi'. 1.4004 + 1.4005 + 1.4006 +---------------------------------------------------------------------- 1.4007 + 1.4008 +Font Drivers: 1.4009 + 1.4010 + The Font Driver interface has been modified in order to support 1.4011 + extensions & versioning. 1.4012 + 1.4013 + 1.4014 + The list of the font drivers that are statically linked to the 1.4015 + library at compile time is managed through a new configuration file 1.4016 + called `config/<platform>/ftmodule.h'. 1.4017 + 1.4018 + This file is autogenerated when invoking `make modules'. This 1.4019 + target will parse all sub-directories of 'src', looking for a 1.4020 + `module.mk' rules file, used to describe the driver to the build 1.4021 + system. 1.4022 + 1.4023 + Hence, one should call `make modules' each time a font driver is 1.4024 + added or removed from the `src' directory. 1.4025 + 1.4026 + Finally, this version provides a `pseudo-driver' in `src/sfnt'. 1.4027 + This driver doesn't support font files directly, but provides 1.4028 + services used by all TrueType-like font drivers. Hence, its code is 1.4029 + shared between the TrueType & OpenType font formats, and possibly 1.4030 + more formats to come if we're lucky.. 1.4031 + 1.4032 + 1.4033 +---------------------------------------------------------------------- 1.4034 + 1.4035 +Extensions support: 1.4036 + 1.4037 + The extensions support is inspired by the one found in 1.x. 1.4038 + 1.4039 + Now, each font driver has its own `extension registry', which lists 1.4040 + which extensions are available for the font faces managed by the 1.4041 + driver. 1.4042 + 1.4043 + Extension ids are now strings, rather than 4-byte tags, as this is 1.4044 + usually more readable. 1.4045 + 1.4046 + Each extension has: 1.4047 + - some data, associated to each face object 1.4048 + - an interface (table of function pointers) 1.4049 + 1.4050 + An extension that is format-specific should simply register itself 1.4051 + to the correct font driver. Here is some example code: 1.4052 + 1.4053 + // Registering an extensions 1.4054 + // 1.4055 + FT_Error FT_Init_XXXX_Extension( FT_Library library ) 1.4056 + { 1.4057 + FT_DriverInterface* tt_driver; 1.4058 + 1.4059 + driver = FT_Get_Driver( library, "truetype" ); 1.4060 + if (!driver) return FT_Err_Unimplemented_Feature; 1.4061 + 1.4062 + return FT_Register_Extension( driver, &extension_class ); 1.4063 + } 1.4064 + 1.4065 + 1.4066 + // Implementing the extensions 1.4067 + // 1.4068 + FT_Error FT_Proceed_Extension_XXX( FT_Face face ) 1.4069 + { 1.4070 + FT_XXX_Extension ext; 1.4071 + FT_XXX_Extension_Interface ext_interface; 1.4072 + 1.4073 + ext = FT_Get_Extension( face, "extensionid", &ext_interface ); 1.4074 + if (!ext) return error; 1.4075 + 1.4076 + return ext_interface->do_it(ext); 1.4077 + } 1.4078 + 1.4079 +------------------------------------------------------------------------ 1.4080 + 1.4081 +Copyright 2000-2013 by 1.4082 +David Turner, Robert Wilhelm, and Werner Lemberg. 1.4083 + 1.4084 +This file is part of the FreeType project, and may only be used, 1.4085 +modified, and distributed under the terms of the FreeType project 1.4086 +license, LICENSE.TXT. By continuing to use, modify, or distribute this 1.4087 +file you indicate that you have read the license and understand and 1.4088 +accept it fully. 1.4089 + 1.4090 + 1.4091 +Local Variables: 1.4092 +version-control: never 1.4093 +coding: utf-8 1.4094 +End: 1.4095 + 1.4096 +--- end of CHANGES ---