blob: 67ab2332915e157bf2fc7683659306ffbce6947c [file] [log] [blame]
Werner Lemberg66cf29b2015-11-28 19:08:05 +01001
2CHANGES BETWEEN 2.6.1 and 2.6.2
Werner Lembergd8fc0092015-11-21 13:12:06 +01003
4 I. IMPORTANT CHANGES
5
6 - The auto-hinter now supports stem darkening, to be controlled by
7 the new `no-stem-darkening' and `darkening-parameters'
Werner Lemberg66cf29b2015-11-28 19:08:05 +01008 properties. This is an experimental feature contributed by
9 Nikolaus Waxweiler, and the interface might change in a future
10 release.
Werner Lembergd8fc0092015-11-21 13:12:06 +010011
12 - By default, stem darkening is now switched off (for both the CFF
13 engine and the auto-hinter). The main reason is that you need
14 linear alpha blending and gamma correction to get correct
15 rendering results, and the latter is not yet available in most
16 freely available rendering stacks like X11. Applying stem
17 darkening without proper gamma correction leads to far too dark
18 rendering results.
19
20 - The meaning of `FT_RENDER_MODE_LIGHT' has been slightly
21 modified. It now essentially means `no hinting along the
22 horizontal axis'; in particular, no change of glyph advance
23 widths. Consequently, the auto-hinter is used for all scalable
24 font formats except for CFF. It is planned that other
25 font-specific rendering engines (TrueType, Type 1) will follow.
26
27
28 II. MISCELLANEOUS
29
Werner Lemberg66cf29b2015-11-28 19:08:05 +010030 - The default LCD filter has been changed to be normalized and
31 color-balanced.
32
Werner Lembergd8fc0092015-11-21 13:12:06 +010033 - For better compatibility with FontConfig, function
34 `FT_Library_SetLcdFilter' accepts a new enumeration value
35 `FT_LCD_FILTER_LEGACY1' (which has the same meaning as
36 `FT_LCD_FILTER_LEGACY').
37
38 - A large number of bugs have been detected by using the libFuzzer
39 framework, which should further improve handling of invalid
40 fonts. Thanks again to Kostya Serebryany and Bungeman!
41
42 - `TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES', a new configuration
43 option, controls the maximum number of executed opcodes within a
44 bytecode program. You don't want to change this except for very
45 special situations (e.g., making a library fuzzer spend less
46 time to handle broken fonts).
47
48 - The smooth renderer has been made faster.
49
Werner Lemberg66cf29b2015-11-28 19:08:05 +010050 - The `ftstring' demo program now supports sub-pixel rendering;
51 use key `l' to cycle through the LCD modes.
52
53 - The `ftstring' demo program now supports colour rendering; use
54 the `space' key to cycle through various colour combinations.
55
56 - The graphical demo programs now use a default gamma value of 1.8
57 (instead of 1.2).
58
Werner Lembergd8fc0092015-11-21 13:12:06 +010059
60======================================================================
61
Werner Lemberg8502c982015-06-22 06:35:23 +020062CHANGES BETWEEN 2.6 and 2.6.1
63
Werner Lembergc1c07202015-07-27 05:43:19 +020064 I. IMPORTANT BUG FIXES
65
66 - It turned out that for CFFs only the advance widths should be
Werner Lemberg8cabd912015-10-04 08:18:01 +020067 taken from the `htmx' table, not the side bearings. This bug,
Werner Lembergc1c07202015-07-27 05:43:19 +020068 introduced in version 2.6.0, makes it necessary to upgrade if
Werner Lemberg8cabd912015-10-04 08:18:01 +020069 you are using CFFs; otherwise, you get cropped glyphs with GUI
Werner Lembergc1c07202015-07-27 05:43:19 +020070 interfaces like GTK or Qt.
71
Werner Lembergbd75a512015-08-08 08:39:45 +020072 - Accessing Type 42 fonts returned incorrect results if the glyph
73 order of the embedded TrueType font differs from the glyph order
74 of the Type 42 charstrings table.
75
Werner Lembergc1c07202015-07-27 05:43:19 +020076
77 II. IMPORTANT CHANGES
Werner Lemberg8502c982015-06-22 06:35:23 +020078
Werner Lemberg392cf222015-06-25 13:04:57 +020079 - The header file layout has been changed (again), moving all
80 header files except `ft2build.h' into a subdirectory tree.
Werner Lemberg8502c982015-06-22 06:35:23 +020081
82 Doing so reduces the possibility of header file name clashes
Werner Lemberg8cabd912015-10-04 08:18:01 +020083 (e.g., FTGL's `FTGlyph.h' with FreeType's `ftglyph.h') on case
84 insensitive file systems like Mac OS X or Windows.
Werner Lemberg8502c982015-06-22 06:35:23 +020085
Werner Lemberg8cabd912015-10-04 08:18:01 +020086 Applications that use (a) the `freetype-config' script or
87 FreeType's `freetype2.pc' file for pkg-config to get the include
88 directory for the compiler, and (b) the documented way for
89 header inclusion like
Werner Lemberg8502c982015-06-22 06:35:23 +020090
91 #include <ft2build.h>
92 #include FT_FREETYPE_H
93 ...
94
95 don't need any change to the source code.
96
Werner Lemberg14d6b5d2015-08-13 15:22:17 +020097 - Simple access to named instances in GX variation fonts is now
98 available (in addition to the previous method via FreeType's MM
Werner Lemberg8cabd912015-10-04 08:18:01 +020099 interface). In the `FT_Face' structure, bits 16-30 of the
Werner Lemberg14d6b5d2015-08-13 15:22:17 +0200100 `face_index' field hold the current named instance index for the
101 given face index, and bits 16-30 of `style_flags' contain the
102 number of instances for the given face index. `FT_Open_Face'
103 and friends also understand the extended bits of the face index
104 parameter.
105
106 You need to enable TT_CONFIG_OPTION_GX_VAR_SUPPORT for this new
107 feature. Otherwise, bits 16-30 of the two fields are zero (or
108 are ignored).
109
Werner Lembergfeb1f132015-10-01 17:39:31 +0200110 - Lao script support has been added to the auto-hinter.
111
Werner Lemberg8502c982015-06-22 06:35:23 +0200112
Werner Lembergbd75a512015-08-08 08:39:45 +0200113 III. MISCELLANEOUS
114
115 - The auto-hinter's Arabic script support has been enhanced.
116
Werner Lemberg4d406e32015-09-09 08:02:47 +0200117 - Superscript-like and subscript-like glyphs as used by various
118 phonetic alphabets like the IPA are now better supported by the
119 auto-hinter.
120
Werner Lembergbd75a512015-08-08 08:39:45 +0200121 - The TrueType bytecode interpreter now runs slightly faster.
122
123 - Improved support for builds with cmake.
124
Werner Lemberg4d406e32015-09-09 08:02:47 +0200125 - The function `FT_CeilFix' now always rounds towards plus
126 infinity.
127
128 - The function `FT_FloorFix' now always rounds towards minus
129 infinity.
130
Werner Lemberg8cabd912015-10-04 08:18:01 +0200131 - A new load flag `FT_LOAD_COMPUTE_METRICS' has been added; it
Werner Lembergfeb1f132015-10-01 17:39:31 +0200132 makes FreeType ignore pre-computed metrics, as needed by font
133 validating or font editing programs. Right now, only the
134 TrueType module supports it to ignore data from the `hdmx'
135 table.
136
137 - Another round of bug fixes to better handle broken fonts, found
138 by Kostya Serebryany <kcc@google.com>.
139
Werner Lembergbd75a512015-08-08 08:39:45 +0200140
Werner Lemberg8502c982015-06-22 06:35:23 +0200141======================================================================
Werner Lemberg099489f2014-06-10 06:51:52 +0200142
Werner Lemberg559727d2015-02-25 06:55:00 +0100143CHANGES BETWEEN 2.5.5 and 2.6
Werner Lemberg4eff8542015-01-14 20:06:19 +0100144
Werner Lemberg764ddcc2015-05-31 12:32:11 +0200145 I. IMPORTANT CHANGES
Werner Lemberg4eff8542015-01-14 20:06:19 +0100146
147 - Behdad Esfahbod contributed code for improved thread-safety,
148 which results in the following model.
149
150 * An `FT_Face' object can only be safely used from one thread at
151 a time.
152
153 * An `FT_Library' object can now be used without modification
154 from multiple threads at the same time.
155
156 * `FT_Face' creation and destruction with the same `FT_Library'
157 object can only be done from one thread at a time.
158
159 One can use a single `FT_Library' object across threads as long
160 as a mutex lock is used around `FT_New_Face' and `FT_Done_Face'.
161 Any calls to `FT_Load_Glyph' and similar API are safe and do not
162 need the lock to be held as long as the same `FT_Face' is not
163 used from multiple threads at the same time.
164
Werner Lembergeee7d8b2015-03-10 11:15:15 +0100165 - Thai script support has been added to the auto-hinter.
166
Werner Lembergd3284462015-03-11 16:45:58 +0100167 - Arabic script support has been added to the auto-hinter.
168
Werner Lemberg9178a122015-04-28 10:56:19 +0200169 - Following OpenType version 1.7, advance widths and side bearing
170 values in CFFs (wrapped in an SFNT structure) are now always
Werner Lembergd164f702015-04-21 07:51:41 +0200171 taken from the `hmtx' table.
172
Werner Lemberg9178a122015-04-28 10:56:19 +0200173 - Following OpenType version 1.7, the PostScript font name of a
174 CFF font (wrapped in an SFNT structure) is now always taken from
175 the `name' table. This is also true for OpenType Collections
176 (i.e., TTCs using CFFs subfonts instead of TTFs), where it may
177 have a significant difference.
178
Werner Lembergc61cad82015-05-22 22:02:15 +0200179 - Fonts natively hinted for ClearType are now supported, properly
180 handling selector index 3 of the INSTCTRL bytecode instruction.
181
Werner Lemberg764ddcc2015-05-31 12:32:11 +0200182 - Major improvements to the GX TrueType variation font handling.
Werner Lemberg4eff8542015-01-14 20:06:19 +0100183
Werner Lemberg764ddcc2015-05-31 12:32:11 +0200184
185 II. MISCELLANEOUS
Werner Lemberg559727d2015-02-25 06:55:00 +0100186
Werner Lembergd164f702015-04-21 07:51:41 +0200187 - A new auto-hinter property `warping' can switch on and off the
188 warping code if this experimental feature is compiled in (by
Werner Lemberg764ddcc2015-05-31 12:32:11 +0200189 defining the AF_CONFIG_OPTION_USE_WARPER configuration option;
190 by default this option is now enabled but warping is switched
Werner Lemberg14df6b12015-04-22 11:14:35 +0200191 off).
Werner Lembergd164f702015-04-21 07:51:41 +0200192
193 The AF_CONFIG_OPTION_USE_WARPER option itself is an old feature,
194 available since 2006. Warping only works in `light'
195 auto-hinting mode. The idea of the code is to slightly scale
196 and shift a glyph along the non-hinted dimension (which is
197 usually the horizontal axis) so that as much of its segments are
198 aligned (more or less) to the grid. To find out a glyph's
199 optimal scaling and shifting value, various parameter
200 combinations are tried and scored.
201
202 See file `ftautoh.h' for more; the demo programs `ftdiff',
203 `ftview', and `ftgrid' can toggle warping with key `w'.
204
Werner Lemberg559727d2015-02-25 06:55:00 +0100205 - Some fields in the `FTC_ImageTypeRec' structure have been
206 changed from signed to unsigned type, which better reflects the
207 actual usage. It is also an additional means to protect against
208 malformed input.
209
210 This change doesn't break the ABI; however, it might cause
211 compiler warnings.
212
Werner Lembergf4d1c112015-03-11 07:32:58 +0100213 - Function `FT_Bitmap_New' has been renamed to `FT_Bitmap_Init',
214 since this name better reflects its function. For backwards
Werner Lembergeee7d8b2015-03-10 11:15:15 +0100215 compatibility, the old function name is still available.
216
Werner Lembergf4d1c112015-03-11 07:32:58 +0100217 - Function `FT_Get_X11_Font_Format' has been renamed to
218 `FT_Get_Font_Format', since this name better reflects its
219 function. For backwards compatibility, the old function name is
220 still available.
221
Werner Lembergdd7028c2015-03-11 07:45:05 +0100222 Additionally, the header file macro for this function has been
223 renamed to `FT_FONT_FORMATS_H' (the old name `FT_XFREE86_H' is
224 retained for backwards compatibility).
225
Werner Lembergd164f702015-04-21 07:51:41 +0200226 - Various improvements to the `ftgrid' demo program.
227
Werner Lemberg764ddcc2015-05-31 12:32:11 +0200228 . It can now display GX and MM fonts while interactively
Werner Lembergd164f702015-04-21 07:51:41 +0200229 manipulating the axes (with keys F2, F3, and F4).
230
231 . Anti-aliasing rendering modes can now be selected (with keys
232 F5 and F6).
233
Werner Lemberg701f6042015-06-06 23:52:42 +0200234 . The display of point numbers can be toggled with key `D'.
235
Werner Lembergd164f702015-04-21 07:51:41 +0200236 - Various improvements to the `ftdump' demo program.
237
238 . It now displays information on MM and GX variation axes.
239
240 . New command line option `-u' makes it output data in utf-8
241 encoding.
242
Werner Lemberg764ddcc2015-05-31 12:32:11 +0200243 - The `ftmulti' demo program can now handle up to six MM or GX
244 axes.
Werner Lembergd164f702015-04-21 07:51:41 +0200245
Werner Lemberg559727d2015-02-25 06:55:00 +0100246
Werner Lemberg4eff8542015-01-14 20:06:19 +0100247======================================================================
248
Werner Lemberg232bd942014-12-30 21:44:51 +0100249CHANGES BETWEEN 2.5.4 and 2.5.5
250
251 I. IMPORTANT BUG FIXES
252
253 - Handling of uncompressed PCF files works again (bug introduced
254 in version 2.5.4).
255
256
257======================================================================
258
Werner Lemberg23367ff2014-03-17 07:33:14 +0100259CHANGES BETWEEN 2.5.3 and 2.5.4
260
261 I. IMPORTANT BUG FIXES
262
Werner Lemberg934ef382014-12-04 06:38:51 +0100263 - A variant of vulnerability CVE-2014-2240 was identified
264 (cf. http://savannah.nongnu.org/bugs/?43661) and fixed in the
265 new CFF driver. All users should upgrade.
266
Werner Lemberg23367ff2014-03-17 07:33:14 +0100267 - The new auto-hinter code using HarfBuzz crashed for some invalid
268 fonts.
269
Werner Lemberg8fa69a82014-12-03 20:07:14 +0100270 - Many fixes to better protect against malformed input.
271
Werner Lemberg23367ff2014-03-17 07:33:14 +0100272
Werner Lemberg099489f2014-06-10 06:51:52 +0200273 II. IMPORTANT CHANGES
274
275 - Full auto-hinter support of the Devanagari script.
276
Werner Lemberg8fa69a82014-12-03 20:07:14 +0100277 - Experimental auto-hinter support of the Telugu script.
278
Werner Lemberg934ef382014-12-04 06:38:51 +0100279 - CFF stem darkening behaviour can now be controlled at build time
280 using the eight macros
Werner Lemberg8fa69a82014-12-03 20:07:14 +0100281
282 CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} .
283
Werner Lemberg934ef382014-12-04 06:38:51 +0100284 - Some fields in the `FT_Bitmap' structure have been changed from
285 signed to unsigned type, which better reflects the actual usage.
286 It is also an additional means to protect against malformed
287 input.
Werner Lemberg8fa69a82014-12-03 20:07:14 +0100288
Werner Lemberg934ef382014-12-04 06:38:51 +0100289 This change doesn't break the ABI; however, it might cause
290 compiler warnings.
Werner Lemberg8fa69a82014-12-03 20:07:14 +0100291
Werner Lemberg099489f2014-06-10 06:51:52 +0200292
293 III. MISCELLANEOUS
294
Werner Lemberg934ef382014-12-04 06:38:51 +0100295 - Improvements to the auto-hinter's algorithm to recognize stems
Werner Lemberg099489f2014-06-10 06:51:52 +0200296 and local extrema.
297
298 - Function `FT_Get_SubGlyph_Info' always returned an error even in
299 case of success.
300
Werner Lemberg934ef382014-12-04 06:38:51 +0100301 - Version 2.5.1 introduced major bugs in the cjk part of the
Werner Lemberg099489f2014-06-10 06:51:52 +0200302 auto-hinter, which are now fixed.
303
Werner Lemberg934ef382014-12-04 06:38:51 +0100304 - The `FT_Sfnt_Tag' enumeration values have been changed to
305 uppercase, e.g. `FT_SFNT_HEAD'. The lowercase variants are
306 deprecated. This is for orthogonality with all other
Werner Lemberg94926682014-12-06 07:11:44 +0100307 enumeration (and enumeration-like) values in FreeType.
Werner Lemberg8fa69a82014-12-03 20:07:14 +0100308
Werner Lemberg934ef382014-12-04 06:38:51 +0100309 - `cmake' now supports builds of FreeType as an OS X framework and
310 for iOS.
Werner Lemberg8fa69a82014-12-03 20:07:14 +0100311
312 - Improved project files for vc2010, introducing a property file.
313
Werner Lemberg94926682014-12-06 07:11:44 +0100314 - The documentation generator for the API reference has been
Werner Lemberg934ef382014-12-04 06:38:51 +0100315 updated to produce better HTML code (with proper CSS). At the
316 same time, the documentation got a better structure.
Werner Lemberg8fa69a82014-12-03 20:07:14 +0100317
Werner Lemberg934ef382014-12-04 06:38:51 +0100318 - The FT_LOAD_BITMAP_CROP flag is obsolete; it is not used by any
319 driver.
Werner Lemberg8fa69a82014-12-03 20:07:14 +0100320
Werner Lemberg934ef382014-12-04 06:38:51 +0100321 - The TrueType DELTAP[123] bytecode instructions now work in
322 subpixel hinting mode as described in the ClearType whitepaper
323 (i.e., for touched points in the non-subpixel direction).
Werner Lemberg8fa69a82014-12-03 20:07:14 +0100324
325 - Many small improvements to the internal arithmetic routines.
Werner Lemberg099489f2014-06-10 06:51:52 +0200326
327
Werner Lemberg23367ff2014-03-17 07:33:14 +0100328======================================================================
Werner Lembergdd8050a2013-12-08 23:14:46 +0100329
Werner Lembergec8853c2014-03-06 19:13:45 +0100330CHANGES BETWEEN 2.5.2 and 2.5.3
331
332 I. IMPORTANT BUG FIXES
333
Werner Lemberg23367ff2014-03-17 07:33:14 +0100334 - A vulnerability (CVE-2014-2240) was identified and fixed in the
335 new CFF driver (cf. http://savannah.nongnu.org/bugs/?41697).
336 All users should upgrade.
Werner Lembergec8853c2014-03-06 19:13:45 +0100337
338 - More bug fixes related to correct positioning of composite
339 glyphs.
340
341 - Many fixes to better protect against malformed input.
342
343
344 II. IMPORTANT CHANGES
345
346 - FreeType can now use the HarfBuzz library to greatly improve the
347 auto-hinting of fonts that use OpenType features: Many glyphs
348 that are part of such features but don't have cmap entries are
349 now handled properly, for example small caps or superscripts.
350 Define the configuration macro FT_CONFIG_OPTION_USE_HARFBUZZ to
351 activate HarfBuzz support.
352
353 You need HarfBuzz version 0.9.19 or newer.
354
355 Note that HarfBuzz depends on FreeType; this currently causes a
356 chicken-and-egg problem that can be solved as follows in case
357 HarfBuzz is not yet installed on your system.
358
359 1. Compile and install FreeType without the configuration
360 macro FT_CONFIG_OPTION_USE_HARFBUZZ.
361
362 2. Compile and install HarfBuzz.
363
364 3. Define macro FT_CONFIG_OPTION_USE_HARFBUZZ, then compile
365 and install FreeType again.
366
367 With FreeType's `configure' script the procedure boils down to
368 configure, build, and install Freetype, then configure, compile,
369 and install HarfBuzz, then configure, compile, and install
370 FreeType again (after executing `make distclean').
371
372 - All libraries FreeType depends on are now checked using the
373 `pkg-config' configuration files first, followed by alternative
374 methods.
375
376 - The new value `auto' for the various `--with-XXX' library
377 options (for example `--with-harfbuzz=auto') makes the
378 `configure' script automatically link to the libraries it finds.
379 This is now the default.
380
381 - In case FreeType's `configure' script can't find a library, you
382 can pass environment variables to circumvent pkg-config, and
383 those variables have been harmonized as a consequence of the
384 changes mentioned above:
385
386 LIBZ -> removed; use LIBZ_CFLAGS and LIBZ_LIBS
387 LIBBZ2 -> removed; use BZIP2_CFLAGS and BZIP2_LIBS
388 LIBPNG_LDFLAGS -> LIBPNG_LIBS
389
390 `./configure --help' shows all available environment variables.
391
392 - The `freetype-config' script now understands option `--static'
393 to emit static linking information.
394
395
396======================================================================
397
Werner Lembergdd8050a2013-12-08 23:14:46 +0100398CHANGES BETWEEN 2.5.1 and 2.5.2
399
400 I. IMPORTANT BUG FIXES
401
402 - Improving the display of some broken TrueType fonts introduced a
403 bug that made FreeType crash on some popular (but not fully
404 conformant) fonts like `ahronbd.ttf'.
405
406 - Another round of improvements to correct positioning and hinting
407 of composite glyphs in TrueType fonts.
408
409
410 II. MISCELLANEOUS
411
412 - Version 2.5.1 introduced a bug in handling embedded bitmap
413 strikes of TrueType fonts, causing garbage display under some
414 circumstances.
415
416 - The `ftgrid' demo program couldn't be compiled in
417 non-development builds.
418
419
420======================================================================
421
Werner Lemberge12fc772013-06-28 07:57:32 +0200422CHANGES BETWEEN 2.5 and 2.5.1
423
424 I. IMPORTANT BUG FIXES
425
426 - For some WinFNT files, the last glyph wasn't displayed but
427 incorrectly marked as invalid.
428
Werner Lemberg2cca9662013-09-20 07:23:34 +0200429 - The vertical size of glyphs was incorrectly set after a call to
430 `FT_GlyphSlot_Embolden', resulting in clipped glyphs.
Werner Lemberge12fc772013-06-28 07:57:32 +0200431
Werner Lemberg1a399442013-10-03 06:16:50 +0200432 - Many fields of the `PCLT' table in SFNT based fonts (if accessed
433 with `FT_Get_Sfnt_Table') were computed incorrectly.
434
Werner Lemberg7e4b0fb2013-11-06 07:14:49 +0100435 - In TrueType fonts, hinting of composite glyphs could sometimes
436 deliver incorrect positions of components or even distorted
437 shapes.
438
Werner Lemberg2cca9662013-09-20 07:23:34 +0200439
440 II. IMPORTANT CHANGES
441
Werner Lembergee510512013-10-27 07:25:35 +0100442 - WOFF font format support has been added.
Werner Lemberg2cca9662013-09-20 07:23:34 +0200443
Werner Lemberg1a399442013-10-03 06:16:50 +0200444 - The auto-hinter now supports Hebrew. Greek and Cyrillic support
445 has been improved.
Werner Lemberg2cca9662013-09-20 07:23:34 +0200446
Werner Lembergee510512013-10-27 07:25:35 +0100447 - Support for the forthcoming `OS/2' SFNT table version 5, as can
448 be found e.g. in the `Sitka' font family for Windows 8.1.
449
Werner Lemberg3aee4292013-11-25 00:28:11 +0100450 - The header file layout has been changed. After installation,
451 all files are now located in `<prefix>/include/freetype2'.
452
453 Applications that use (a) `freetype-config' or FreeType's
454 `pkg-config' file to get the include directory for the compiler,
455 and (b) the documented way for header inclusion like
456
457 #include <ft2build.h>
458 #include FT_FREETYPE_H
459 ...
460
461 don't need any change to the source code.
462
Werner Lemberg2cca9662013-09-20 07:23:34 +0200463
464 III. MISCELLANEOUS
Werner Lemberge12fc772013-06-28 07:57:32 +0200465
466 - The stem darkening feature of the new CFF engine can now be
467 fine-tuned with the new `darkening-parameters' property.
468
Werner Lemberga411de92013-06-28 07:59:42 +0200469 - `ftgrid' has been updated to toggle various engines with the `H'
470 key, similar to `ftview' and `ftdiff'.
471
Werner Lembergafa0d592013-11-01 22:27:27 +0100472 - The functionality of `ttdebug' has been greatly enhanced.
Werner Lembergee510512013-10-27 07:25:35 +0100473
Werner Lembergafa0d592013-11-01 22:27:27 +0100474 . It now displays twilight, storage, and control value data; key
475 `T' shows the twilight point table, key `S' the storage data,
476 and key `C' the control value table.
477
478 . Some keys have been reassigned from lowercase to their
479 uppercase equivalents; for example `q' to quit the program is
480 now `Q'.
481
482 . Key `f' finishes the current function.
483
484 . Key `R' restarts the debugger.
485
486 . Keys `b' and `p' set a breakpoint.
487
488 . Key `B' provides a function call backtrace.
Werner Lemberg994a8592013-10-24 08:50:34 +0200489
Werner Lemberg2cca9662013-09-20 07:23:34 +0200490 - Better support of ARMv7 and x86_64 processors.
491
492 - Apple's `sbix' color bitmap format is now supported.
493
494 - Improved auto-hinter rendering for many TrueType fonts,
495 especially in the range 20-40ppem.
496
497 - A new face flag `FT_FACE_FLAG_COLOR' has been added (to be
498 accessed with the macro `FT_HAS_COLOR').
499
500 - `FT_Gzip_Uncompress' (modeled after zlib's `uncompress'
501 function) has been added; this is a by-product of the newly
502 added WOFF support.
503
Werner Lemberg994a8592013-10-24 08:50:34 +0200504 - Support for a build with `cmake' has been contributed by John
505 Cary <cary@txcorp.com>.
506
507 - Support for x64 builds with Visual C++ has been contributed by
508 Kenneth Miller <kennethadammiller@yahoo.com>
509
Werner Lembergafa0d592013-11-01 22:27:27 +0100510 - Manual pages for most demo programs have been added.
511
Werner Lemberg7d449432013-11-02 11:36:37 +0100512 - The GETINFO bytecode instruction for TrueType fonts was buggy if
513 used to retrieve subpixel hinting information. It was necessary
514 to set selector bit 6 to get results for selector bits 7-10,
515 which is wrong.
516
Werner Lemberg7e4b0fb2013-11-06 07:14:49 +0100517 - Improved computation of emulated vertical metrics for TrueType
518 fonts.
519
520 - Fixed horizontal start-up position of vertical phantom points in
521 TrueType bytecode.
522
Werner Lemberge12fc772013-06-28 07:57:32 +0200523
524======================================================================
Werner Lemberg9d7f0952011-11-14 20:37:12 +0100525
Werner Lembergf6aa0892013-05-10 07:58:47 +0200526CHANGES BETWEEN 2.4.12 and 2.5
Werner Lemberge4ecce32013-01-11 09:02:22 +0100527
Werner Lemberge2d73df2013-06-09 08:48:01 +0200528 I. IMPORTANT BUG FIXES
529
530 - The cache manager function `FTC_Manager_Reset' didn't flush the
531 cache.
532
533
534 II. IMPORTANT CHANGES
Werner Lemberge4ecce32013-01-11 09:02:22 +0100535
Behdad Esfahbod760d3422013-05-29 11:36:18 +0200536 - Behdad Esfahbod (on behalf of Google) contributed support for
537 color embedded bitmaps (eg. color emoji).
538
539 A new load flag, FT_LOAD_COLOR, makes FreeType load color
540 embedded-bitmaps, following this draft specification
541
542 https://color-emoji.googlecode.com/git/specification/v1.html
543
544 which defines two new SFNT tables, `CBDT' and `CBLC' (named and
545 modeled after `EBDT' and `EBLC', respectively). The color
546 bitmaps are stored in the new FT_PIXEL_MODE_BGRA format to
547 represent BGRA pre-multiplied sRGB images. If PNG support is
548 available, PNG color images as defined in the same proposed
549 specification are supported also.
550
551 Note that color bitmaps are converted to grayscale if client
552 didn't ask for color.
553
Werner Lemberg2429dc32013-06-03 12:41:58 +0200554 - As announced in the previous release, the old FreeType CFF
555 engine is now disabled by default. It can be conditionally
556 compiled by defining the configuration macro
557 CFF_CONFIG_OPTION_OLD_ENGINE.
558
Werner Lembergf6aa0892013-05-10 07:58:47 +0200559 - As announced in the previous release, all code related to macro
560 FT_CONFIG_OPTION_OLD_INTERNALS has been removed, thus becoming
561 obsolete.
562
563
Werner Lemberge2d73df2013-06-09 08:48:01 +0200564 III. MISCELLANEOUS
Werner Lemberg2429dc32013-06-03 12:41:58 +0200565
566 - The property API (`FT_Property_Get' and `FT_Property_Set') is
567 now declared as stable.
568
Werner Lemberg841e49a2013-06-19 00:25:06 +0200569 The exception, however, are the experimental auto-hinter
570 properties `glyph-to-script-map' and `fallback-script' which are
571 subject to change in a forthcoming release.
572
573 - `ftview' has been updated to support color embedded bitmaps; it
574 can be toggled on and off with key `c'. The small cache toggle
575 is now key `K'.
Werner Lemberg2429dc32013-06-03 12:41:58 +0200576
577 - It is now possible to control the version of the TrueType
578 hinting engine using the new `interpreter-version' property of
579 the `truetype' module: Versions 35 and 38 (the default) are
580 supported, which roughly corresponds to disable and enable
581 subpixel hinting support, respectively.
582
583 In both `ftview' and `ftdiff', switching between the two
584 versions can be done with key `H'. In the `ftbench' demo
585 program, command line option `-H' has been extended to activate
586 the non-default interpreter version.
587
Werner Lemberg841e49a2013-06-19 00:25:06 +0200588 - The `ttdebug' program has been further improved. In particular,
589 it accepts a new command line option `-H' to select the hinting
590 engine.
591
Werner Lemberg099489f2014-06-10 06:51:52 +0200592 - `ftdump's verbose option has been renamed to `-V'. For all demo
593 programs, `-v' now shows version information.
594
Werner Lemberg2429dc32013-06-03 12:41:58 +0200595 - Another round of TrueType subpixel hinting fixes.
596
597 - The `apinames' tool can now create an import file for NetWare.
598
599 - 64bit compilation of the new CFF engine was buggy.
600
Werner Lemberg841e49a2013-06-19 00:25:06 +0200601 - Some fixes to improve robustness in memory-tight situations.
602
Werner Lemberg2429dc32013-06-03 12:41:58 +0200603
Werner Lembergf6aa0892013-05-10 07:58:47 +0200604======================================================================
605
606CHANGES BETWEEN 2.4.11 and 2.4.12
607
Werner Lemberg234b9872013-04-26 14:10:12 +0200608 - We have another CFF parsing and hinting engine! Written by Dave
609 Arnold <darnold@adobe.com>, this work has been contributed by
610 Adobe in collaboration with Google. It is vastly superior to
611 the old CFF engine, and it will replace it in the next release.
612 Right now, it is still off by default, and you have to
613 explicitly select it using the new `hinting-engine' property of
614 the cff driver:
615
616 ...
Werner Lembergb3c3f862013-05-03 08:51:17 +0200617 #include FT_MODULE_H
Werner Lemberg234b9872013-04-26 14:10:12 +0200618 #include FT_CFF_DRIVER_H
619
620 FT_Library library;
621 int engine = FT_CFF_HINTING_ADOBE;
622
623
624 ...
625 FT_Property_Set( library, "cff", "hinting-engine", &engine );
626
Werner Lemberg2048f022013-04-29 23:04:57 +0200627 The code has a (mature) beta status; we encourage all users to
628 test it and report any problems.
Werner Lemberg234b9872013-04-26 14:10:12 +0200629
Werner Lemberg2688a6c2013-05-08 10:00:49 +0200630 In case you want to activate the new CFF engine unconditionally,
631 apply this patch:
632
633--- snip ---
634diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c
635index ebcf189..3f2ce6b 100644
636--- a/src/cff/cffobjs.c
637+++ b/src/cff/cffobjs.c
638@@ -1056,7 +1056,7 @@
639
640
641 /* set default property values */
642- driver->hinting_engine = FT_CFF_HINTING_FREETYPE;
643+ driver->hinting_engine = FT_CFF_HINTING_ADOBE;
644 driver->no_stem_darkening = FALSE;
645
646 return FT_Err_Ok;
647--- snip ---
648
Werner Lemberge4ecce32013-01-11 09:02:22 +0100649 - The macro FT_CONFIG_OPTION_OLD_INTERNALS is no longer set by
650 default. In the next release, we will completely remove the
651 associated code. Please update your programs in case you are
652 still using this macro.
653
654
Werner Lemberg6f1e3452013-03-21 09:00:27 +0100655 II. MISCELLANEOUS
656
657 - The (top-level) `configure' script now respects the MAKE
658 environment variable to specify a `make' binary. For backwards
659 compatibility, GNUMAKE still overrides MAKE, though.
660
Werner Lemberg689d68e2013-04-27 08:09:35 +0200661 - The `ftview' and `ftdiff' demo programs have been redesigned,
662 showing more options permanently on the screen, among other
663 minor improvements.
664
665 - Using the `H' key, it is now possible to select the CFF engine
666 in both `ftview' and `ftdiff'.
667
Werner Lemberg2688a6c2013-05-08 10:00:49 +0200668 - The new command line option `-H' for `ftbench' selects the Adobe
669 CFF engine.
670
Werner Lemberg689d68e2013-04-27 08:09:35 +0200671 - It is now possible to directly select the LCD rendering mode
672 with the keys `A'-`F' in `ftview'. The key mapping for cycling
673 through LCD modes has been changed from `K' and `L' to `k' and
674 `l', and toggling custom LCD filtering is no longer mapped to
675 key `F' but to key `L'.
676
677 - In `ftdiff', key `x' toggles between layout modes: Either use
678 the advance width (this is new and now the default) or the
679 bounding box information to determine line breaks.
680
681 - For all demo tools, the new command line option `-v' shows the
682 version.
683
684 - For the demo tools with a GUI, the new command line options `-w'
685 and `-h' select the width and the height of the output window,
686 respectively.
687
688 - The `ttdebug' program was broken and has been reactivated. Note
689 that this program is not compiled by default.
690
Werner Lemberg6f1e3452013-03-21 09:00:27 +0100691
Werner Lemberge4ecce32013-01-11 09:02:22 +0100692======================================================================
693
Werner Lembergc6a66b42012-12-20 08:31:56 +0100694CHANGES BETWEEN 2.4.10 and 2.4.11
695
696 I. IMPORTANT BUG FIXES
697
698 - Some vulnerabilities in the BDF implementation have been fixed.
699 Users of this font format should upgrade.
700
701
702 II. IMPORTANT CHANGES
703
704 - Subpixel hinting support has been contributed by Infinality,
705 based on Greg Hitchcock's whitepaper at
706
707 http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
708
709 Originally, it was a separate patch available from
710
711 http://www.infinality.net/blog/
712
713 and which has been integrated.
714
715 Note that ClearType support is not completely implemented! In
716 particular, full support for the options `compatible_widths',
717 `symmetrical_smoothing, and `bgr' (via the GETINFO bytecode
718 instruction) is missing.
719
720 Activation of subpixel hinting support can be controlled with
721 the `TT_CONFIG_OPTION_SUBPIXEL_HINTING' configuration option; it
722 is switched off by default. This feature is still experimental;
723 we welcome test reports!
724
725 - Support for OpenType collections (OTC) has been added.
726
727 - Pure CFF fonts within an SFNT wrapper are now supported.
728
729
730 III. MISCELLANEOUS
731
732 - Minor rendering improvements to the auto-hinter.
733
734 - `FT_GlyphSlot_Oblique' now uses a shear angle of 12°.
735
736 - Experimental support to handle `property modules', for example
737 to control the behaviour of the auto-hinter. The API consists
738 of two new functions, `FT_Property_Set' and `FT_Property_Get'.
739
740 The code is still subject to change and should not be used for
741 production.
742
743 - The `ftdiff' demo program now supports UTF-8 encoded input files
744 for option `-f'.
745
746 - Using keys `r' and `R', you can now adjust the stroker radius in
747 the `ftview' demo program.
748
749 - Other, minor fixes and improvements.
750
751
752======================================================================
753
Werner Lemberg2d67e9b2012-06-14 08:46:04 +0200754CHANGES BETWEEN 2.4.9 and 2.4.10
755
756 I. IMPORTANT BUG FIXES
757
758 - Incremental glyph loading as needed by ghostscript was broken.
759
760
761 II. MISCELLANEOUS
762
763 - A new function `FT_Outline_EmboldenXY', contributed by Alexei
764 Podtelezhnikov.
765
766 - In the `ftview' demo program, key `e' has been replaced with `x'
Alexei Podtelezhnikovcea9d7a2012-06-15 06:33:46 +0200767 and `y' to embolden in the horizontal and vertical direction,
Werner Lemberg2d67e9b2012-06-14 08:46:04 +0200768 respectively.
769
Alexei Podtelezhnikovcea9d7a2012-06-15 06:33:46 +0200770 - The glyph spacing computation in `FT_GlyphSlot_Embolden' (and
771 similar code in `ftview') has been improved.
772
Werner Lemberg2d67e9b2012-06-14 08:46:04 +0200773 - Minor improvements to the TrueType bytecode interpreter and
774 glyph loader, the auto-hinter, and the B/W rasterizer.
775
776
777======================================================================
778
Werner Lembergbd633342012-02-26 08:46:05 +0100779CHANGES BETWEEN 2.4.8 and 2.4.9
780
Werner Lemberg50ed33e2012-03-08 21:02:06 +0100781 I. IMPORTANT BUG FIXES
782
783 - Another round of fixes to better handle invalid fonts. Many of
784 them are vulnerabilities (see CVE-2012-1126 up to CVE-2012-1144
785 and SA48320) so all users should upgrade.
786
787
788 II. MISCELLANEOUS
Werner Lembergbd633342012-02-26 08:46:05 +0100789
790 - The `ENCODING -1 <n>' format of BDF fonts is now supported.
791
792 - For BDF fonts, support for the whole Unicode encoding range has
793 been added.
794
795 - Better TTF support for x_ppem != y_ppem.
796
797 - `FT_Get_Advances' sometimes returned bogus values.
798
Werner Lemberg50ed33e2012-03-08 21:02:06 +0100799 - The demo programs no longer recognize and handle default
800 suffixes; you now have to always specify the complete font name.
801
Werner Lembergc6a66b42012-12-20 08:31:56 +0100802 - Better rendering and LCD mode cycling added to `ftview'.
Werner Lembergbd633342012-02-26 08:46:05 +0100803
804
805======================================================================
806
Werner Lemberg9d7f0952011-11-14 20:37:12 +0100807CHANGES BETWEEN 2.4.7 and 2.4.8
808
809 I. IMPORTANT BUG FIXES
810
811 - Some vulnerabilities in handling CID-keyed PostScript fonts have
812 been fixed; see CVE-2011-3439.
813
814
815 II. MISCELLANEOUS
816
817 - Chris Liddell contributed a new API, `FT_Get_PS_Font_Value', to
818 retrieve most of the dictionary keys in Type 1 fonts.
819
820
821======================================================================
822
Werner Lemberg016eba92011-10-18 13:34:32 +0200823CHANGES BETWEEN 2.4.6 and 2.4.7
824
825 I. IMPORTANT BUG FIXES
826
827 - Some vulnerabilities in handling Type 1 fonts have been fixed;
828 see CVE-2011-3256.
829
Werner Lemberg9d7f0952011-11-14 20:37:12 +0100830
Werner Lemberg016eba92011-10-18 13:34:32 +0200831 II. MISCELLANEOUS
832
833 - FreeType now properly handles ZapfDingbats glyph names while
834 constructing a Unicode character map (for fonts which don't have
835 one).
836
837
838======================================================================
839
Werner Lemberg29a79652011-07-29 06:23:27 +0200840CHANGES BETWEEN 2.4.5 and 2.4.6
Werner Lembergfe42a652010-12-31 17:47:09 +0100841
Werner Lemberg9c111b02011-03-07 06:07:53 +0100842 I. IMPORTANT BUG FIXES
843
Werner Lemberg29a79652011-07-29 06:23:27 +0200844 - For TrueType based fonts, the ascender and descender values were
845 incorrect sometimes (off by a pixel if the ppem value was not a
846 multiple of 5). Depending on the use you might now experience
847 a different layout; the change should result in better, more
848 consistent line spacing.
849
850 - Fix CVE-2011-0226 which causes a vulnerability while handling
851 Type 1 fonts.
852
Werner Lemberg54f187a2011-06-29 10:01:42 +0200853 - BDF fonts containing glyphs with negative values for ENCODING
854 were incorrectly rejected. This bug has been introduced in
855 FreeType version 2.2.0.
856
Werner Lemberg9ae6c7c2011-07-02 12:15:10 +0200857 - David Bevan contributed a major revision of the FreeType stroker
858 code:
859
860 . The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected.
861
862 . A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has
863 been introduced to support PostScript and PDF miter joins.
864
865 . FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an
866 alias for FT_STROKER_LINEJOIN_MITER.
867
868 . Various stroking glitches has been fixed.
869
Werner Lemberg54f187a2011-06-29 10:01:42 +0200870
Werner Lembergf4b63322011-07-03 11:24:46 +0200871 II. MISCELLANEOUS
872
873 - SFNT bitmap fonts which contain an outline glyph for `.notdef'
874 only no longer set the FT_FACE_FLAG_SCALABLE flag.
875
876
Werner Lemberg54f187a2011-06-29 10:01:42 +0200877======================================================================
878
879CHANGES BETWEEN 2.4.4 and 2.4.5
880
881 I. IMPORTANT BUG FIXES
882
Werner Lemberg9c111b02011-03-07 06:07:53 +0100883 - A rendering regression for second-order Bézier curves has been
884 fixed, introduced in 2.4.3.
885
886
887 II. IMPORTANT CHANGES
888
889 - If autohinting is not explicitly disabled, FreeType now uses
890 the autohinter if a TrueType based font doesn't contain native
891 hints.
892
Behdad Esfahbod8c82ec52011-04-21 08:21:37 +0200893 - The load flag FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH has been made
894 redundant and is simply ignored; this means that FreeType now
895 ignores the global advance width value in TrueType fonts.
896
Werner Lemberg9c111b02011-03-07 06:07:53 +0100897
898 III. MISCELLANEOUS
Werner Lembergfe42a652010-12-31 17:47:09 +0100899
Werner Lembergcecd9122011-03-09 06:18:28 +0100900 - `FT_Sfnt_Table_Info' can now return the number of SFNT tables of
901 a font.
902
Werner Lembergfe42a652010-12-31 17:47:09 +0100903 - Support for PCF files compressed with bzip2 has been contributed
904 by Joel Klinghed. To make this work, the OS must provide a
905 bzip2 library.
906
Werner Lemberg9c111b02011-03-07 06:07:53 +0100907 - Bradley Grainger contributed project and solution files in
908 Visual Studio 2010 format.
909
910 - Again some fixes to better handle broken fonts.
911
912 - Some improvements to the B/W rasterizer.
913
914 - Fixes to the cache module to improve robustness.
915
Werner Lemberg3ae2c702011-06-24 13:18:41 +0200916 - Just Fill Bugs contributed (experimental) code to compute blue
917 zones for CJK Ideographs, improving the alignment of horizontal
918 stems at the top or bottom edges.
919
Werner Lembergda9dbf82011-06-25 07:16:22 +0200920 - The `ftgrid' demo program can now display autohinter segments,
921 to be toggled on and off with key `s'.
Werner Lembergfe42a652010-12-31 17:47:09 +0100922
Werner Lemberg54f187a2011-06-29 10:01:42 +0200923
suzuki toshiya51d48812010-11-23 04:28:11 +0900924======================================================================
925
926CHANGES BETWEEN 2.4.3 and 2.4.4
927
928 I. IMPORTANT BUG FIXES
929
930 - UVS support (TrueType/OpenType cmap format 14) support is fixed.
931 This regression has been introduced in version 2.4.0.
932
Werner Lemberg9c111b02011-03-07 06:07:53 +0100933
suzuki toshiya51d48812010-11-23 04:28:11 +0900934 II. MISCELLANEOUS
935
936 - Detect tricky fonts (e.g. MingLiU) by the lengths and checksums
937 of Type42-persistent subtables (`cvt ', `fpgm', and `prep') when
Werner Lembergcd322442010-11-28 15:31:23 +0100938 a TrueType font without family name is given. The previous fix,
939 introduced in 2.4.3, was too rigorous, causing many subsetted
940 fonts (mainly from PDF files) displayed badly because FreeType
941 forced rendering with the TrueType bytecode engine instead of
942 the autohinter.
943
944 - Better support for 64bit platforms.
945
946 - More fixes to improve handling of broken fonts.
suzuki toshiya51d48812010-11-23 04:28:11 +0900947
948
949======================================================================
Werner Lemberga5a32c12010-10-03 20:36:03 +0200950
951CHANGES BETWEEN 2.4.2 and 2.4.3
952
953 I. IMPORTANT BUG FIXES
954
955 - Fix rendering of certain cubic, S-shaped arcs. This regression
956 has been introduced in version 2.4.0.
957
958
959 II. MISCELLANEOUS
960
961 - To fix the above mentioned rendering issue, a new spline
962 flattening algorithm has been introduced which speeds up both
963 conic and cubic arcs.
964
965 - Handling of broken fonts has been further improved.
966
967
968======================================================================
969
Werner Lembergfe3433c2010-07-18 18:41:47 +0200970CHANGES BETWEEN 2.4.1 and 2.4.2
971
suzuki toshiya018f5c22010-08-06 14:12:54 +0900972 I. IMPORTANT BUG FIXES
973
974 - A stack overflow in CFF Type2 CharStrings interpreter is fixed.
975
Werner Lemberg6a8691e2010-08-06 22:00:38 +0200976 - Handling Type 42 font deallocation was broken; additionally, the
977 library is now more robust against malformed Type 42 fonts.
978
979
suzuki toshiya018f5c22010-08-06 14:12:54 +0900980 II. MISCELLANEOUS
Werner Lembergfe3433c2010-07-18 18:41:47 +0200981
982 - Two new functions, `FT_Reference_Library' (in FT_MODULE_H) and
983 `FT_Reference_Face' (in FT_FREETYPE_H), have been added to
984 simplify life-cycle management. A counter gets initialized to 1
985 at the time an FT_Library (or FT_Face) structure is created.
986 The two new functions increment the respective counter.
987 `FT_Done_Library' and `FT_Done_Face' then only destroy a library
988 or face if the counter is 1, otherwise they simply decrement the
Werner Lembergc6a66b42012-12-20 08:31:56 +0100989 counter.
Werner Lembergfe3433c2010-07-18 18:41:47 +0200990
991
992======================================================================
Werner Lembergb69c6ac2010-07-18 06:20:09 +0200993
994CHANGES BETWEEN 2.4.0 and 2.4.1
995
996 I. IMPORTANT CHANGES
997
998 - A serious bug in the CFF font module prevented display of many
999 glyphs in CFF fonts like `MinionPro-Regular.otf'.
1000
1001
1002======================================================================
1003
Werner Lemberg6bbbbc12010-07-04 07:37:56 +02001004CHANGES BETWEEN 2.3.12 and 2.4.0
Werner Lemberg460d23f2010-04-05 08:46:26 +02001005
1006 I. IMPORTANT CHANGES
1007
Werner Lemberg15ffc352010-07-12 22:07:16 +02001008 - Since May 2010, all patents regarding the TrueType bytecode
Werner Lemberg6bbbbc12010-07-04 07:37:56 +02001009 interpreter have expired worldwide. Consequently, we now define
Werner Lemberg15ffc352010-07-12 22:07:16 +02001010 TT_CONFIG_OPTION_BYTECODE_INTERPRETER by default (and undefine
Werner Lemberg6bbbbc12010-07-04 07:37:56 +02001011 TT_CONFIG_OPTION_UNPATENTED_HINTING).
1012
Werner Lemberg460d23f2010-04-05 08:46:26 +02001013 - A new function `FT_Library_SetLcdFilterWeights' is available to
1014 adjust the filter weights set by `FT_Library_SetLcdFilter'.
1015
Werner Lemberg15ffc352010-07-12 22:07:16 +02001016
Werner Lemberg6bbbbc12010-07-04 07:37:56 +02001017 II. MISCELLANEOUS
1018
1019 - Thanks to many reports from Robert Święcki, FreeType's stability
Werner Lemberg15ffc352010-07-12 22:07:16 +02001020 in handling broken or damaged fonts is much improved.
1021
1022 - Support for LCD filter control has been added to the demo
1023 programs `ftdiff' and `ftview'.
Werner Lemberg6bbbbc12010-07-04 07:37:56 +02001024
Werner Lemberg460d23f2010-04-05 08:46:26 +02001025
1026======================================================================
1027
Werner Lembergb36d4192010-02-13 07:57:56 +01001028CHANGES BETWEEN 2.3.11 and 2.3.12
1029
1030 I. IMPORTANT CHANGES
1031
1032 - For `FT_Open_Face', new parameters are available to ignore
1033 preferred family names: FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY and
1034 FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY.
1035
Werner Lemberg6bbbbc12010-07-04 07:37:56 +02001036
Werner Lembergb36d4192010-02-13 07:57:56 +01001037 II. MISCELLANEOUS
1038
1039 - Support for incremental font loading (controlled with the
1040 FT_CONFIG_OPTION_INCREMENTAL macro) is now active by default.
1041
1042 - Better support for vertical metrics.
1043
1044 - Various minor bug fixes.
1045
1046
1047======================================================================
1048
Werner Lemberg3c4e6ba2009-10-10 20:15:49 +02001049CHANGES BETWEEN 2.3.10 and 2.3.11
1050
1051 I. IMPORTANT BUG FIXES
1052
1053 - Version 2.3.10 broke PCF support.
1054
1055
1056======================================================================
1057
Werner Lembergca98f8c2009-04-04 07:42:38 +02001058CHANGES BETWEEN 2.3.10 and 2.3.9
1059
Werner Lemberg8b84c9d2009-04-27 19:40:35 +02001060 I. IMPORTANT BUG FIXES
1061
Werner Lemberg7daf8012009-04-30 20:00:22 +02001062 - If all ASCII digits in a font have the same (unscaled) width,
Werner Lemberg8b84c9d2009-04-27 19:40:35 +02001063 the autohinter respects this and won't change it.
1064
Werner Lemberg2cd790d2009-07-19 11:18:00 +02001065 - TrueType fonts are now rasterized correctly if the horizontal
1066 and vertical resolution differ.
1067
1068 - Type 1 fonts are now handled with increased precision internally
1069 to avoid serious rounding issues if non-integral coordinates are
1070 encountered.
1071
Werner Lembergd77cd8c2009-08-27 00:10:56 +02001072 - Horizontally condensed CFF fonts (using the font matrix) were
1073 rendered incorrectly. This bug has been introduced after
1074 release 2.3.5.
1075
Werner Lemberg8b84c9d2009-04-27 19:40:35 +02001076
1077 II. IMPORTANT CHANGES
Werner Lembergca98f8c2009-04-04 07:42:38 +02001078
1079 - Support for the SFNT cmap 13 table format (as defined by the new
1080 OpenType 1.6 specification) has been added.
1081
Werner Lemberg140a6942009-06-18 16:07:11 +02001082 - B/W rasterization of well-hinted TrueType fonts at small sizes
1083 has been greatly improved.
1084
Werner Lemberge2184502009-09-23 09:28:48 +02001085 - Calculation of vertical metrics in OpenType fonts has been
1086 improved.
Werner Lemberg2cd790d2009-07-19 11:18:00 +02001087
Werner Lembergbcdde602009-10-06 11:14:19 +02001088
Werner Lemberg7daf8012009-04-30 20:00:22 +02001089 III. MISCELLANEOUS
1090
1091 - It is now possible to change the emboldening factor in the
1092 `ftview' demo program with keys `e' and `E'.
1093
1094 - It is now possible to change the slant value in the `ftview'
1095 demo program with keys `s' and `S'.
1096
Werner Lemberge2184502009-09-23 09:28:48 +02001097 - The 5-levels grayscale mode of the `ftraster' module (which
1098 FreeType doesn't use by default) was broken since version 2.3.0.
1099
1100 - Compilation of the `ftgrays' and `ftraster' modules was broken
1101 in stand-alone mode.
1102
1103 - Various fixes for compilation on 64bit and 16bit architectures.
Werner Lembergca98f8c2009-04-04 07:42:38 +02001104
Werner Lembergbcdde602009-10-06 11:14:19 +02001105
Werner Lembergca98f8c2009-04-04 07:42:38 +02001106======================================================================
1107
Werner Lemberg59e2c8d2009-01-18 06:42:59 +00001108CHANGES BETWEEN 2.3.9 and 2.3.8
1109
1110 I. IMPORTANT BUG FIXES
1111
Werner Lemberg15b60bb2009-03-03 21:35:32 +00001112 - Very unfortunately, FreeType 2.3.8 contained a change that broke
1113 its official ABI. The end result is that programs compiled
David Turnercda6f492009-03-03 20:49:32 +00001114 against previous versions of the library, but dynamically linked
Werner Lemberg15b60bb2009-03-03 21:35:32 +00001115 to 2.3.8 can experience memory corruption if they call the
1116 `FT_Get_PS_Font_Info' function.
David Turnercda6f492009-03-03 20:49:32 +00001117
Werner Lemberg15b60bb2009-03-03 21:35:32 +00001118 We recommend all users to upgrade to 2.3.9 as soon as possible,
1119 or to downgrade to a previous release of the library if this is
David Turnercda6f492009-03-03 20:49:32 +00001120 not an option.
1121
Werner Lemberg15b60bb2009-03-03 21:35:32 +00001122 The origin of the bug is that a new field was added to the
1123 publicly defined `PS_FontInfoRec' structure. Unfortunately,
1124 objects of this type can be stack or heap allocated by callers
1125 of `FT_Get_PS_Font_Info', resulting in a memory buffer
1126 overwrite with its implementation in 2.3.8.
David Turnercda6f492009-03-03 20:49:32 +00001127
Werner Lemberg15b60bb2009-03-03 21:35:32 +00001128 If you want to know whether your code is vulnerable to this
1129 issue, simply search for the substrings `PS_FontInfo' and
1130 `PS_Font_Info' in your source code. If none is found, your code
1131 is safe and is not affected.
David Turnercda6f492009-03-03 20:49:32 +00001132
1133 The FreeType team apologizes for the problem.
1134
Suzuki, Toshiya (鈴木俊哉)5a009092009-01-22 03:50:37 +00001135 - The POSIX support of MacOS resource-fork fonts (Suitcase fonts
1136 and LaserWriter Type1 PostScript fonts) was broken in 2.3.8. If
1137 FreeType2 is built without Carbon framework, these fonts are not
Werner Lemberg5e83ce42009-01-22 05:53:35 +00001138 handled correctly. Version 2.3.7 didn't have this bug.
1139
Werner Lemberg14de1112009-02-24 21:34:51 +00001140 - `FT_Get_Advance' (and `FT_Get_Advances') returned bad values for
1141 almost all font formats except TrueType fonts.
1142
Werner Lemberg42f5c712009-03-03 23:34:49 +00001143 - Fix a bug in the SFNT kerning table loader/parser which could
1144 crash the engine if certain malformed tables were encountered.
Werner Lemberg59e2c8d2009-01-18 06:42:59 +00001145
Werner Lemberg21dab912009-03-09 18:06:28 +00001146 - Composite SFNT bitmaps are now handled correctly.
Werner Lemberg59e2c8d2009-01-18 06:42:59 +00001147
1148
Werner Lemberg07e81812009-03-11 21:29:54 +00001149 II. IMPORTANT CHANGES
1150
1151 - The new functions `FT_Get_CID_Is_Internally_CID_keyed' and
1152 `FT_Get_CID_From_Glyph_Index' can be used to access CID-keyed
1153 CFF fonts via CID values. This code has been contributed by
1154 Michael Toftdal.
1155
1156
1157 III. MISCELLANEOUS
Werner Lemberg59e2c8d2009-01-18 06:42:59 +00001158
1159 - `FT_Outline_Get_InsideBorder' returns FT_STROKER_BORDER_RIGHT
1160 for empty outlines. This was incorrectly documented.
1161
Werner Lemberg1e54a652009-03-11 07:10:26 +00001162 - The `ftview' demo program now supports UTF-8 encoded strings.
1163
Werner Lemberg5e83ce42009-01-22 05:53:35 +00001164
Werner Lemberg59e2c8d2009-01-18 06:42:59 +00001165======================================================================
1166
Werner Lemberg3d2f06f2008-07-16 06:13:34 +00001167CHANGES BETWEEN 2.3.8 and 2.3.7
1168
1169 I. IMPORTANT BUG FIXES
1170
Werner Lemberg22e970a2008-09-20 12:20:21 +00001171 - CID-keyed fonts in an SFNT wrapper were not handled correctly.
1172
Werner Lemberg70f4cff2008-09-20 16:12:05 +00001173 - The smooth renderer produced truncated images (on the right) for
1174 outline parts with negative horizontal values. Most fonts don't
1175 contain outlines left to the y coordinate axis, but the effect
1176 was very noticeable for outlines processed with FT_Glyph_Stroke,
1177 using thick strokes.
1178
Werner Lembergb972a2a2008-12-11 08:55:48 +00001179 - `FT_Get_TrueType_Engine_Type' returned a wrong value if both
1180 configuration macros TT_CONFIG_OPTION_BYTECODE_INTERPRETER and
1181 TT_CONFIG_OPTION_UNPATENTED_HINTING were defined.
Werner Lembergc321b9b2008-11-05 14:34:29 +00001182
Werner Lemberg1ad384d2008-12-25 23:52:00 +00001183 - The `face_index' field in the `FT_Face' structure wasn't
1184 initialized properly after calling FT_Open_Face and friends with
1185 a positive face index for CFFs, WinFNTs, and, most importantly,
1186 for TrueType Collections (TTCs).
1187
Werner Lemberg22e970a2008-09-20 12:20:21 +00001188
1189 II. IMPORTANT CHANGES
1190
1191 - Rudimentary support for Type 1 fonts and CID-keyed Type 1 fonts
1192 in an SFNT wrapper has been added -- such fonts are used on the
1193 Mac. The core SFNT tables `TYP1' and `CID ' are passed to the
1194 PS Type 1 and CID-keyed PS font drivers; other tables (`ALMX',
1195 `BBOX', etc.) are not supported yet.
Werner Lemberg3d2f06f2008-07-16 06:13:34 +00001196
Werner Lemberg174b8de2008-10-12 11:47:29 +00001197 - A new interface to extract advance values of glyphs without
1198 loading their outlines has been added. The functions are called
1199 `FT_Get_Advance' and `FT_Get_Advances'; they are defined in file
1200 `ftadvanc.h' (to be accessed as FT_ADVANCES_H).
1201
Werner Lemberg05bf6872008-12-18 06:32:10 +00001202 - A new function `FT_Get_FSType_Flags' (in FT_FREETYPE_H) has been
1203 contributed by David Bevan to access the embedding and
1204 subsetting restriction information of fonts.
1205
Werner Lemberg174b8de2008-10-12 11:47:29 +00001206
1207 III. MISCELLANEOUS
1208
1209 - FT_MulFix is now an inlined function; by default, assembler code
1210 is provided for x86 and ARM. See FT_CONFIG_OPTION_INLINE_MULFIX
1211 and FT_CONFIG_OPTION_NO_ASSEMBLER (in ftoption.h) for more.
1212
Werner Lembergb972a2a2008-12-11 08:55:48 +00001213 - The handling of `tricky' fonts (this is, fonts which don't work
1214 with the autohinter, needing the font format's hinting engine)
1215 has been generalized and changed slightly:
1216
1217 . A new face flag FT_FACE_FLAG_TRICKY indicates that the font
1218 format's hinting engine is necessary for correct rendering.
1219 The macro FT_IS_TRICKY can be used to check this flag.
1220
1221 . FT_LOAD_NO_HINTING is now ignored for tricky fonts. To really
1222 force raw loading of such fonts (without hinting), both
1223 FT_LOAD_NO_HINTING and FT_LOAD_NO_AUTOHINT must be used --
1224 this is something which you probably never want to do.
1225
1226 . Tricky TrueType fonts always use the bytecode interpreter,
1227 either the patented or unpatented version.
1228
Werner Lembergc8c4cc82008-12-17 10:50:31 +00001229 - The function `FT_GlyphSlot_Own_Bitmap' has been moved from
1230 FT_SYNTHESIS_H to FT_BITMAP_H; it is now part of the `official'
1231 API. (The functions in FT_SYNTHESIS_H are still subject to
1232 change, however.)
1233
Werner Lemberga79de112009-01-07 08:27:37 +00001234 - In the `ftdiff' demo program you can now toggle the use of
1235 FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH with key `a'.
1236
Werner Lemberg3d2f06f2008-07-16 06:13:34 +00001237
1238======================================================================
1239
Werner Lembergad83e052008-06-15 11:06:12 +00001240CHANGES BETWEEN 2.3.7 and 2.3.6
1241
1242 I. IMPORTANT BUG FIXES
1243
1244 - If the library was compiled on an i386 platform using gcc, and
1245 compiler option -O3 was given, `FT_MulFix' sometimes returned
1246 incorrect results which could have caused problems with
1247 `FT_Request_Metrics' and `FT_Select_Metrics', returning an
1248 incorrect descender size.
1249
Werner Lemberg5b631d82008-06-19 16:23:43 +00001250 - Pure CFFs without subfonts were scaled incorrectly if the font
1251 matrix was non-standard. This bug has been introduced in
1252 version 2.3.6.
1253
Werner Lembergd57a5e92008-06-18 06:16:39 +00001254 - The `style_name' field in the `FT_FaceRec' structure often
1255 contained a wrong value for Type 1 fonts. This misbehaviour
1256 has been introduced in version 2.3.6 while trying to fix
1257 another problem. [Note, however, that this value is
1258 informative only since the used algorithm to extract it is
1259 very simplistic.]
1260
Werner Lembergad83e052008-06-15 11:06:12 +00001261
Werner Lemberg745a4f42008-06-22 22:41:24 +00001262 II. IMPORTANT CHANGES
1263
1264 - Two new macros, FT_OUTLINE_SMART_DROPOUTS and
1265 FT_OUTLINE_EXCLUDE_STUBS, have been introduced. Together with
Werner Lemberg959cb8e2008-06-25 20:58:33 +00001266 FT_OUTLINE_IGNORE_DROPOUTS (which was ignored previously) it is
Werner Lemberg745a4f42008-06-22 22:41:24 +00001267 now possible to control the dropout mode of the `raster' module
1268 (for B&W rasterization), using the `flags' field in the
1269 `FT_Outline' structure.
1270
1271 - The TrueType bytecode interpreter now passes the dropout mode to
1272 the B&W rasterizer. This greatly increases the output for small
Werner Lembergbe54a682008-06-29 07:43:41 +00001273 ppem values of many fonts like `pala.ttf'.
Werner Lemberg745a4f42008-06-22 22:41:24 +00001274
1275
Werner Lembergad83e052008-06-15 11:06:12 +00001276======================================================================
Werner Lembergdf49e692007-05-04 06:30:05 +00001277
Werner Lembergef915c32007-07-16 20:46:05 +00001278CHANGES BETWEEN 2.3.6 and 2.3.5
1279
Werner Lemberg9a966b72007-10-15 17:21:32 +00001280 I. IMPORTANT BUG FIXES
1281
Werner Lemberg6174e172008-06-10 05:58:25 +00001282 - A bunch of potential security problems have been found. All
1283 users should update.
1284
Werner Lemberg9a966b72007-10-15 17:21:32 +00001285 - Microsoft Unicode cmaps in TrueType fonts are now always
1286 preferred over Apple cmaps. This is not a bug per se, but there
1287 exist some buggy fonts created for MS which have broken Apple
1288 cmaps. This affects only the automatic selection of FreeType;
1289 it's always possible to manually select an Apple Unicode cmap if
1290 desired.
1291
Werner Lemberg7cb9ec02008-06-09 20:49:29 +00001292 - Many bug fixes to the TrueType bytecode interpreter.
1293
Werner Lemberg5057e362008-02-29 07:23:02 +00001294 - Improved Mac support.
1295
Werner Lemberg210d6182008-04-01 05:55:48 +00001296 - Subsetted CID-keyed CFFs are now supported correctly.
1297
Werner Lemberge6e6ead2008-05-14 23:05:38 +00001298 - CID-keyed CFFs with subfonts which are scaled in a non-standard
1299 way are now handled correctly.
1300
Werner Lembergfb572282008-05-13 12:10:04 +00001301 - A call to FT_Open_Face with `face_index' < 0 crashed FreeType if
1302 the font was a Windows (bitmap) FNT/FON.
Werner Lemberg9a966b72007-10-15 17:21:32 +00001303
Werner Lemberg16dc51f2008-05-18 17:36:15 +00001304
Werner Lembergef915c32007-07-16 20:46:05 +00001305 II. IMPORTANT CHANGES
1306
1307 - The new function `FT_Get_CID_Registry_Ordering_Supplement' gives
1308 access to those fields in a CID-keyed font. The code has been
1309 contributed by Derek Clegg.
1310
Werner Lembergd76fe5a2007-08-08 06:38:06 +00001311 - George Williams contributed code to validate the new `MATH'
1312 OpenType table (within the `otvalid' module). The `ftvalid'
1313 demo program has been extended accordingly.
Werner Lembergef915c32007-07-16 20:46:05 +00001314
Werner Lemberg9a966b72007-10-15 17:21:32 +00001315 - An API for cmap 14 support (for Unicode Variant Selectors, UVS)
1316 has been contributed by George Williams.
1317
Werner Lemberg210d6182008-04-01 05:55:48 +00001318 - A new face flag FT_FACE_FLAG_CID_KEYED has been added, together
1319 with a macro FT_IS_CID_KEYED which evaluates to 1 if the font is
1320 CID-keyed.
1321
Werner Lemberg5057e362008-02-29 07:23:02 +00001322
Werner Lemberg85751172008-03-21 07:16:00 +00001323 III. MISCELLANEOUS
Werner Lemberg5057e362008-02-29 07:23:02 +00001324
1325 - Build support for symbian has been contributed.
1326
Werner Lemberga2f17cc2008-05-17 10:01:45 +00001327 - Better WGL4 glyph name support, contributed by Sergey Tolstov.
1328
Werner Lemberg16dc51f2008-05-18 17:36:15 +00001329 - Debugging output of the various FT_TRACEX macros is now sent to
1330 stderr.
1331
Werner Lemberg6174e172008-06-10 05:58:25 +00001332 - The `ftview' demo program now provides artificial slanting too.
1333
1334 - The `ftvalid' demo program has a new option `-f' to select the
1335 font index.
1336
Werner Lemberg5057e362008-02-29 07:23:02 +00001337
Werner Lembergef915c32007-07-16 20:46:05 +00001338======================================================================
1339
Werner Lembergdf49e692007-05-04 06:30:05 +00001340CHANGES BETWEEN 2.3.5 and 2.3.4
1341
Werner Lembergc1d22572007-05-19 07:24:55 +00001342 I. IMPORTANT BUG FIXES
1343
1344 - Some subglyphs in TrueType fonts were handled incorrectly due to
1345 a missing graphics state reinitialization.
1346
Werner Lemberg1c8980e2007-05-25 07:11:12 +00001347 - Large .Z files (as distributed with some X11 packages) weren't
1348 handled correctly, making FreeType increase the heap stack in an
1349 endless loop.
1350
Werner Lembergaa52eab2007-07-02 15:14:50 +00001351 - A large number of bugs have been fixed to avoid crashes and
1352 endless loops with invalid fonts.
1353
Werner Lembergc1d22572007-05-19 07:24:55 +00001354
1355 II. IMPORTANT CHANGES
1356
Werner Lemberg1c8980e2007-05-25 07:11:12 +00001357 - The two new cache functions `FTC_ImageCache_LookupScaler' and
1358 `FTC_SBit_Cache_LookupScaler' have been added to allow lookup of
1359 glyphs using an `FTC_Scaler' object; this makes it possible to
Werner Lemberg99e0c182007-05-29 07:00:23 +00001360 use fractional pixel sizes in the cache. The demo programs have
1361 been updated accordingly to use this feature.
Werner Lemberg1c8980e2007-05-25 07:11:12 +00001362
Werner Lemberg99e0c182007-05-29 07:00:23 +00001363 - A new API `FT_Get_CMap_Format' has been added to get the cmap
Werner Lemberg79944112007-05-19 14:10:06 +00001364 format of a TrueType font. This is useful in handling PDF
Werner Lembergc1d22572007-05-19 07:24:55 +00001365 files. The code has been contributed by Derek Clegg.
1366
Werner Lemberg99e0c182007-05-29 07:00:23 +00001367 - The auto-hinter now produces better output by default for
1368 non-Latin scripts like Indic. This was done by using the CJK
1369 hinting module as the default instead of the Latin one. Thanks
1370 to Rahul Bhalerao for this suggestion.
1371
Werner Lembergf6c120f2007-06-11 04:55:58 +00001372 - A new API `FT_Face_CheckTrueTypePatents' has been added to find
1373 out whether a given TrueType font uses patented bytecode
Werner Lemberge9f47992007-06-16 09:32:31 +00001374 instructions. The `ft2demos' bundle contains a new program
1375 called `ftpatchk' which demonstrates its usage.
Werner Lembergf6c120f2007-06-11 04:55:58 +00001376
Werner Lembergaa52eab2007-07-02 15:14:50 +00001377 - A new API `FT_Face_SetUnpatentedHinting' has been added to
1378 enable or disable the unpatented hinter.
1379
Werner Lembergab1604b2007-06-16 07:59:39 +00001380 - Support for Windows FON files in PE format has been contributed
1381 by Dmitry Timoshkov.
1382
Werner Lembergc1d22572007-05-19 07:24:55 +00001383
1384 III. MISCELLANEOUS
Werner Lembergdf49e692007-05-04 06:30:05 +00001385
1386 - Vincent Richomme contributed Visual C++ project files for Pocket
1387 PCs.
1388
1389
1390======================================================================
1391
Werner Lemberg14bf82e2007-04-10 04:09:49 +00001392CHANGES BETWEEN 2.3.4 and 2.3.3
1393
1394 I. IMPORTANT BUG FIXES
1395
1396 - A serious bug in the handling of bitmap fonts (and bitmap
1397 strikes of outline fonts) has been introduced in 2.3.3.
1398
1399
1400======================================================================
1401
David Turner23553d62007-03-26 13:37:17 +00001402CHANGES BETWEEN 2.3.3 and 2.3.2
1403
1404 I. IMPORTANT BUG FIXES
1405
1406 - Remove a serious regression in the TrueType bytecode interpreter
Werner Lemberg644b1ad2007-03-28 21:17:11 +00001407 that was introduced in version 2.3.2. Note that this does not
Werner Lemberg79944112007-05-19 14:10:06 +00001408 disable the improvements introduced to the interpreter in
1409 version 2.3.2, only some ill cases that occurred with certain
1410 fonts (though a few popular ones).
David Turner23553d62007-03-26 13:37:17 +00001411
Werner Lemberg644b1ad2007-03-28 21:17:11 +00001412 - The auto-hinter now ignores single-point contours for computing
1413 blue zones. This bug created `wavy' baselines when rendering
1414 text with various fonts that use these contours to model
1415 mark-attach points (these are points that are never rasterized
1416 and are placed outside of the glyph's real outline).
David Turner23553d62007-03-26 13:37:17 +00001417
Werner Lemberg79944112007-05-19 14:10:06 +00001418 - The `rsb_delta' and `lsb_delta' glyph slot fields are now set to
Werner Lemberg99e0c182007-05-29 07:00:23 +00001419 zero for mono-spaced fonts. Otherwise code that uses them would
David Turner23553d62007-03-26 13:37:17 +00001420 essentially ruin the fixed-advance property.
1421
Werner Lemberg79944112007-05-19 14:10:06 +00001422 - Fix CVE-2007-1351 which can cause an integer overflow while
1423 parsing BDF fonts, leading to a potentially exploitable heap
Werner Lemberg9f83e052007-04-05 02:28:23 +00001424 overflow condition.
1425
Werner Lemberg99e0c182007-05-29 07:00:23 +00001426
Werner Lemberg644b1ad2007-03-28 21:17:11 +00001427 II. MISCELLANEOUS
1428
1429 - Fixed compilation issues on some 64-bit platforms (see ChangeLog
1430 for details).
1431
1432 - A new demo program `ftdiff' has been added to compare TrueType
1433 hinting, FreeType's auto hinting, and rendering without hinting
1434 in three columns.
1435
1436
David Turner23553d62007-03-26 13:37:17 +00001437======================================================================
Werner Lemberg644b1ad2007-03-28 21:17:11 +00001438
David Turner121cad52007-03-08 16:43:50 +00001439CHANGES BETWEEN 2.3.2 and 2.3.1
1440
1441 I. IMPORTANT BUG FIXES
1442
Werner Lemberg25d592a2007-03-09 07:59:35 +00001443 - FreeType returned incorrect kerning information from TrueType
1444 fonts when the bytecode interpreter was enabled. This happened
1445 due to a typo introduced in version 2.3.0.
David Turner121cad52007-03-08 16:43:50 +00001446
Werner Lemberg25d592a2007-03-09 07:59:35 +00001447 - Negative kerning values from PFM files are now reported
1448 correctly (they were read as 16-bit unsigned values from the
1449 file).
David Turner121cad52007-03-08 16:43:50 +00001450
Werner Lemberg25d592a2007-03-09 07:59:35 +00001451 - Fixed a small memory leak when `FT_Init_FreeType' failed for
1452 some reason.
David Turner121cad52007-03-08 16:43:50 +00001453
Werner Lemberg25d592a2007-03-09 07:59:35 +00001454 - The Postscript hinter placed and sized very thin and ghost stems
1455 incorrectly.
David Turner121cad52007-03-08 16:43:50 +00001456
Werner Lemberg25d592a2007-03-09 07:59:35 +00001457 - The TrueType bytecode interpreter has been fixed to get rid of
1458 most of the rare differences seen in comparison to the Windows
1459 font loader.
1460
David Turner121cad52007-03-08 16:43:50 +00001461
1462 II. IMPORTANT CHANGES
1463
Werner Lemberg25d592a2007-03-09 07:59:35 +00001464 - The auto-hinter now better deals with serifs and corner cases
1465 (e.g., glyph '9' in Arial at 9pt, 96dpi). It also improves
1466 spacing adjustments and doesn't change widths for non-spacing
1467 glyphs.
David Turner121cad52007-03-08 16:43:50 +00001468
Werner Lemberg25d592a2007-03-09 07:59:35 +00001469 - Many Mac-specific functions are deprecated (but still
1470 available); modern replacements have been provided for them.
1471 See the documentation in file `ftmac.h'.
1472
David Turner121cad52007-03-08 16:43:50 +00001473
1474======================================================================
1475
Werner Lemberg53935932007-01-31 08:53:02 +00001476CHANGES BETWEEN 2.3.1 and 2.3.0
Werner Lemberg555258f2007-01-21 09:46:37 +00001477
1478 I. IMPORTANT BUG FIXES
1479
1480 - The TrueType interpreter sometimes returned incorrect horizontal
1481 metrics due to a bug in the handling of the SHZ instruction.
1482
Werner Lembergb1be9e82007-01-25 11:50:00 +00001483 - A typo in a security check introduced after version 2.2.1
1484 prevented FreeType to render some glyphs in CFF fonts.
1485
Werner Lembergd7855662007-01-25 13:53:56 +00001486
Werner Lemberg555258f2007-01-21 09:46:37 +00001487======================================================================
1488
Werner Lemberg17432b52007-01-12 09:28:44 +00001489CHANGES BETWEEN 2.3.0 and 2.2.1
David Turnere3d6e942006-09-26 16:58:21 +00001490
1491 I. IMPORTANT BUG FIXES
1492
Werner Lemberg110246c2006-09-26 21:55:44 +00001493 - The PCF font loader is now much more robust while loading
1494 malformed font files.
David Turnere3d6e942006-09-26 16:58:21 +00001495
Werner Lemberg110246c2006-09-26 21:55:44 +00001496 - Various memory leaks have been found and fixed.
1497
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001498 - The TrueType name loader now deals properly with some fonts that
1499 encode their names in UTF-16 (the specification was vague, and
1500 the code incorrectly assumed UCS-4).
David Turnere3d6e942006-09-26 16:58:21 +00001501
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001502 - Fixed the TrueType bytecode loader to deal properly with subtle
1503 monochrome/gray issues when scaling the CVT. Some fonts
1504 exhibited bad rendering artifacts otherwise.
David Turner4f7496e2007-01-09 09:21:16 +00001505
Werner Lembergb4142d52007-01-17 12:45:26 +00001506 - `FT_GlyphSlot_Embolden' now supports vertical layouts correctly
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001507 (it mangled the vertical advance height).
1508
Werner Lembergb4142d52007-01-17 12:45:26 +00001509 - Fixed byte endian issues of `ftmac.c' to support Mac OS X on
1510 i386.
1511
1512 - The PFR font loader no longer erroneously tags font files
1513 without any outlines as FT_FACE_FLAG_SCALABLE.
Werner Lemberg6164a9d2007-01-13 23:01:36 +00001514
David Turner4f7496e2007-01-09 09:21:16 +00001515
1516 II. NEW API FUNCTIONS
1517
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001518 - `FT_Library_SetLcdFilter' allows you to select a special filter
1519 to be applied to the bitmaps generated by `FT_Render_Glyph' if
1520 one of the FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V modes has
1521 been selected. This filter is used to reduce color fringes;
1522 several settings are available through the FT_LCD_FILTER_XXX
1523 enumeration.
David Turner4f7496e2007-01-09 09:21:16 +00001524
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001525 Its declaration and documentation can be found in file
1526 `include/freetype/ftlcdfil.h' (to be accessed with macro
1527 FT_LCD_FILTER_H).
David Turner4f7496e2007-01-09 09:21:16 +00001528
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001529 *IMPORTANT*: This function returns an error
1530 (FT_Err_Unimplemented_Feature) in default builds of the library
1531 for patent reasons. See below.
David Turner4f7496e2007-01-09 09:21:16 +00001532
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001533 - `FT_Get_Gasp' allows you to query the flags of the TrueType
1534 `gasp' table for a given character pixel size. This is useful
Werner Lembergb4142d52007-01-17 12:45:26 +00001535 to duplicate the text rendering of MS Windows when the native
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001536 bytecode interpreter is enabled (which isn't the default for
1537 other patent reasons).
David Turner4f7496e2007-01-09 09:21:16 +00001538
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001539 Its declaration and documentation can be found in file
1540 `include/freetype/ftgasp.h' (to be accessed with macro
1541 FT_GASP_H).
David Turner4f7496e2007-01-09 09:21:16 +00001542
1543
1544 III. IMPORTANT CHANGES
1545
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001546 - The auto-hinter has been tuned a lot to improve its results with
1547 serif fonts, resulting in much better font rendering of many web
1548 pages.
David Turnere3d6e942006-09-26 16:58:21 +00001549
Werner Lemberg110246c2006-09-26 21:55:44 +00001550 - The unpatented hinter is now part of the default build of the
1551 library; we have added code to automatically support `tricky'
David Turnere3d6e942006-09-26 16:58:21 +00001552 fonts that need it.
1553
Werner Lemberg110246c2006-09-26 21:55:44 +00001554 This means that FreeType should `just work' with certain Asian
1555 fonts, like MingLiU, which cannot properly be loaded without a
1556 bytecode interpreter, but which fortunately do not use any of
1557 the patented bytecode opcodes. We detect these fonts by name,
1558 so please report any font file that doesn't seem to work with
1559 FreeType, and we shall do what we can to support it in a next
1560 release.
David Turnere3d6e942006-09-26 16:58:21 +00001561
Werner Lemberg110246c2006-09-26 21:55:44 +00001562 Note that the API hasn't changed, so you can still force
Werner Lembergb4142d52007-01-17 12:45:26 +00001563 unpatented hinting with a special parameter to `FT_Open_Face' as
Werner Lemberg110246c2006-09-26 21:55:44 +00001564 well. This might be useful in same cases; for example, a PDF
1565 reader might present a user option to activate it to deal with
1566 certain `tricky' embedded fonts which cannot be clearly
1567 identified.
David Turnere3d6e942006-09-26 16:58:21 +00001568
Werner Lemberg110246c2006-09-26 21:55:44 +00001569 If you are a developer for embedded systems, you might want to
1570 *disable* the feature to save code space by undefining
Werner Lembergb4142d52007-01-17 12:45:26 +00001571 TT_CONFIG_OPTION_UNPATENTED_HINTING in file `ftoption.h'.
David Turnere3d6e942006-09-26 16:58:21 +00001572
Werner Lembergb4142d52007-01-17 12:45:26 +00001573 - LCD-optimized rendering is now *disabled* in all default builds
1574 of the library, mainly due to patent issues. For more
1575 information see:
David Turnere3d6e942006-09-26 16:58:21 +00001576
1577 http://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html
1578
Werner Lemberg110246c2006-09-26 21:55:44 +00001579 A new configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING
Werner Lembergb4142d52007-01-17 12:45:26 +00001580 has been introduced in `ftoption.h'; manually define it in this
Werner Lemberg110246c2006-09-26 21:55:44 +00001581 file if you want to re-enable the feature.
David Turnere3d6e942006-09-26 16:58:21 +00001582
Werner Lemberg110246c2006-09-26 21:55:44 +00001583 The change only affects the implementation, not the FreeType
1584 API. This means that clients don't need to be modified, because
1585 the library still generates LCD decimated bitmaps, but with the
1586 added constraint that R=G=B on each triplet.
David Turnere3d6e942006-09-26 16:58:21 +00001587
Werner Lemberg110246c2006-09-26 21:55:44 +00001588 The displayed result should be equal to normal anti-aliased
David Turnere3d6e942006-09-26 16:58:21 +00001589 rendering.
1590
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001591 Additionally, if FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
1592 defined, the new `FT_Library_SetLcdFilter' function returns the
1593 FT_Err_Unimplemented_Feature error code.
David Turner4f7496e2007-01-09 09:21:16 +00001594
Werner Lemberg110246c2006-09-26 21:55:44 +00001595 - Some computation bugs in the TrueType bytecode interpreter were
1596 found, which allow us to get rid of very subtle and rare
1597 differences we had experienced with the Windows renderer.
1598
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001599 - It is now possible to cross-compile the library easily. See the
Werner Lembergb4142d52007-01-17 12:45:26 +00001600 file `docs/INSTALL.CROSS' for details.
David Turner4f7496e2007-01-09 09:21:16 +00001601
Werner Lemberg6164a9d2007-01-13 23:01:36 +00001602 - The file `src/base/ftmac.c' now contains code for Mac OS X only;
1603 its deprecated function `FT_GetFile_From_Mac_Font_Name' always
Werner Lembergb4142d52007-01-17 12:45:26 +00001604 returns an error even if the QuickDraw framework is available.
1605 The previous version has been moved to `builds/mac/ftmac.c'.
Werner Lemberg6164a9d2007-01-13 23:01:36 +00001606
1607 Selecting configure option `--with-quickdraw-carbon' makes the
1608 build process use the original `ftmac.c' file instead of the Mac
1609 OS X-only version.
1610
David Turner4f7496e2007-01-09 09:21:16 +00001611
Werner Lemberg8c4120d2007-01-15 06:42:40 +00001612 IV. MISCELLANEOUS
David Turnere3d6e942006-09-26 16:58:21 +00001613
David Turner4f7496e2007-01-09 09:21:16 +00001614 - Various performance and memory footprint optimizations have been
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001615 performed on the TrueType and CFF font loaders, sometimes with
1616 very drastic benefits (e.g., the TrueType loader is now about
1617 25% faster; FreeType should use less heap memory under nearly
Werner Lembergb4142d52007-01-17 12:45:26 +00001618 all conditions).
David Turnere3d6e942006-09-26 16:58:21 +00001619
Werner Lemberg110246c2006-09-26 21:55:44 +00001620 - The anti-aliased rasterizer has been optimized and is now 15% to
1621 25% percent faster than in previous versions, depending on
1622 content.
David Turnere3d6e942006-09-26 16:58:21 +00001623
Werner Lemberg110246c2006-09-26 21:55:44 +00001624 - The Type 1 loader has been improved; as an example, it now skips
1625 top-level dictionaries properly.
1626
Werner Lemberg6164a9d2007-01-13 23:01:36 +00001627 - Better support for Mac fonts on POSIX systems, plus compilation
1628 fixes for Mac OS X on ppc64 where `ftmac.c' cannot be built.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001629
Werner Lemberg6164a9d2007-01-13 23:01:36 +00001630 - Configuration without `--with-old-mac-fonts' does not include
1631 `ftmac.c' (this was the behaviour in FreeType version 2.1.10).
Werner Lembergb0398be2007-01-13 08:52:27 +00001632
Werner Lemberg17432b52007-01-12 09:28:44 +00001633 - The TrueTypeGX validator (gxvalid) checks the order of glyph IDs
1634 in the kern table.
1635
David Turnere3d6e942006-09-26 16:58:21 +00001636
1637======================================================================
1638
Werner Lemberg94168f02006-05-11 07:07:09 +00001639CHANGES BETWEEN 2.2.1 and 2.2
Werner Lemberg1639c792006-05-06 16:44:58 +00001640
1641 I. IMPORTANT BUG FIXES
1642
1643 - Various integer overflows have been fixed.
1644
1645 - PFB fonts with MacOS resource fork weren't handled correctly on
1646 non-MacOS platforms.
1647
1648
1649======================================================================
1650
Werner Lemberg94168f02006-05-11 07:07:09 +00001651CHANGES BETWEEN 2.2 and 2.1.10
Werner Lemberg49f4d342005-06-16 19:07:08 +00001652
Werner Lemberg1639c792006-05-06 16:44:58 +00001653(not released officially)
1654
Werner Lemberg49f4d342005-06-16 19:07:08 +00001655 I. IMPORTANT BUG FIXES
1656
1657 - Vertical metrics for SFNT fonts were incorrect sometimes.
1658
Werner Lemberg7e25c682005-09-09 18:00:06 +00001659 - The FT_HAS_KERNING macro always returned 0.
1660
Werner Lemberg083ba0b2005-12-23 15:10:54 +00001661 - CFF OpenType fonts didn't return correct vertical metrics for
Werner Lembergcfc0cf22005-11-17 08:12:00 +00001662 glyphs with outlines.
1663
Werner Lemberg6c990452005-11-18 21:10:59 +00001664 - If FreeType was compiled without hinters, all font formats based
1665 on PS outlines weren't scaled correctly.
1666
Werner Lemberg435046b2006-01-11 10:57:42 +00001667
Werner Lemberg49f4d342005-06-16 19:07:08 +00001668 II. IMPORTANT CHANGES
1669
Werner Lemberge88d24c2006-02-28 21:49:54 +00001670 - Version 2.2 no longer exposes its internals, this is, the header
1671 files located in the `include/freetype/internal' directory of
1672 the source package are not copied anymore by the `make install'
1673 command. Consequently, a number of rogue clients which directly
1674 access FreeType's internal functions and structures won't
1675 compile without modification.
Werner Lemberg4db32ec2006-03-24 11:54:53 +00001676
Werner Lemberge88d24c2006-02-28 21:49:54 +00001677 We provide patches for most of those rogue clients. See the
1678 following page for more information:
David Turnere9a47192006-02-28 09:26:58 +00001679
Werner Lemberg94168f02006-05-11 07:07:09 +00001680 http://www.freetype.org/freetype2/patches/rogue-patches.html
Werner Lemberge88d24c2006-02-28 21:49:54 +00001681
1682 Note that, as a convenience to our Unix desktop users, version
1683 2.2 is *binary* compatible with FreeType 2.1.7, which means that
1684 installing this release on an existing distribution shall not
1685 break any working desktop.
David Turnere9a47192006-02-28 09:26:58 +00001686
Werner Lemberg59939242006-01-31 20:17:42 +00001687 - FreeType's build mechanism has been redesigned. With GNU make
1688 it is now sufficient in most cases to edit two files:
1689 `modules.cfg', to select the library components, and the
1690 configuration file `include/freetype/config/ftoption.h' (which
1691 can be copied to the objects directory). Removing unused module
1692 directories to prevent its compilation and editing
1693 `include/freetype/config/ftmodule.h' is no longer necessary.
1694
Werner Lemberg083ba0b2005-12-23 15:10:54 +00001695 - The LIGHT hinting algorithm produces more pleasant results.
1696 Also, using the FT_LOAD_TARGET_LIGHT flags within FT_Load_Glyph
Werner Lemberg40917862006-04-01 18:49:07 +00001697 always forces auto-hinting, as a special exception. This allows
1698 you to experiment with it even if you have enabled the TrueType
David Turnercf603712006-04-01 16:22:06 +00001699 bytecode interpreter in your build.
1700
1701 - The auto hinter now employs a new algorithm for CJK fonts, based
1702 on Akito Hirai's patch. Note that this only works for fonts
1703 with a Unicode charmap at the moment.
David Turnere6bb9532005-12-23 13:32:06 +00001704
Werner Lemberg083ba0b2005-12-23 15:10:54 +00001705 - The following callback function types have changed slightly (by
Werner Lemberg49f4d342005-06-16 19:07:08 +00001706 adding the `const' keyword where appropriate):
1707
1708 FT_Outline_MoveToFunc
1709 FT_Outline_LineToFunc
1710 FT_Outline_ConicToFunc
1711 FT_Outline_CubicToFunc
1712 FT_SpanFunc
1713 FT_Raster_RenderFunc
1714
1715 FT_Glyph_TransformFunc
1716 FT_Renderer_RenderFunc
1717 FT_Renderer_TransformFunc
1718
Werner Lemberg4db32ec2006-03-24 11:54:53 +00001719 Note that this doesn't affect binary backward compatibility.
Werner Lemberg49f4d342005-06-16 19:07:08 +00001720
Werner Lemberg435046b2006-01-11 10:57:42 +00001721 - On MacOS, new APIs have been added as replacements for legacy
1722 APIs: `FT_New_Face_From_FSRef' for `FT_New_Face_From_FSSpec',
1723 and `FT_GetFile_From_Mac_ATS_Name' for
1724 `FT_GetFile_From_Mac_Name'. Legacy APIs are still available, if
1725 FreeType is built without disabling them.
1726
Werner Lemberg4db32ec2006-03-24 11:54:53 +00001727 - A new API `FT_Select_Size' has been added to select a bitmap
1728 strike by its index. Code using other functions to select
1729 bitmap strikes should be updated to use this function.
Wu, Chia-I (吳佳一)e33dc2e2006-01-14 05:09:30 +00001730
Werner Lemberg4db32ec2006-03-24 11:54:53 +00001731 - A new API `FT_Get_SubGlyph_Info' has been added to retrieve
Werner Lemberg40917862006-04-01 18:49:07 +00001732 subglyph data. This can be used by rogue clients which used to
David Turnercf603712006-04-01 16:22:06 +00001733 access the internal headers to get the corresponding data.
Werner Lemberg4db32ec2006-03-24 11:54:53 +00001734
1735 - In 2.1.10, the behaviour of `FT_Set_Pixel_Sizes' was changed for
Werner Lemberge88d24c2006-02-28 21:49:54 +00001736 BDF/PCF fonts, and only for them. This causes inconsistency.
1737 In this release, we undo the change. The intent of the change
Wu, Chia-I (吳佳一)e33dc2e2006-01-14 05:09:30 +00001738 in 2.1.10 is to allow size selection through real dimensions,
1739 which can now be done through `FT_Request_Size'.
1740
Werner Lemberge88d24c2006-02-28 21:49:54 +00001741 - Some security issues were discovered and fixed in the CFF and
1742 Type 1 loader, causing crashes of FreeType by malformed font
1743 files.
1744
Suzuki, Toshiya (鈴木俊哉)f8d16cc2006-01-11 09:28:38 +00001745
Werner Lemberg49f4d342005-06-16 19:07:08 +00001746 III. MISCELLANEOUS
1747
Werner Lemberg083ba0b2005-12-23 15:10:54 +00001748 - The documentation for FT_LOAD_TARGET_XXX and FT_RENDER_MODE_XXX
1749 values now better reflects its usage and differences: One set is
David Turnerdad2a2d2006-03-20 11:48:13 +00001750 used to specify the hinting algorithm, the other to specify the
1751 pixel rendering mode.
Werner Lemberge88d24c2006-02-28 21:49:54 +00001752
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001753 - `FT_New_Face' and `FT_New_Face_From_FSSpec' in ftmac.c have been
Werner Lemberg083ba0b2005-12-23 15:10:54 +00001754 changed to count supported scalable faces (sfnt, LWFN) only, and
Werner Lemberg4db32ec2006-03-24 11:54:53 +00001755 to return the number of available faces via face->num_faces.
Werner Lemberg083ba0b2005-12-23 15:10:54 +00001756 Unsupported bitmap faces (fbit, NFNT) are ignored.
Suzuki, Toshiya (鈴木俊哉)53be6e92005-12-23 12:22:46 +00001757
Werner Lemberg435046b2006-01-11 10:57:42 +00001758 - builds/unix/configure has been improved for MacOS X. It now
1759 automatically checks available functions in Carbon library, and
1760 prepare to use newest functions by default. Options to specify
1761 the dependencies of each Carbon APIs (FSSpec, FSRef, old/new
1762 QuickDraw, ATS) are available too. By manual disabling of all
1763 QuickDraw functionality, FreeType can be built without
1764 `deprecated function' warnings on MacOS 10.4.x, but
1765 FT_GetFile_Mac_Name in ftmac.c then is changed to a dummy
1766 function, and returns an `unimplemented' error. For details see
1767 builds/mac/README.
Suzuki, Toshiya (鈴木俊哉)f8d16cc2006-01-11 09:28:38 +00001768
Werner Lemberge88d24c2006-02-28 21:49:54 +00001769 - SFNT cmap handling has been improved, mainly to run much faster
David Turnere9a47192006-02-28 09:26:58 +00001770 with CJK fonts.
Werner Lemberg7734a1f2005-10-05 15:18:29 +00001771
Werner Lembergf99d8462006-02-26 17:50:59 +00001772 - A new function `FT_Get_TrueType_Engine_Type (declared in
1773 `FT_MODULE_H') is provided to determine the status of the
1774 TrueType bytecode interpreter compiled into the library
1775 (patented, unpatented, unimplemented).
Werner Lemberg6cdab922006-01-08 22:34:01 +00001776
Wu, Chia-I (吳佳一)ea1e8d32006-01-15 15:01:45 +00001777 - Vertical metrics of glyphs are synthesized if the font does not
1778 provide such information. You can tell whether the metrics are
1779 synthesized or not by checking the FT_FACE_FLAG_VERTICAL flag of
1780 the face.
1781
Werner Lemberg7b33dca2005-06-23 20:31:48 +00001782 - The demo programs `ftview' and `ftstring' have been rewritten
Werner Lemberg1639c792006-05-06 16:44:58 +00001783 for better readability. `ftview' has a new switch `-p' to test
1784 FT_New_Memory_Face (instead of FT_New_Face).
Wu, Chia-I (吳佳一)87f9bfc2005-06-22 03:56:14 +00001785
Werner Lemberg2752bd12005-08-22 07:11:31 +00001786 - FreeType now honours bit 1 in the `head' table of TrueType fonts
Werner Lemberg083ba0b2005-12-23 15:10:54 +00001787 (meaning `left sidebearing point at x=0'). This helps with some
1788 buggy fonts.
Werner Lemberg2752bd12005-08-22 07:11:31 +00001789
Werner Lembergb3feb802005-09-23 07:40:28 +00001790 - Rudimentary support for Adobe's new `SING Glyphlet' format. See
1791
1792 http://www.adobe.com/products/indesign/sing_gaiji.html
1793
1794 for more information.
Werner Lemberg49f4d342005-06-16 19:07:08 +00001795
Werner Lemberg083ba0b2005-12-23 15:10:54 +00001796 - The `ftdump' program from the `ft2demos' bundle now shows some
1797 information about charmaps. It also supports a new switch `-v'
Werner Lembergb797fdb2005-11-30 08:48:32 +00001798 to increase verbosity.
1799
Wu, Chia-I (吳佳一)f9a69132006-02-11 12:12:02 +00001800 - Better AFM support. This includes track kerning support.
1801
Wu, Chia-I (吳佳一)f9a69132006-02-11 12:12:02 +00001802
Werner Lemberg49f4d342005-06-16 19:07:08 +00001803======================================================================
1804
Werner Lemberg94168f02006-05-11 07:07:09 +00001805CHANGES BETWEEN 2.1.10 and 2.1.9
Werner Lembergd232f592004-08-02 05:38:33 +00001806
1807 I. IMPORTANT BUG FIXES
1808
1809 - The size comparison for BDF and PCF files could fail sometimes.
1810
1811 - Some CFF files were still not loaded correctly. Patch from
1812 Derek Noonburg.
1813
1814 - The stroker still had some serious bugs.
1815
Werner Lemberg33febc02004-10-09 07:07:43 +00001816 - Boris Letocha fixed a bug in the TrueType interpreter: The
1817 NPUSHW instruction wasn't skipped correctly in IF clauses. Some
1818 fonts like `Helvetica 75 Bold' failed.
1819
Werner Lemberg4d1550e2004-11-19 14:12:48 +00001820 - Another serious bug in handling TrueType hints caused many
1821 distortions. It has been introduced in version 2.1.8, and it is
1822 highly recommended to upgrade.
Werner Lembergb9ff4152004-11-19 10:35:52 +00001823
Werner Lembergc9114b92005-02-10 08:18:27 +00001824 - FreeType didn't properly parse empty Type 1 glyphs.
David Turnere6bb9532005-12-23 13:32:06 +00001825
Werner Lembergebf55852005-03-16 01:49:54 +00001826 - An unbound dynamic buffer growth was fixed in the PFR loader.
David Turnere6bb9532005-12-23 13:32:06 +00001827
Werner Lembergebf55852005-03-16 01:49:54 +00001828 - Several bugs have been fixed in the cache sub-system.
David Turner58609c42005-03-15 23:31:48 +00001829
Werner Lembergebf55852005-03-16 01:49:54 +00001830 - FreeType behaved incorrectly when resizing two distinct but very
1831 close character pixel sizes through `FT_Set_Char_Size' (Savannah
1832 bug #12263).
David Turnere6bb9532005-12-23 13:32:06 +00001833
Werner Lembergebf55852005-03-16 01:49:54 +00001834 - The auto-hinter didn't work properly for fonts without a Unicode
1835 charmap -- it even refused to load the glyphs.
Werner Lembergc9114b92005-02-10 08:18:27 +00001836
Werner Lembergd232f592004-08-02 05:38:33 +00001837
1838 II. IMPORTANT CHANGES
1839
Werner Lembergebf55852005-03-16 01:49:54 +00001840 - Many fixes have been applied to drastically reduce the amount of
1841 heap memory used by FreeType, especially when using
1842 memory-mapped font files (which is the default on Unix systems
1843 which support them).
David Turner58609c42005-03-15 23:31:48 +00001844
Werner Lemberga37745b2005-03-23 16:45:24 +00001845 - The auto-hinter has been replaced with a new module, called the
1846 `auto-fitter'. It consumes less memory than its predecessor,
1847 and it is prepared to support non-latin scripts better in next
1848 releases.
David Turner58609c42005-03-15 23:31:48 +00001849
Werner Lembergd232f592004-08-02 05:38:33 +00001850 - George Williams contributed code to read kerning data from PFM
1851 files.
1852
1853 - FreeType now uses the TT_NAME_ID_PREFERRED_FAMILY and
1854 TT_NAME_ID_PREFERRED_SUBFAMILY strings (if available) for
1855 setting family and style in SFNT fonts (patch from Kornfeld
1856 Eliyahu Peter).
1857
Werner Lemberg17439422004-08-11 05:25:37 +00001858 - A new API `FT_Sfnt_Table_Info' (in FT_TRUETYPE_TABLES_H) has
1859 been added to retrieve name and size information of SFNT tables.
1860
Werner Lembergee95b6f2004-09-10 14:39:00 +00001861 - A new API `FT_OpenType_Validate' (in FT_OPENTYPE_VALIDATE_H) has
1862 been added to validate OpenType tables (BASE, GDEF, GPOS, GSUB,
1863 JSTF). After validation it is no longer necessary to check
Werner Lemberg33febc02004-10-09 07:07:43 +00001864 for errors in those tables while accessing them.
Werner Lembergee95b6f2004-09-10 14:39:00 +00001865
Werner Lemberg82b71922005-06-02 07:12:05 +00001866 Note that this module might be moved to another library in the
1867 future to avoid a tight dependency between FreeType and the
1868 OpenType specification.
1869
Werner Lembergf2438e12004-12-14 16:01:29 +00001870 - A new API in FT_BITMAP_H (`FT_Bitmap_New', `FT_Bitmap_Convert',
Werner Lembergafb2ba52005-05-25 05:51:01 +00001871 `FT_Bitmap_Copy', `FT_Bitmap_Embolden', `FT_Bitmap_Done') has
1872 been added. Its use is to convert an FT_Bitmap structure in
1873 1bpp, 2bpp, 4bpp, or 8bpp format into another 8bpp FT_Bitmap,
1874 probably using a different pitch, and to further manipulate it.
1875
1876 - A new API `FT_Outline_Embolden' (in FT_OUTLINE_H) gives finer
1877 control how outlines are embolded.
1878
1879 - `FT_GlyphSlot_Embolden' (in FT_SYNTHESIS_H) now handles bitmaps
1880 also (code contributed by Chia I Wu). Note that this function
1881 is still experimental and may be replaced with a better API.
Werner Lembergf2438e12004-12-14 16:01:29 +00001882
Werner Lemberga76108b2005-04-03 20:11:42 +00001883 - The method how BDF and PCF bitmap fonts are accessed has been
1884 refined. Formerly, FT_Set_Pixel_Sizes and FT_Set_Char_Size
1885 were synonyms in FreeType's BDF and PCF interface. This has
1886 changed now. FT_Set_Pixel_Sizes should be used to select the
1887 actual font dimensions (the `strike', which is the sum of the
1888 `FONT_ASCENT' and `FONT_DESCENT' properties), while
1889 FT_Set_Char_Size selects the `nominal' size (the `PIXELSIZE'
1890 property). In both functions, the width parameter is ignored.
1891
Werner Lembergebf55852005-03-16 01:49:54 +00001892
Werner Lembergf2438e12004-12-14 16:01:29 +00001893 III. MISCELLANEOUS
1894
1895 - The BDF driver no longer converts all returned bitmaps with a
1896 depth of 2bpp or 4bpp to a depth of 8bpp. The documentation has
1897 not mentioned this explicitly, but implementors might have
1898 relied on this after looking into the source files.
1899
Werner Lembergc9114b92005-02-10 08:18:27 +00001900 - A new option `--ftversion' has been added to freetype-config to
1901 return the FreeType version.
1902
Werner Lemberga37745b2005-03-23 16:45:24 +00001903 - The memory debugger has been updated to dump allocation
1904 statistics on all allocation sources in the library. This is
1905 useful to spot greedy allocations when loading and processing
1906 fonts.
David Turner58609c42005-03-15 23:31:48 +00001907
Werner Lemberga37745b2005-03-23 16:45:24 +00001908 - We removed a huge array of constant pointers to constant strings
1909 in the `psnames' module. The problem was that compilations in
1910 PIC mode (i.e., when generating a Unix shared object/dll) put
1911 the array into the non-shared writable section of the library
David Turner58609c42005-03-15 23:31:48 +00001912 since absolute pointers are not relocatable by nature.
David Turnere6bb9532005-12-23 13:32:06 +00001913
Werner Lemberga37745b2005-03-23 16:45:24 +00001914 This reduces the memory consumption by approximately 16KByte per
1915 process linked to FreeType. We now also store the array in a
1916 compressed form (as a trie) which saves about 20KByte of code as
1917 well.
David Turnerdb3faff2003-09-11 19:58:19 +00001918
Werner Lemberge623bfa2005-05-19 13:51:26 +00001919 - Kirill Smelkov provided patches to make src/raster/ftraster.c
Werner Lembergf9fccbe2005-05-19 07:20:24 +00001920 compile stand-alone again.
1921
Werner Lembergebf55852005-03-16 01:49:54 +00001922
1923======================================================================
1924
Werner Lemberg94168f02006-05-11 07:07:09 +00001925CHANGES BETWEEN 2.1.9 and 2.1.8
Werner Lemberge95365b2004-04-24 14:43:37 +00001926
1927 I. IMPORTANT BUG FIXES
1928
1929 - The function `FT_Get_CharMap_Index' was only declared, without
1930 any real code. For consistency, it has been renamed to
1931 `FT_Get_Charmap_Index'. (This function is needed to implement
1932 cmap caches.)
1933
Werner Lemberg7d62f522004-06-04 22:30:10 +00001934 - `FT_Outline_Get_BBox' sometimes returned incorrect values for
Werner Lemberg8ef41832004-06-22 12:28:17 +00001935 conic outlines (e.g., for TrueType fonts).
Werner Lemberg7d62f522004-06-04 22:30:10 +00001936
1937 - Handling of `bhed' table has been fixed.
Werner Lemberge95365b2004-04-24 14:43:37 +00001938
Werner Lemberg11785f52004-06-21 23:32:31 +00001939 - The TrueType driver with enabled byte code interpreter sometimes
1940 returned artifacts due to incorrect rounding. This bug has been
1941 introduced after version 2.1.4.
1942
Werner Lemberg8ef41832004-06-22 12:28:17 +00001943 - The BDF driver dropped the last glyph in the font.
1944
1945 - The BDF driver now uses the DEFAULT_CHAR property (if available)
1946 to select a glyph shape for the undefined glyph.
1947
Werner Lemberg43f0e262004-07-17 16:45:21 +00001948 - The stroker failed for closed outlines and single points.
1949
Werner Lemberg11785f52004-06-21 23:32:31 +00001950
Werner Lembergcdb6e702004-04-26 08:09:30 +00001951 II. IMPORTANT CHANGES
1952
1953 - George Williams contributed code to handle Apple's font
1954 distortion technology found in GX fonts (`avar', `cvar', `fvar',
1955 and `gvar' tables; the Multiple Masters API has been slightly
Werner Lemberg7d62f522004-06-04 22:30:10 +00001956 extended to cope with the new functionality).
1957
Werner Lembergfefd8742004-06-12 13:21:20 +00001958 - The `FT_GlyphSlotRec' structure has been extended: The elements
Werner Lemberg7d62f522004-06-04 22:30:10 +00001959 `lsb_delta' and `rsb_delta' give the difference between hinted
1960 and unhinted left and right side bearings if autohinting is
1961 active. Using those values can improve the inter-letter spacing
Werner Lembergfefd8742004-06-12 13:21:20 +00001962 considerably. See the documentation of `FT_GlyphSlotRec' and
Werner Lemberg7d62f522004-06-04 22:30:10 +00001963 the `ftstring' demo program how to use it.
Werner Lembergcdb6e702004-04-26 08:09:30 +00001964
Werner Lemberg43f0e262004-07-17 16:45:21 +00001965 - Loading TrueType and Type 1 fonts has been made much faster.
1966
1967 - The stroker is no longer experimental (but the cache subsystem
1968 still is).
1969
Werner Lembergcdb6e702004-04-26 08:09:30 +00001970
Werner Lembergeab92f12004-04-29 05:59:49 +00001971 III. MISCELLANEOUS
1972
1973 - A new documentation file `formats.txt' describes various font
1974 formats supported (and not supported) by FreeType.
1975
1976
Werner Lemberge95365b2004-04-24 14:43:37 +00001977======================================================================
1978
Werner Lemberg94168f02006-05-11 07:07:09 +00001979CHANGES BETWEEN 2.1.8 and 2.1.7
Werner Lemberg51ecb692003-11-13 10:19:27 +00001980
1981 I. IMPORTANT BUG FIXES
1982
Werner Lemberg4ff243d2003-11-25 09:30:57 +00001983 - The native TrueType hinter contained some bugs which prevented
1984 some fonts to be rendered correctly, most notably Legendum.otf.
1985
Werner Lembergba80d612004-04-16 09:56:30 +00001986 - The PostScript hinter now produces improved results.
Werner Lemberg460355a2004-02-24 07:52:45 +00001987
Werner Lemberg4ff243d2003-11-25 09:30:57 +00001988 - The linear advance width and height values were incorrectly
1989 rounded, making them virtually unusable if not loaded with
1990 FT_LOAD_LINEAR_DESIGN.
1991
Werner Lemberg80cfbd72003-12-26 07:26:08 +00001992 - Indexing CID-keyed CFF fonts is now working: The glyph index is
1993 correctly treated as a CID, similar to FreeType's CID driver
Werner Lemberg460355a2004-02-24 07:52:45 +00001994 module. Note that CID CMap support is still missing.
Werner Lembergb36d4a52003-12-12 15:38:39 +00001995
Werner Lembergc78df1e2004-04-21 07:36:38 +00001996 - The FT_FACE_FLAGS_GLYPH_NAMES flag is now set correctly for all
1997 font formats.
Werner Lemberg7f1458a2003-12-17 21:57:56 +00001998
Werner Lemberg80cfbd72003-12-26 07:26:08 +00001999 - Some subsetted Type 1 fonts weren't parsed correctly. This bug
Werner Lemberg9cef4792004-02-08 09:07:08 +00002000 has been introduced in 2.1.7. In summary, the Type 1 parser has
2001 become more robust.
Werner Lemberg48b6ddb2003-12-22 23:01:20 +00002002
Werner Lembergc78df1e2004-04-21 07:36:38 +00002003 - Non-decimal numbers weren't parsed correctly in PS fonts.
2004
Werner Lemberg48b6ddb2003-12-22 23:01:20 +00002005 - The WinFNT driver now correctly reports FT_ENCODING_NONE for all
Werner Lemberg80cfbd72003-12-26 07:26:08 +00002006 but one encoding. Use the new FT_WinFNT_ID_XXX values together
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002007 with `FT_Get_WinFNT_Header' to get the WinFNT charset ID.
Werner Lemberg48b6ddb2003-12-22 23:01:20 +00002008
Werner Lemberg9914b972004-01-02 16:33:04 +00002009 - The descender metrics (face->size->metrics.descender) for WinFNT
2010 bitmap fonts had the wrong sign.
2011
Werner Lembergc78df1e2004-04-21 07:36:38 +00002012 - The (emulated) `seac' support for CFF fonts was broken.
Werner Lemberg5972e9a2004-02-01 00:49:56 +00002013
Werner Lembergc78df1e2004-04-21 07:36:38 +00002014 - The `flex' operator didn't work for CFF fonts.
Werner Lemberg5972e9a2004-02-01 00:49:56 +00002015
Werner Lemberg460355a2004-02-24 07:52:45 +00002016 - PS glyphs which use the `hintmask' operator haven't been
2017 rendered correctly in some cases.
Werner Lemberga5724ef2004-02-21 16:47:20 +00002018
Werner Lemberge0c50442004-02-08 16:30:37 +00002019 - Metrics for BDF and PCF bitmap font formats have been fixed.
2020
Werner Lembergba80d612004-04-16 09:56:30 +00002021 - Autohinting is now disabled for glyphs which are vertically
2022 distorted or mirrored (using a transformation matrix). This
2023 fixes a bug which produced zero-height glyphs.
2024
Werner Lemberg53a1edd2004-02-08 22:45:48 +00002025 - The `freetype-config' script now handles --prefix and
2026 --exec-prefix correctly; it also returns the proper --rpath (or
2027 -R) value if FreeType has been built as a shared library.
2028
Werner Lemberg51ecb692003-11-13 10:19:27 +00002029
2030 II. IMPORTANT CHANGES
2031
2032 - Both PCF and BDF drivers now handle the SETWIDTH_NAME and
2033 ADD_STYLE_NAME properties. Values are appended to
2034 face->style_name; example: `Bold SemiCondensed'.
2035
Werner Lembergdfa46192004-03-05 09:26:24 +00002036 - The PCF driver now handles bitmap fonts compressed with the LZW
2037 algorithm (extension .pcf.Z, compressed with `compress').
2038
Werner Lemberg7f1458a2003-12-17 21:57:56 +00002039 - A new API function `FT_Get_CMap_Language_ID' (declared in
2040 `tttables.h') is available to get the language ID of a
2041 TrueType/SFNT cmap.
2042
Werner Lembergef512e32004-01-23 19:52:40 +00002043 - The hexadecimal format of data after the `StartData' command in
2044 CID-keyed Type 1 fonts is now supported. While this can't occur
2045 in file-based fonts, it can happen in document-embedded
2046 resources of PostScript documents.
2047
Werner Lembergdfa46192004-03-05 09:26:24 +00002048 - Embedded bitmaps in SFNT-based CFF fonts are now supported.
2049
Werner Lemberg460355a2004-02-24 07:52:45 +00002050 - A simple API is now available to control FreeType's tracing
2051 mechanism if compiled with FT_DEBUG_LEVEL_TRACE. See the file
2052 `ftdebug.h' for more details.
2053
Werner Lemberg675431b2004-02-25 21:17:49 +00002054 - YAMATO Masatake contributed improved handling of MacOS resource
2055 forks on non-MacOS platforms (for example, Linux can mount MacOS
2056 file systems).
2057
Werner Lemberge2455ba2004-02-26 21:56:27 +00002058 - Support for MacOS has been improved; there is now a new function
2059 `FT_New_Face_From_FSSpec' similar to `FT_New_Face' except that
2060 it accepts an FSSpec instead of a path.
2061
Werner Lemberg80cfbd72003-12-26 07:26:08 +00002062 - The cache sub-system has been rewritten.
2063
2064 - There is now support for deinstallation of faces.
2065
2066 - A new API function `FTC_Manager_RemoveFaceID' has been added
2067 to delete all `idle' nodes that correspond to a given
2068 FTC_FaceID. All `locked' nodes (i.e., those with a reference
2069 count > 0), will be modified to prevent them from appearing in
2070 further lookups (they will be cleaned normally when their
2071 reference count reaches 0).
2072
2073 - There is now support for point scaling (i.e., providing
2074 character sizes in points + dpis, instead of pixels).
2075
2076 - Three abstract cache classes are now available:
2077
2078 FTC_GCache: Used to store one glyph item per cache node,
2079 with the ability to group common attributes into
2080 `families'. This replaces the old
2081 FTC_GlyphCache class.
2082
2083 FTC_ICache: Used to store one FT_Glyph per cache node. This
2084 extends FTC_GCache. Family definition, family
2085 comparison, and glyph loading are however left
2086 to sub-classes.
2087
2088 FTC_SCache: Used to store up to 16 small bitmaps per cache
2089 node. This extends FTC_GCache. Family
2090 definition, family comparison and glyph loading
2091 are however left to sub-classes.
2092
2093 - The file `src/cache/ftcbasic.c' implements:
2094
2095 FTC_ImageCache: Extends FTC_ICache; implements family
2096 definitions and glyph loading similar to the
2097 old API.
2098
2099 FTC_SBitCache: Extends FTC_SCache, implements family
2100 definitions and glyph loading similar to the
2101 old API
2102
2103 Client applications should be able to extend FTC_GCache,
2104 FTC_ICache, or FTC_SCache much more easily (i.e., less code to
2105 write, and less callbacks). For example, one could envision
2106 caches that are capable of storing transformed (obliqued),
2107 stroked, emboldened, or colored glyph images. Use
2108 `ftcbasic.c' as an example.
2109
2110 - All public APIs are now in `include/freetype/ftcache.h', (to
2111 be accessed as `FT_CACHE_H'). The contents of
2112 `include/freetype/cache/' is only needed by applications that
2113 wish to implement their own caches.
2114
2115 - There were some major performance improvements through the use
2116 of various programming tricks. Cache hits are up to 70%
2117 faster than in the old code.
2118
Werner Lembergb4142d52007-01-17 12:45:26 +00002119 - The FTC_CMapCache has been simplified. Charmaps can only be
Werner Lemberg80cfbd72003-12-26 07:26:08 +00002120 accessed by index right now. There is also a new API named
2121 `FT_Charmap_GetIndex' for this purpose.
2122
2123 - The demo programs have been updated to the new code. The
2124 previous versions will not work with the current one.
2125
Werner Lemberg2630e542004-03-20 14:26:38 +00002126 - Using an invalid face index in FT_Open_Face and friends now
2127 causes an error even if the font contains a single face only.
2128
Werner Lemberg51ecb692003-11-13 10:19:27 +00002129
Werner Lemberge1075142003-12-16 06:04:44 +00002130 III. MISCELLANEOUS
2131
Werner Lemberg110246c2006-09-26 21:55:44 +00002132 - Wolfgang Domröse contributed support files for building FreeType
Werner Lembergb066c152003-12-16 06:42:11 +00002133 on the Atari using the PureC compiler. Note that the Atari is a
2134 16bit platform.
Werner Lemberge1075142003-12-16 06:04:44 +00002135
Werner Lemberg9cef4792004-02-08 09:07:08 +00002136 - Vitaliy Pasternak contributed project files for VS.NET 2003.
2137
Werner Lemberge1075142003-12-16 06:04:44 +00002138
Werner Lemberg51ecb692003-11-13 10:19:27 +00002139======================================================================
2140
Werner Lemberg94168f02006-05-11 07:07:09 +00002141CHANGES BETWEEN 2.1.7 and 2.1.6
Werner Lemberge42dbce2003-11-09 08:37:14 +00002142
2143 I. IMPORTANT BUG FIXES
2144
2145 - Updated to newest libtool version, fixing build problems on
2146 various platforms.
2147
2148 - On Unix platforms, `make install' didn't copy the correct
2149 `ftconfig.h' file.
2150
2151 Note that version 2.1.7 contains the same library C source code as
2152 version 2.1.6.
2153
2154
2155======================================================================
2156
Werner Lemberg94168f02006-05-11 07:07:09 +00002157CHANGES BETWEEN 2.1.6 and 2.1.5
David Turnerdb3faff2003-09-11 19:58:19 +00002158
2159 I. IMPORTANT BUG FIXES
2160
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002161 - The PFR font driver didn't load kerning tables correctly, and
2162 the functions in FT_PFR_H didn't work at all.
David Turnerdb3faff2003-09-11 19:58:19 +00002163
Werner Lemberg99ee4992003-09-20 17:23:36 +00002164 - Type 1 font files in binary format (PFB) with an end-of-file
2165 indicator weren't accepted by the FreeType engine.
2166
Werner Lemberg4795b362003-10-23 16:24:10 +00002167 - Fonts which contain /PaintType and /StrokeWidth no longer cause
2168 a segfault. This bug has been introduced in version 2.1.5.
2169
2170 - Fonts loaded with FT_LOAD_RENDER no longer cause strange
2171 results. This bug has been introduced in version 2.1.5.
2172
2173 - Some Windows (bitmap) FNT/FON files couldn't be handled
2174 correctly.
2175
Werner Lemberge42dbce2003-11-09 08:37:14 +00002176
David Turnerdb3faff2003-09-11 19:58:19 +00002177 II. IMPORTANT CHANGES
2178
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002179 - The internal module API has been heavily changed in favor of
2180 massive simplifications within the font engine. This also means
2181 that authors of third-party modules must adapt their code to the
Werner Lemberge42dbce2003-11-09 08:37:14 +00002182 new scheme.
2183
2184 NOTE: THE NEW SCHEME IS NOT COMPLETED YET. PLEASE WAIT UNTIL A
2185 FINAL ANNOUNCEMENT!
David Turnerdb3faff2003-09-11 19:58:19 +00002186
Werner Lemberg4795b362003-10-23 16:24:10 +00002187 - The PostScript parser has been enhanced to handle comments and
2188 strings correctly. Additionally, more syntax forms are
2189 recognized.
2190
Werner Lemberge42dbce2003-11-09 08:37:14 +00002191 - Added the optional unpatented hinting system for TrueType. It
2192 allows typefaces which need hinting to produce correct glyph
2193 forms (e.g., Chinese typefaces from Dynalab) to work acceptably
2194 without infringing Apple patents. This system is compiled only
2195 if TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING is defined in
2196 ftoption.h (activated by default).
David Turnerdb3faff2003-09-11 19:58:19 +00002197
Werner Lemberge42dbce2003-11-09 08:37:14 +00002198
2199 III. MISCELLANEOUS
2200
2201 - There is now a guard in the public header files to protect
2202 against inclusion of freetype.h from FreeType 1.
2203
2204 - Direct inclusion of freetype.h and other public header files no
2205 longer works. You have to use the documented scheme
2206
2207 #include <ft2build.h>
2208 #include FT_FREETYPE_H
2209
2210 to load freetype.h with a symbolic name. This protects against
2211 renaming of public header files (which shouldn't happen but
2212 actually has, avoiding two public header files with the same
2213 name).
2214
2215
2216======================================================================
David Turner7543f392003-09-01 21:18:03 +00002217
Werner Lemberg94168f02006-05-11 07:07:09 +00002218CHANGES BETWEEN 2.1.5 and 2.1.4
Werner Lembergf9d864a2003-07-25 05:57:21 +00002219
Werner Lembergf9d864a2003-07-25 05:57:21 +00002220 I. IMPORTANT BUG FIXES
2221
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002222 - Parsing the /CIDFontName field now removes the leading slash to
Werner Lembergf9d864a2003-07-25 05:57:21 +00002223 be in sync with other font drivers.
2224
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002225 - gzip support was buggy. Some fonts could not be read.
Werner Lembergf9d864a2003-07-25 05:57:21 +00002226
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002227 - Fonts which have nested subglyphs more than one level deep no
Werner Lembergf9d864a2003-07-25 05:57:21 +00002228 longer cause a segfault.
2229
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002230 - Creation of synthetic cmaps for fonts in CFF format was broken
Werner Lembergf9d864a2003-07-25 05:57:21 +00002231 partially.
2232
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002233 - Numeric font dictionary entries for synthetic fonts are no
2234 longer overwritten.
Werner Lembergf9d864a2003-07-25 05:57:21 +00002235
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002236 - The font matrix wasn't applied to the advance width for Type1,
Werner Lemberg4795b362003-10-23 16:24:10 +00002237 CID, and CFF fonts. This caused problems when loading certain
2238 synthetic Type 1 fonts like `Helvetica Narrow'.
Werner Lemberge8ff7692003-08-06 04:40:48 +00002239
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002240 - The test for the charset registry in BDF and PCF fonts is now
Werner Lembergf9d864a2003-07-25 05:57:21 +00002241 case-insensitive.
2242
Werner Lemberg4795b362003-10-23 16:24:10 +00002243 - FT_Vector_Rotate sometimes returned strange values due to
2244 rounding errors.
Werner Lembergf9d864a2003-07-25 05:57:21 +00002245
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002246 - The PCF driver now returns the correct number of glyphs
2247 (including an artificial `notdef' glyph at index 0).
Werner Lembergf9d864a2003-07-25 05:57:21 +00002248
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002249 - FreeType now supports buggy CMaps which are contained in many
2250 CJK fonts from Dynalab.
Werner Lembergf9d864a2003-07-25 05:57:21 +00002251
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002252 - Opening an invalid font on a Mac caused a segfault due to
Werner Lembergf9d864a2003-07-25 05:57:21 +00002253 double-freeing memory.
2254
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002255 - BDF fonts with more than 32768 glyphs weren't supported
2256 properly.
Werner Lembergf9d864a2003-07-25 05:57:21 +00002257
2258
2259 II. IMPORTANT CHANGES
2260
Werner Lembergf9d864a2003-07-25 05:57:21 +00002261 - Accessing bitmap font formats has been synchronized. To do that
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002262 the FT_Bitmap_Size structure has been extended to contain new
Werner Lembergf9d864a2003-07-25 05:57:21 +00002263 fields `size', `x_ppem', and `y_ppem'.
2264
2265 - The FNT driver now returns multiple faces, not multiple strikes.
2266
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002267 - The `psnames' module has been updated to the Adobe Glyph List
Werner Lembergf9d864a2003-07-25 05:57:21 +00002268 version 2.0.
2269
2270 - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
2271
2272 - The algorithm for guessing the font style has been improved.
2273
Werner Lemberg7f1458a2003-12-17 21:57:56 +00002274 - For fonts in SFNT format, root->height is no longer increased if
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002275 the line gap is zero. There exist fonts (containing e.g. form
2276 drawing characters) which intentionally have a zero line gap
2277 value.
Werner Lembergf9d864a2003-07-25 05:57:21 +00002278
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002279 - ft_glyph_bbox_xxx flags are now deprecated in favour of
Werner Lembergf9d864a2003-07-25 05:57:21 +00002280 FT_GLYPH_BBOX_XXX.
2281
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002282 - ft_module_xxx flags are now deprecated in favour of
2283 FT_MODULE_XXX.
Werner Lembergf9d864a2003-07-25 05:57:21 +00002284
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002285 - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now
2286 deprecated in favour of
2287 FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB} -- those encodings
2288 are not specific to Microsoft.
Werner Lemberged2a8df2003-09-01 07:06:06 +00002289
Werner Lembergf9d864a2003-07-25 05:57:21 +00002290
2291 III. MISCELLANEOUS
2292
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002293 - The autohinter has been further improved; for example, `m'
2294 glyphs now retain its vertical symmetry.
Werner Lembergf9d864a2003-07-25 05:57:21 +00002295
Werner Lembergf9d864a2003-07-25 05:57:21 +00002296 - Partial support of Mac fonts on non-Mac platforms.
2297
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002298 - `make refdoc' (after first `make') builds the HTML
2299 documentation. You need Python for this.
Werner Lembergf9d864a2003-07-25 05:57:21 +00002300
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002301 - The make build system should now work more reliably on DOS-like
Werner Lembergf9d864a2003-07-25 05:57:21 +00002302 platforms.
2303
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002304 - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has
2305 been added.
Werner Lembergf9d864a2003-07-25 05:57:21 +00002306
2307 - Better VMS build support.
2308
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002309 - Support for the pkg-config package by providing a `freetype.pc'
Werner Lembergf9d864a2003-07-25 05:57:21 +00002310 file.
2311
2312 - New configure option --with-old-mac-fonts for Darwin.
2313
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002314 - Some source files have been renamed (mainly to fit into the 8.3
Werner Lembergf9d864a2003-07-25 05:57:21 +00002315 naming scheme).
2316
2317
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002318======================================================================
Werner Lembergf9d864a2003-07-25 05:57:21 +00002319
Werner Lemberg94168f02006-05-11 07:07:09 +00002320CHANGES BETWEEN 2.1.4 and 2.1.3
David Turner9acb09e2003-01-24 08:30:36 +00002321
2322 I. IMPORTANT BUG FIXES
2323
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002324 - Updated to newest libtool version, fixing build problems on
2325 various platforms.
David Turner9acb09e2003-01-24 08:30:36 +00002326
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002327 - A fix in the Gzip stream reader: It couldn't read certain .gz
2328 files properly due to a small typo. In certain cases, FreeType
2329 could also loop endlessly when trying to load tiny gzipped
2330 files.
David Turner9acb09e2003-01-24 08:30:36 +00002331
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002332 - The configure script now tries to use the system-wide zlib when
2333 it finds one (instead of the copy found in src/gzip). And
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002334 `freetype-config' has been updated to return relevant flags in
2335 this case when invoked with `--libs' (e.g. `-lzlib').
David Turner9acb09e2003-01-24 08:30:36 +00002336
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002337 - Certain fonts couldn't be loaded by 2.1.3 because they lacked a
2338 Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously
2339 rejected them.
David Turner9acb09e2003-01-24 08:30:36 +00002340
Werner Lemberga16c4a72003-04-21 13:30:27 +00002341 - The CFF loader was modified to accept fonts which only contain a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002342 subset of their reference charset. This prevented the correct
2343 use of PDF-embedded fonts.
David Turner9acb09e2003-01-24 08:30:36 +00002344
Werner Lemberga16c4a72003-04-21 13:30:27 +00002345 - The logic to detect Unicode charmaps has been modified. This is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002346 required to support fonts which include both 16-bit and 32-bit
2347 charmaps (like very recent asian ones) using the new 10 and 12
2348 SFNT formats.
David Turner9acb09e2003-01-24 08:30:36 +00002349
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002350 - The TrueType loader now limits the depth of composite glyphs.
2351 This is necessary to prevent broken fonts to break the engine by
2352 blowing the stack with recursive glyph definitions.
David Turner9acb09e2003-01-24 08:30:36 +00002353
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002354 - The CMap cache is now capable of managing UCS-4 character codes
2355 that are mapped through extended charmaps in recent
2356 TrueType/OpenType fonts.
David Turnerb848b682003-02-25 21:44:11 +00002357
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002358 - The cache sub-system now properly manages out-of-memory
2359 conditions instead of blindly reporting them to the caller.
2360 This means that it will try to empty the cache before restarting
2361 its allocations to see if that can help.
David Turner66cbc202003-03-20 07:04:40 +00002362
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002363 - The PFR driver didn't return the list of available embedded
2364 bitmaps properly.
David Turnerb848b682003-02-25 21:44:11 +00002365
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002366 - There was a nasty memory leak when using embedded bitmaps in
2367 certain font formats.
David Turnerb6b63372003-04-09 06:55:57 +00002368
Werner Lemberga16c4a72003-04-21 13:30:27 +00002369
David Turner9acb09e2003-01-24 08:30:36 +00002370 II. IMPORTANT CHANGES
2371
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002372 - David Chester contributed some enhancements to the auto-hinter
2373 that significantly increase the quality of its output. The
2374 Postscript hinter was also improved in several ways.
David Turner9acb09e2003-01-24 08:30:36 +00002375
Werner Lemberga16c4a72003-04-21 13:30:27 +00002376 - The FT_RENDER_MODE_LIGHT render mode was implemented.
David Turner9acb09e2003-01-24 08:30:36 +00002377
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002378 - A new API function called `FT_Get_BDF_Property' has been added
2379 to FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font
2380 files. THIS IS STILL EXPERIMENTAL, since it hasn't been
2381 properly tested yet.
David Turner9acb09e2003-01-24 08:30:36 +00002382
Werner Lemberga16c4a72003-04-21 13:30:27 +00002383 - A Windows FNT specific API has been added, mostly to access font
2384 headers. This is used by Wine.
David Turner9acb09e2003-01-24 08:30:36 +00002385
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002386 - TrueType tables without an `hmtx' table are now tolerated when
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002387 an incremental interface is used. This happens for certain
2388 Type42 fonts passed from Ghostscript to FreeType.
David Turner9acb09e2003-01-24 08:30:36 +00002389
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002390 - The PFR font driver is now capable of returning the font family
2391 and style names when they are available (instead of the sole
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002392 `FontID'). This is performed by parsing an *undocumented*
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002393 portion of the font file!
Werner Lemberga16c4a72003-04-21 13:30:27 +00002394
David Turnerb848b682003-02-25 21:44:11 +00002395
David Turner9acb09e2003-01-24 08:30:36 +00002396 III. MISCELLANEOUS
2397
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002398 - The path stroker in FT_STROKER_H has entered beta stage. It now
2399 works very well, but its interface might change a bit in the
2400 future. More on this in later releases.
David Turner9acb09e2003-01-24 08:30:36 +00002401
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002402 - The documentation for FT_Size_Metrics didn't appear properly in
2403 the API reference.
David Turner9acb09e2003-01-24 08:30:36 +00002404
Werner Lemberga16c4a72003-04-21 13:30:27 +00002405 - The file docs/VERSION.DLL has been updated to explain versioning
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002406 with FreeType (i.e., comparing release/libtool/so numbers, and
2407 how to use them in autoconf scripts).
David Turner9acb09e2003-01-24 08:30:36 +00002408
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002409 - The installation documentation has been seriously revamped.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002410 Everything is now in the `docs' directory.
Werner Lemberga16c4a72003-04-21 13:30:27 +00002411
David Turner66cbc202003-03-20 07:04:40 +00002412
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002413======================================================================
Werner Lemberga16c4a72003-04-21 13:30:27 +00002414
Werner Lemberg94168f02006-05-11 07:07:09 +00002415CHANGES BETWEEN 2.1.3 and 2.1.2
David Turner86e6a712002-08-29 23:18:56 +00002416
2417 I. IMPORTANT BUG FIXES
2418
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002419 - FT_Vector_Transform had been incorrectly modified in 2.1.2,
2420 resulting in incorrect transformations being applied (for
2421 example, rotations were processed in opposite angles).
David Turner86e6a712002-08-29 23:18:56 +00002422
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002423 - The format 8 and 12 TrueType charmap enumeration routines have
2424 been fixed (FT_Get_Next_Char returned invalid values).
David Turner86e6a712002-08-29 23:18:56 +00002425
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002426 - The PFR font driver returned incorrect advance widths if the
2427 outline and metrics resolution defined in the font file were
2428 different.
David Turner86e6a712002-08-29 23:18:56 +00002429
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002430 - FT_Glyph_To_Bitmap now returns successfully when called with an
Werner Lemberg6b5c6692002-09-05 15:10:54 +00002431 FT_BitmapGlyph argument (it previously returned an error).
David Turner86e6a712002-08-29 23:18:56 +00002432
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002433 - A bug in the Type 1 loader that prevented valid font bounding
2434 boxes to be loaded from multiple master fonts.
David Turner86e6a712002-08-29 23:18:56 +00002435
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002436 - The SFNT validation code has been rewritten. FreeType can now
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002437 load `broken' fonts that were usable on Windows, but not with
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002438 previous versions of the library.
David Turner86e6a712002-08-29 23:18:56 +00002439
Werner Lemberg6b5c6692002-09-05 15:10:54 +00002440 - The computation of bearings in the BDF driver has been fixed.
David Turner86e6a712002-08-29 23:18:56 +00002441
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002442 - The Postscript hinter crashed when trying to hint certain glyphs
2443 (more precisely, when trying to apply hints to an empty glyph
2444 outline).
David Turnerdb3d5c12002-09-18 07:53:22 +00002445
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002446 - The TrueType glyph loader now supports composites in `Apple
2447 format' (they differ slightly from Microsoft/OpenType ones in
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002448 the way transformation offsets are computed).
Werner Lemberg98add9e2002-09-18 11:32:12 +00002449
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002450 - FreeType was very slow at opening certain asian CID/CFF fonts,
2451 due to fixed increment in dynamic array re-allocations. This
2452 has been changed to exponential behaviour to get acceptable
2453 performance.
Werner Lemberga16c4a72003-04-21 13:30:27 +00002454
2455
David Turner86e6a712002-08-29 23:18:56 +00002456
David Turnerb0b8df62002-09-25 00:10:27 +00002457 II. IMPORTANT CHANGES
David Turner86e6a712002-08-29 23:18:56 +00002458
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002459 - The PCF driver now supports gzip-compressed font files natively.
2460 This means that you will be able to use all these bitmap fonts
2461 that come with XFree86 with FreeType (and libXft/libXft2, by
2462 extension).
David Turner6048e3d2002-11-13 23:28:08 +00002463
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002464 - The automatic and postscript hinters have both been updated.
2465 This results in a relatively important increase of rendering
Werner Lembergb4142d52007-01-17 12:45:26 +00002466 quality since many nasty defaults have been suppressed. Please
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002467 visit the web page:
David Turnerdb3d5c12002-09-18 07:53:22 +00002468
David Turner6048e3d2002-11-13 23:28:08 +00002469 http://www.freetype.org/hinting/smooth-hinting.html
David Turnerdb3d5c12002-09-18 07:53:22 +00002470
Werner Lemberg98add9e2002-09-18 11:32:12 +00002471 for additional details on this topic.
David Turnerdb3d5c12002-09-18 07:53:22 +00002472
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002473 - The `load_flags' parameter of `FT_Load_Glyph' is now an FT_Int32
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002474 (instead of just being an FT_Int). This breaks source and
2475 binary compatibility for 16bit systems only, while retaining
2476 both of them for 32 and 64 bit ones.
David Turner86e6a712002-08-29 23:18:56 +00002477
Werner Lemberg6b5c6692002-09-05 15:10:54 +00002478 Some new flags have been added consequently:
David Turner86e6a712002-08-29 23:18:56 +00002479
Werner Lemberg6b5c6692002-09-05 15:10:54 +00002480 FT_LOAD_NO_AUTOHINT :: Disable the use of the auto-hinter
2481 (but not native format hinters).
David Turner86e6a712002-08-29 23:18:56 +00002482
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002483 FT_LOAD_TARGET_NORMAL :: Hint and render for normal
2484 anti-aliased displays.
David Turner86e6a712002-08-29 23:18:56 +00002485
Werner Lemberg6b5c6692002-09-05 15:10:54 +00002486 FT_LOAD_TARGET_MONO :: Hint and render for 1-bit displays.
David Turner86e6a712002-08-29 23:18:56 +00002487
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002488 FT_LOAD_TARGET_LCD :: Hint and render for horizontal RGB or
2489 BGR sub-pixel displays (like LCD
2490 screens). THIS IS STILL
2491 EXPERIMENTAL!
David Turner86e6a712002-08-29 23:18:56 +00002492
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002493 FT_LOAD_TARGET_LCD_V :: Same as FT_LOAD_TARGET_LCD, for
2494 vertical sub-pixel displays (like
2495 rotated LCD screens). THIS IS STILL
2496 EXPERIMENTAL!
David Turner86e6a712002-08-29 23:18:56 +00002497
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002498 FT_LOAD_MONOCHROME is still supported, but only affects
2499 rendering, not the hinting.
David Turner86e6a712002-08-29 23:18:56 +00002500
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002501 Note that the `ftview' demo program available in the `ft2demos'
2502 package has been updated to support LCD-optimized display on
2503 non-paletted displays (under Win32 and X11).
David Turnerb0b8df62002-09-25 00:10:27 +00002504
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002505 - The PFR driver now supports embedded bitmaps (all formats
2506 supported), and returns correct kerning metrics for all glyphs.
David Turner072f7f82002-10-05 15:00:36 +00002507
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002508 - The TrueType charmap loader now supports certain `broken' fonts
2509 that load under Windows without problems.
David Turnerb0b8df62002-09-25 00:10:27 +00002510
Werner Lembergcfd5dec2002-09-27 18:17:17 +00002511 - The cache API has been slightly modified (it's still a beta!):
David Turnerb0b8df62002-09-25 00:10:27 +00002512
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002513 - The type FTC_ImageDesc has been removed; it is now replaced
2514 by FTC_ImageTypeRec. Note that one of its fields is a
2515 `load_flag' parameter for FT_Load_Glyph.
David Turnerb0b8df62002-09-25 00:10:27 +00002516
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002517 - The field `num_grays' of FT_SBitRec has been changed to
2518 `max_grays' in order to fit within a single byte. Its
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002519 maximum value is thus 255 (instead of 256 as previously).
David Turnerb0b8df62002-09-25 00:10:27 +00002520
2521
2522 III. MISCELLANEOUS
2523
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002524 - Added support for the DESTDIR variable during `make install'.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002525 This simplifies packaging of FreeType.
David Turnerb0b8df62002-09-25 00:10:27 +00002526
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002527 - Included modified copies of the ZLib sources in `src/gzip' in
2528 order to support gzip-compressed PCF fonts. We do not use the
2529 system-provided zlib for now, though this is a probable
2530 enhancement for future releases.
David Turner6048e3d2002-11-13 23:28:08 +00002531
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002532 - The DocMaker tool used to generate the on-line API reference has
2533 been completely rewritten. It is now located in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002534 `src/tools/docmaker/docmaker.py'. Features:
David Turnerb0b8df62002-09-25 00:10:27 +00002535
2536 - better cross-referenced output
2537 - more polished output
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002538 - uses Python regular expressions (though it didn't speed the
David Turnerb0b8df62002-09-25 00:10:27 +00002539 program)
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002540 - much more modular structure, which allows for different
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002541 `backends' in order to generate HTML, XML, or whatever
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002542 format.
David Turnerb0b8df62002-09-25 00:10:27 +00002543
2544 One can regenerate the API reference by calling:
2545
2546 python src/tools/docmaker/docmaker.py \
2547 --prefix=ft2 \
2548 --title=FreeType-2.1.3 \
2549 --output=<outputdirectory>
2550 include/freetype/*.h \
2551 include/freetype/config/*.h \
2552 include/freetype/cache/*.h
2553
2554 - A new, experimental, support for incremental font loading (i.e.,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002555 loading of fonts where the glyphs are not in the font file
2556 itself, but provided by an external component, like a Postscript
2557 interpreter) has been added by Graham Asher. This is still work
2558 in progress, however.
David Turnerb0b8df62002-09-25 00:10:27 +00002559
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002560 - A new, EXPERIMENTAL, path stroker has been added. It doesn't
2561 suffer from severe rounding errors and treat bezier arcs
2562 directly. Still work in progress (i.e. not part of the official
2563 API). See the file <freetype/ftstroker.h> for some of the
2564 details.
David Turnerb0b8df62002-09-25 00:10:27 +00002565
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002566 - The massive re-formatting of sources and internal re-design is
2567 still under-way. Many internal functions, constants, and types
2568 have been renamed.
David Turnerb0b8df62002-09-25 00:10:27 +00002569
David Turner86e6a712002-08-29 23:18:56 +00002570
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002571======================================================================
David Turner86e6a712002-08-29 23:18:56 +00002572
Werner Lemberg94168f02006-05-11 07:07:09 +00002573CHANGES BETWEEN 2.1.2 and 2.1.1
David Turnerd490e372002-05-28 23:40:37 +00002574
2575 I. IMPORTANT BUG FIXES
2576
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002577 - Many font drivers didn't select a Unicode charmap by default
2578 when a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS
2579 options enabled), causing many applications to not be able to
2580 display text correctly with the 2.1.x releases.
David Turner86e6a712002-08-29 23:18:56 +00002581
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002582 - The PFR driver had a bug in its composite loading code that
2583 produces incorrectly placed accents with many fonts.
David Turner86e6a712002-08-29 23:18:56 +00002584
Werner Lemberg9cbb1662002-06-22 13:35:41 +00002585 - The Type42 driver crashed sometimes due to a nasty bug.
David Turner86e6a712002-08-29 23:18:56 +00002586
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002587 - The Type 1 custom encoding charmap didn't handle the case where
2588 the first glyph index wasn't 0.
David Turner38f8e892002-06-21 07:33:23 +00002589
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002590 - A serious typo in the TrueType composite loader produced
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002591 incorrectly placed glyphs in fonts like `Wingdings' and a few
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002592 others.
David Turner38f8e892002-06-21 07:33:23 +00002593
2594
2595 II. MISCELLANEOUS
2596
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002597 - The Win32 Visual C++ project file has been updated to include
2598 the PFR driver as well.
David Turner38f8e892002-06-21 07:33:23 +00002599
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002600 - `freetype.m4' is now installed by default by `make install' on
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002601 Unix systems.
David Turner38f8e892002-06-21 07:33:23 +00002602
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002603 - The function FT_Get_PS_Font_Info now works with CID and Type42
2604 fonts as well.
Werner Lemberg9cbb1662002-06-22 13:35:41 +00002605
David Turnera0d8abf2002-06-21 07:42:50 +00002606
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002607======================================================================
Werner Lemberg9cbb1662002-06-22 13:35:41 +00002608
Werner Lemberg94168f02006-05-11 07:07:09 +00002609CHANGES BETWEEN 2.1.1 and 2.1.0
David Turner38f8e892002-06-21 07:33:23 +00002610
2611 I. IMPORTANT BUG FIXES
2612
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002613 - The `version_info' returned by `freetype-config' in 2.1.0
2614 returned an invalid value. It now returns 9:1:3 (2.0.9 returned
2615 9:0:3).
David Turnerd490e372002-05-28 23:40:37 +00002616
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002617 - Version 2.1.0 couldn't be linked against applications on Win32
2618 and Amiga systems due to a new debug function that wasn't
2619 properly propagated to the system-specific directory in
2620 `builds'.
David Turnerd490e372002-05-28 23:40:37 +00002621
Werner Lemberg5bbb4942002-05-30 19:22:14 +00002622 - Various MacOS and Mac OS X specific fixes.
David Turnerd490e372002-05-28 23:40:37 +00002623
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002624 - Fixed a bug in the TrueType charmap validation routines that
2625 made version 2.1.0 too restrictive -- many popular fonts have
2626 been rejected.
David Turnerd490e372002-05-28 23:40:37 +00002627
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002628 - There was still a very small difference between the monochrome
2629 glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the
2630 bytecode interpreter enabled. This was caused by an invalid
2631 flag setting in the TrueType glyph loader, making the rasterizer
Werner Lembergb4142d52007-01-17 12:45:26 +00002632 change its drop-out control mode. Now the results should
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002633 _really_ be completely identical.
David Turnerd490e372002-05-28 23:40:37 +00002634
Werner Lemberg5bbb4942002-05-30 19:22:14 +00002635 - The TrueType name table loader has been improved to support many
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002636 popular though buggy Asian fonts. It now ignores empty name
2637 entries, invalid pointer offsets and a few other incorrect
2638 subtleties. Moreover, name strings are now loaded on demand,
2639 which reduces the memory load of many faces (e.g. the ARIAL.TTF
2640 font file contains a 10kByte name table with 70 names).
David Turnerd490e372002-05-28 23:40:37 +00002641
Werner Lemberg5bbb4942002-05-30 19:22:14 +00002642 - Fixed a bug in the Postscript hinter that prevented family blues
David Turnerd490e372002-05-28 23:40:37 +00002643 substitution to happen correctly.
2644
2645
2646 II. NEW FEATURES
2647
Werner Lemberg5bbb4942002-05-30 19:22:14 +00002648 - Three new font drivers in this release:
David Turnerd490e372002-05-28 23:40:37 +00002649
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002650 * A BDF font driver, contributed by Franco Zappa Nardelli,
2651 heavily modified by Werner Lemberg. It also supports
2652 anti-aliased bitmaps (using a slightly extended BDF format).
David Turnerd490e372002-05-28 23:40:37 +00002653
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002654 * A Type42 font driver, contributed by Roberto Alameda. It is
David Turnerb1d8f732002-06-10 22:41:57 +00002655 still experimental but seems to work relatively well.
David Turnerd490e372002-05-28 23:40:37 +00002656
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002657 * A PFR font driver, contributed by David Turner himself. It
2658 doesn't support PFR hinting -- note that BitStream has at
2659 least two patents on this format!
David Turnerd490e372002-05-28 23:40:37 +00002660
2661
David Turnerb1d8f732002-06-10 22:41:57 +00002662 III. MISCELLANEOUS
2663
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002664 - The cache sub-system has been optimized in important ways.
2665 Cache hits are now significantly faster. For example, using the
2666 CMap cache is about twice faster than calling FT_Get_Char_Index
2667 on most platforms. Similarly, using an SBit cache is about five
2668 times faster than loading the bitmaps from a bitmap file, and
2669 300 to 500 times faster than generating them from a scalable
2670 format.
David Turnerb1d8f732002-06-10 22:41:57 +00002671
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002672 Note that you should recompile your sources if you designed a
2673 custom cache class for the FT2 Cache subsystem, since the
2674 changes performed are source, but not binary, compatible.
David Turnerb1d8f732002-06-10 22:41:57 +00002675
2676
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002677======================================================================
David Turnerd490e372002-05-28 23:40:37 +00002678
Werner Lemberg94168f02006-05-11 07:07:09 +00002679CHANGES BETWEEN 2.1.0 and 2.0.9
David Turner498eed22002-04-15 12:01:10 +00002680
2681 I. IMPORTANT BUG FIXES
2682
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002683 - The TrueType bytecode interpreter has been fixed to produce
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002684 _exactly_ the same output as FreeType 1.x. Previous differences
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002685 were due to slightly distinct fixed-point computation routines
David Turner498eed22002-04-15 12:01:10 +00002686 used to perform dot products and vector length measurements.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002687
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002688 It seems that native TrueType hinting is _extremely_ sensitive
2689 to rounding errors. The required vector computation routines
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002690 have been optimized and placed within the `ttinterp.c' file.
David Turner498eed22002-04-15 12:01:10 +00002691
Werner Lemberg6e188b42002-04-17 22:42:13 +00002692 - Fixed the parsing of accelerator tables in the PCF font driver.
David Turnerd490e372002-05-28 23:40:37 +00002693
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002694 - Fixed the Type1 glyph loader routine used to compute the font's
David Turner11cfdd02002-04-17 09:37:59 +00002695 maximum advance width.
David Turner498eed22002-04-15 12:01:10 +00002696
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002697
David Turner498eed22002-04-15 12:01:10 +00002698 II. NEW FEATURES
2699
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002700 - The `configure' script used on Unix systems has been modified to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002701 check that GNU Make is being used to build the library.
2702 Otherwise, it will display a message proposing to use the
2703 GNUMAKE environment variable to name it.
David Turner498eed22002-04-15 12:01:10 +00002704
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002705 The Unix-specific file README.UNX has been modified accordingly.
2706
2707
David Turner498eed22002-04-15 12:01:10 +00002708 III. MISCELLANEOUS
2709
Werner Lemberg56c368c2005-06-04 23:00:25 +00002710 - The FreeType License in `docs/FTL.TXT' has been updated to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002711 include a proposed preferred disclaimer. If you are using
2712 FreeType in your products, you are encouraged (but not mandated)
2713 to use the following text in your documentation:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002714
2715 """
Werner Lemberg110246c2006-09-26 21:55:44 +00002716 Portions of this software are copyright © 1996-2002 The
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002717 FreeType Project (www.freetype.org). All rights reserved.
David Turner498eed22002-04-15 12:01:10 +00002718 """
2719
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002720 - The default size of the render pool has been reduced to 16kByte.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002721 This shouldn't result in any noticeable performance penalty,
2722 unless you are using the engine as-is to render very large and
2723 complex glyphs.
David Turner498eed22002-04-15 12:01:10 +00002724
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002725 - The FreeType 2 redesign has begun. More information can be
2726 found at this URL:
David Turner498eed22002-04-15 12:01:10 +00002727
David Turner498eed22002-04-15 12:01:10 +00002728 http://www.freetype.org/freetype2/redesign.html
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002729
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002730 The following internal changes have been performed within the
2731 sources of this release:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002732
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002733 - Many internal types have been renamed to increase
2734 consistency. The following should be true, except for
2735 public types:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002736
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002737 * All structure types have a name ending in `Rec' (short
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002738 for `record').
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002739
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002740 * A pointer-to-structure type has the same name as the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002741 structure, _without_ the `Rec' suffix.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002742
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002743 Example:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002744
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002745 typedef struct FooRec_
2746 {
2747 ...
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002748
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002749 } FooRec, *Foo;
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002750
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002751 - Many internal macros have been renamed to increase
2752 consistency. The following should be true:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002753
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002754 * All macros have a name beginning with `FT_'. This
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002755 required a few changes like
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002756
2757 ALLOC => FT_ALLOC
2758 FREE => FT_FREE
2759 REALLOC => FT_REALLOC
2760
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002761 * All macros are completely UPPERCASE. This required a
2762 few changes like:
David Turner498eed22002-04-15 12:01:10 +00002763
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002764 READ_Short => FT_READ_SHORT
2765 NEXT_Short => FT_NEXT_SHORT
2766 GET_ULongLE => FT_GET_ULONG_LE
2767 MEM_Set => FT_MEM_SET
2768 MEM_Copy => FT_MEM_COPY
2769 etc.
David Turner498eed22002-04-15 12:01:10 +00002770
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002771 * Whenever possible, all macro names follow the
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002772 FT_<OBJECT>_<METHOD> pattern. For example
David Turner498eed22002-04-15 12:01:10 +00002773
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002774 ACCESS_Frame => FT_FRAME_ENTER
2775 FORGET_Frame => FT_FRAME_EXIT
2776 EXTRACT_Frame => FT_FRAME_EXTRACT
2777 RELEASE_Frame => FT_FRAME_RELEASE
David Turner498eed22002-04-15 12:01:10 +00002778
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002779 FILE_Pos => FT_STREAM_POS
2780 FILE_Seek => FT_STREAM_SEEK
2781 FILE_Read => FT_STREAM_READ
2782 FILE_ReadAt => FT_STREAM_READ_AT
2783 READ_Fields => FT_STREAM_READ_FIELDS
David Turner498eed22002-04-15 12:01:10 +00002784
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002785 - Many internal functions have been renamed to follow the
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002786 FT_<Object>_<Method> pattern. For example:
David Turner498eed22002-04-15 12:01:10 +00002787
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002788 FT_Seek_Stream => FT_Stream_Seek
2789 FT_Read_Stream_At => FT_Stream_ReadAt
2790 FT_Done_Stream => FT_Stream_Close
2791 FT_New_Stream => FT_Stream_Open
2792 FT_New_Memory_Stream => FT_Stream_OpenMemory
2793 FT_Extract_Frame => FT_Stream_ExtractFrame
David Turner498eed22002-04-15 12:01:10 +00002794
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002795 Note that method names do not contain `_'.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002796
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002797 - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced
2798 with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a
2799 type as the fourth argument. Instead, the array element
2800 type size is computed automatically from the type of the
2801 target pointer used.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002802
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002803 - A new object class, FT_CMap, has been introduced. These
2804 internal objects are used to model character maps. This
2805 eases the support of additional charmap types within the
2806 engine.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002807
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002808 - A new configuration file named `ftstdlib.h' has been added
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002809 to `include/freetype/config'. It is used to define aliases
2810 for _every_ routine of the ISO C library that the font
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002811 engine uses. Each aliases has a `ft_' prefix
2812 (e.g. `ft_strlen' is an alias for `strlen').
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002813
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002814 This is used to ease the porting of FreeType 2 to exotic
2815 runtime environments where the ISO C Library isn't available
2816 (e.g. XFree86 extension modules).
David Turner498eed22002-04-15 12:01:10 +00002817
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002818 More details are available in the `ChangeLog' file.
David Turner498eed22002-04-15 12:01:10 +00002819
2820
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002821======================================================================
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002822
Werner Lemberg94168f02006-05-11 07:07:09 +00002823CHANGES BETWEEN 2.0.9 and 2.0.8
David Turner2c7558c2002-04-11 14:21:16 +00002824
2825 I. IMPORTANT BUG FIXES
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002826
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002827 - Certain fonts like `foxjump.ttf' contain broken name tables with
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002828 invalid entries and wild offsets. This caused FreeType to crash
2829 when trying to load them.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002830
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002831 The SFNT `name' table loader has been fixed to be able to
2832 support these strange fonts.
David Turner2c7558c2002-04-11 14:21:16 +00002833
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002834 Moreover, the code in charge of processing this table has been
2835 changed to always favour Windows-formatted entries over other
2836 ones. Hence, a font that works on Windows but not on the Mac
2837 will load cleanly in FreeType and report accurate values for
2838 Family & PostScript names.
David Turner2c7558c2002-04-11 14:21:16 +00002839
2840 - The CID font driver has been fixed. It unfortunately returned a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002841 Postscript Font name with a leading slash, as in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002842 `/MunhwaGothic-Regular'.
David Turner2c7558c2002-04-11 14:21:16 +00002843
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002844 - FreeType 2 should now compile fine on AIX 4.3.3 as a shared
2845 library.
David Turner2c7558c2002-04-11 14:21:16 +00002846
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002847 - A bug in the Postscript hinter has been found and fixed,
2848 removing un-even stem widths at small pixel sizes (like 14-17).
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002849
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002850 This improves the quality of a certain number of Postscript
2851 fonts.
David Turner2c7558c2002-04-11 14:21:16 +00002852
2853
Werner Lemberg0cc456a2002-04-11 19:55:58 +00002854 II. NEW FEATURES
David Turner2c7558c2002-04-11 14:21:16 +00002855
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002856 - A new function named `FT_Library_Version' has been added to
2857 return the current library's major, minor, and patch version
2858 numbers. This is important since the macros FREETYPE_MAJOR,
2859 FREETYPE_MINOR, and FREETYPE_PATCH cannot be used when the
2860 library is dynamically linked by a program.
David Turner2c7558c2002-04-11 14:21:16 +00002861
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002862 - Two new APIs have been added: `FT_Get_First_Char' and
Werner Lemberg0cc456a2002-04-11 19:55:58 +00002863 `FT_Get_Next_Char'.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002864
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002865 Together, these can be used to iterate efficiently over the
2866 currently selected charmap of a given face. Read the API
2867 reference for more details.
David Turner2c7558c2002-04-11 14:21:16 +00002868
2869
Werner Lemberg0cc456a2002-04-11 19:55:58 +00002870 III. MISCELLANEOUS
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002871
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002872 - The FreeType sources are under heavy internal re-factoring. As
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002873 a consequence, we have created a branch named `STABLE' on the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002874 CVS to hold all future releases/fixes in the 2.0.x family.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002875
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002876 The HEAD branch now contains the re-factored sources and
2877 shouldn't be used for testing or packaging new releases. In
2878 case you would like to access the 2.0.9 sources from our CVS
2879 repository, use the tag `VER-2-0-9'.
David Turner2c7558c2002-04-11 14:21:16 +00002880
2881
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002882======================================================================
David Turner2c7558c2002-04-11 14:21:16 +00002883
Werner Lemberg94168f02006-05-11 07:07:09 +00002884CHANGES BETWEEN 2.0.8 and 2.0.7
David Turner1c6af482002-02-08 14:00:20 +00002885
2886 I. IMPORTANT BUG FIXES
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002887
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002888 - There was a small but nasty bug in `freetype-config.in' which
2889 caused the `freetype-config' script to fail on Unix.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002890
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002891 This didn't prevent the installation of the library or even its
2892 execution, but caused problems when trying to compile many Unix
2893 packages that depend on it.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002894
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002895 - Some TrueType or OpenType fonts embedded in PDF documents do not
2896 have a 'cmap', 'post' and 'name' as is required by the
Werner Lemberg0cc456a2002-04-11 19:55:58 +00002897 specification. FreeType no longer refuses to load such fonts.
David Turner1c6af482002-02-08 14:00:20 +00002898
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002899 - Various fixes to the PCF font driver.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002900
David Turner1c6af482002-02-08 14:00:20 +00002901
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002902======================================================================
David Turner1c6af482002-02-08 14:00:20 +00002903
Werner Lemberg94168f02006-05-11 07:07:09 +00002904CHANGES BETWEEN 2.0.7 and 2.0.6
David Turner944b7292002-01-31 17:42:05 +00002905
2906 I. IMPORTANT BUG FIXES
2907
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002908 - Fixed two bugs in the Type 1 font driver. The first one
2909 resulted in a memory leak in subtle cases. The other one caused
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002910 FreeType to crash when trying to load `.gsf' files (Ghostscript
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002911 so-called Postscript fonts).
David Turner944b7292002-01-31 17:42:05 +00002912
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002913 (This made _many_ KDE applications crash on certain systems.
2914 FreeType _is_ becoming a critical system component on Linux :-)
David Turner944b7292002-01-31 17:42:05 +00002915
Werner Lemberg32b53462002-02-01 01:20:11 +00002916 - Fixed a memory leak in the CFF font driver.
David Turner944b7292002-01-31 17:42:05 +00002917
Werner Lemberg32b53462002-02-01 01:20:11 +00002918 - Fixed a memory leak in the PCF font driver.
David Turner944b7292002-01-31 17:42:05 +00002919
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002920 - Fixed the Visual C++ project file
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002921 `builds/win32/visualc/freetype.dsp' since it didn't include the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002922 Postscript hinter component, causing errors at build time.
David Turner944b7292002-01-31 17:42:05 +00002923
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002924 - Fixed a small rendering bug in the anti-aliased renderer that
2925 only occurred when trying to draw thin (less than 1 pixel)
2926 strokes.
David Turner944b7292002-01-31 17:42:05 +00002927
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002928 - Fixed `builds/unix/freetype2.a4' which is used to generate a
2929 valid `freetype2.m4' for use with autoconf.
Werner Lemberg32b53462002-02-01 01:20:11 +00002930
2931 - Fixed the OpenVMS Makefiles.
David Turner944b7292002-01-31 17:42:05 +00002932
2933
2934 II. MISCELLANEOUS
2935
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002936 - Added `configure' and `install' scripts to the top-level
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002937 directory. A GNU-style installation is thus now easily possible
2938 with
Werner Lemberg32b53462002-02-01 01:20:11 +00002939
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002940 ./configure <options>
2941 make
2942 make install
David Turner944b7292002-01-31 17:42:05 +00002943
2944
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002945======================================================================
David Turner944b7292002-01-31 17:42:05 +00002946
Werner Lemberg94168f02006-05-11 07:07:09 +00002947CHANGES BETWEEN 2.0.6 and 2.0.5
David Turnerafa38542001-10-18 13:22:01 +00002948
Werner Lembergf41e71a2001-12-20 21:22:02 +00002949 I. IMPORTANT BUG FIXES
David Turner640078d2001-12-10 10:47:47 +00002950
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002951 - It wasn't possible to load embedded bitmaps when the auto-hinter
2952 was used. This is now fixed.
David Turner640078d2001-12-10 10:47:47 +00002953
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002954 - The TrueType font driver didn't load some composites properly
2955 (the sub-glyphs were slightly shifted, and this was only
2956 noticeable when using monochrome rendering).
David Turnerafa38542001-10-18 13:22:01 +00002957
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002958 - Various fixes to the auto-hinter. They merely improve the
2959 output of sans-serif fonts. Note that there are still problems
2960 with serifed fonts and composites (accented characters).
David Turnerafa38542001-10-18 13:22:01 +00002961
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002962 - All scalable font drivers erroneously returned un-fitted glyph
2963 advances when hinting was requested. This created problems for
2964 a number of layout applications. This is a very old bug that
2965 got undetected mainly because most test/demo program perform
2966 rounding explicitly or implicitly (through the cache).
Werner Lembergf41e71a2001-12-20 21:22:02 +00002967
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002968 - `FT_Glyph_To_Bitmap' did erroneously modify the source glyph in
Werner Lembergf41e71a2001-12-20 21:22:02 +00002969 certain cases.
2970
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002971 - `glnames.py' still contained a bug that made FreeType return
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002972 invalid names for certain glyphs.
David Turnerafa38542001-10-18 13:22:01 +00002973
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002974 - The library crashed when loading certain Type 1 fonts like
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002975 `sadn.pfb' (`Stalingrad Normal'), which appear to contain
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002976 pathetic font info dictionaries.
David Turner6096b5a2002-01-07 10:40:48 +00002977
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002978 - The TrueType glyph loader is now much more paranoid and checks
2979 everything when loading a given glyph image. This was necessary
2980 to avoid problems (crashes and/or memory overwrites) with broken
2981 fonts that came from a really buggy automatic font converter.
David Turner6096b5a2002-01-07 10:40:48 +00002982
2983
Werner Lembergf41e71a2001-12-20 21:22:02 +00002984 II. IMPORTANT UPDATES AND NEW FEATURES
David Turner0fcb4122001-12-20 13:33:03 +00002985
Werner Lembergf41e71a2001-12-20 21:22:02 +00002986 - Important updates to the Mac-specific parts of the library.
David Turner0fcb4122001-12-20 13:33:03 +00002987
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002988 - The caching sub-system has been completely re-designed, and its
Werner Lemberg4db32ec2006-03-24 11:54:53 +00002989 API has evolved (the old one is still supported for backward
Werner Lembergf41e71a2001-12-20 21:22:02 +00002990 compatibility).
David Turner0fcb4122001-12-20 13:33:03 +00002991
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002992 The documentation for it is not yet completed, sorry. For now,
2993 you are encouraged to continue using the old API. However, the
2994 ftview demo program in the ft2demos package has already been
2995 updated to use the new caching functions.
David Turner0fcb4122001-12-20 13:33:03 +00002996
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002997 - A new charmap cache is provided too. See `FTC_CMapCache'. This
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002998 is useful to perform character code -> glyph index translations
2999 quickly, without the need for an opened FT_Face.
David Turner0fcb4122001-12-20 13:33:03 +00003000
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003001 - A NEW POSTSCRIPT HINTER module has been added to support native
3002 hints in the following formats: PostScript Type 1, PostScript
3003 CID, and CFF/CEF.
Werner Lembergf41e71a2001-12-20 21:22:02 +00003004
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003005 Please test! Note that the auto-hinter produces better results
3006 for a number of badly-hinted fonts (mostly auto-generated ones)
3007 though.
Werner Lembergf41e71a2001-12-20 21:22:02 +00003008
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003009 - A memory debugger is now part of the standard FreeType sources.
3010 To enable it, define FT_DEBUG_MEMORY in
3011 <freetype/config/ftoption.h>, and recompile the library.
Werner Lembergf41e71a2001-12-20 21:22:02 +00003012
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003013 Additionally, define the _environment_ variable FT_DEBUG_MEMORY
3014 and run any program using FreeType. When the library is exited,
3015 a summary of memory footprints and possible leaks will be
3016 displayed.
Werner Lembergf41e71a2001-12-20 21:22:02 +00003017
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003018 This works transparently with _any_ program that uses FreeType.
3019 However, you will need a lot of memory to use this (allocated
3020 blocks are never released to the heap to detect double deletes
3021 easily).
David Turner0fcb4122001-12-20 13:33:03 +00003022
3023
Werner Lembergf41e71a2001-12-20 21:22:02 +00003024 III. MISCELLANEOUS
David Turner0fcb4122001-12-20 13:33:03 +00003025
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003026 - We are aware of subtle differences between the output of
3027 FreeType versions 1 and 2 when it comes to monochrome
3028 TrueType-hinted glyphs. These are most probably due to small
3029 differences in the monochrome rasterizers and will be worked out
3030 in an upcoming release.
David Turner0fcb4122001-12-20 13:33:03 +00003031
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003032 - We have decided to fork the sources in a `stable' branch, and an
3033 `unstable' one, since FreeType is becoming a critical component
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003034 of many Unix systems.
Werner Lemberg32b53462002-02-01 01:20:11 +00003035
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003036 The next bug-fix releases of the library will be named 2.0.7,
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003037 2.0.8, etc., while the `2.1' branch will contain a version of
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003038 the sources where we will start major reworking of the library's
3039 internals, in order to produce FreeType 2.2.0 (or even 3.0) in a
3040 more distant future.
Werner Lemberg32b53462002-02-01 01:20:11 +00003041
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003042 We also hope that this scheme will allow much more frequent
3043 releases than in the past.
David Turner6096b5a2002-01-07 10:40:48 +00003044
David Turner0fcb4122001-12-20 13:33:03 +00003045
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003046======================================================================
David Turnerafa38542001-10-18 13:22:01 +00003047
Werner Lemberg94168f02006-05-11 07:07:09 +00003048CHANGES BETWEEN 2.0.5 and 2.0.4
David Turner1cd4f852001-10-09 07:32:50 +00003049
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003050 NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER. THIS MODULE
3051 WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
David Turner1cd4f852001-10-09 07:32:50 +00003052
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003053 - Fixed a bug that made certain glyphs, like `Cacute', `cacute' and
3054 `lslash' unavailable from Unicode charmaps of Postscript fonts.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003055 This prevented the correct display of Polish text, for example.
David Turner1cd4f852001-10-09 07:32:50 +00003056
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003057 - The kerning table of Type 1 fonts was loaded by FreeType, when its
3058 AFM file was attached to its face, but the
3059 FT_FACE_FLAG_HAS_KERNING bit flags was not set correctly,
3060 preventing FT_Get_Kerning to return meaningful values.
David Turner1cd4f852001-10-09 07:32:50 +00003061
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003062 - Improved SFNT (TrueType & OpenType) charmap support. Slightly
3063 better performance, as well as support for the new formats defined
3064 by the OpenType 1.3 specification (8, 10, and 12)
David Turner1cd4f852001-10-09 07:32:50 +00003065
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003066 - Fixed a serious typo in `src/base/ftcalc.c' which caused invalid
Werner Lemberg80b8d772001-10-10 19:56:42 +00003067 computations in certain rare cases, producing ugly artefacts.
3068
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003069 - The size of the EM square is computed with a more accurate
3070 algorithm for Postscript fonts. The old one caused slight errors
3071 with embedded fonts found in PDF documents.
Werner Lemberg80b8d772001-10-10 19:56:42 +00003072
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003073 - Fixed a bug in the cache manager that prevented normal LRU
3074 behaviour within the cache manager, causing unnecessary reloads
3075 (for FT_Face and FT_Size objects only).
Werner Lemberg80b8d772001-10-10 19:56:42 +00003076
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003077 - Added a new function named `FT_Get_Name_Index' to retrieve the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003078 glyph index of a given glyph name, when found in a face.
David Turner1cd4f852001-10-09 07:32:50 +00003079
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003080 - Added a new function named `FT_Get_Postscript_Name' to retrieve
3081 the `unique' Postscript font name of a given face.
David Turner034a1932001-10-17 13:57:02 +00003082
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003083 - Added a new public header size named FT_SIZES_H (or
3084 <freetype/ftsizes.h>) providing new FT_Size-management functions:
Werner Lembergf41e71a2001-12-20 21:22:02 +00003085 FT_New_Size, FT_Activate_Size, FT_Done_Size.
David Turner034a1932001-10-17 13:57:02 +00003086
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003087 - Fixed a reallocation bug that generated a dangling pointer (and
3088 possibly memory leaks) with Postscript fonts (in
3089 src/psaux/psobjs.c).
David Turner1cd4f852001-10-09 07:32:50 +00003090
Werner Lemberg80b8d772001-10-10 19:56:42 +00003091 - Many fixes for 16-bit correctness.
David Turner1cd4f852001-10-09 07:32:50 +00003092
Werner Lemberg80b8d772001-10-10 19:56:42 +00003093 - Removed many pedantic compiler warnings from the sources.
3094
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003095 - Added an Amiga build directory in `builds/amiga'.
David Turner1cd4f852001-10-09 07:32:50 +00003096
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003097
3098======================================================================
David Turner1cd4f852001-10-09 07:32:50 +00003099
Werner Lemberg94168f02006-05-11 07:07:09 +00003100CHANGES BETWEEN 2.0.4 and 2.0.3
David Turner995ff202001-06-22 08:45:31 +00003101
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003102 - Fixed a rather annoying bug that was introduced in 2.0.3. Namely,
3103 the font transformation set through FT_Set_Transform was applied
3104 twice to auto-hinted glyphs, resulting in incorrectly rotated text
3105 output.
Werner Lemberg80b8d772001-10-10 19:56:42 +00003106
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003107 - Fixed _many_ compiler warnings. FT2 should now compile cleanly
3108 with Visual C++'s most pedantic warning level (/W4). It already
3109 compiled fine with GCC and a few other compilers.
David Turner995ff202001-06-22 08:45:31 +00003110
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003111 - Fixed a bug that prevented the linear advance width of composite
Werner Lemberg80b8d772001-10-10 19:56:42 +00003112 TrueType glyphs to be correctly returned.
David Turner21939452001-10-05 14:23:03 +00003113
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003114 - Fixed the Visual C++ project files located in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003115 `builds/win32/visualc' (previous versions used older names of the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003116 library).
Werner Lemberg80b8d772001-10-10 19:56:42 +00003117
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003118 - Many 32-bit constants have an `L' appended to their value, in
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003119 order to improve the 16-bitness of the code. Someone is actually
3120 trying to use FT2 on an Atari ST machine!
David Turner995ff202001-06-22 08:45:31 +00003121
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003122 - Updated the `builds/detect.mk' file in order to automatically
3123 build FT2 on AIX systems. AIX uses `/usr/sbin/init' instead of
3124 `/sbin/init' and wasn't previously detected as a Unix platform by
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003125 the FreeType build system.
Werner Lemberg80b8d772001-10-10 19:56:42 +00003126
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003127 - Updated the Unix-specific portions of the build system (new
3128 libtool version, etc.).
David Turner995ff202001-06-22 08:45:31 +00003129
Werner Lembergb4142d52007-01-17 12:45:26 +00003130 - The SFNT kerning loader now ensures that the table is sorted
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003131 (since some problem fonts do not meet this requirement).
David Turnerc40f3862001-06-27 12:42:10 +00003132
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003133
3134=======================================================================
Werner Lemberg0bf6e062001-06-22 17:17:47 +00003135
Werner Lemberg94168f02006-05-11 07:07:09 +00003136CHANGES BETWEEN 2.0.3 and 2.0.2
David Turner4312f422001-05-24 15:00:19 +00003137
Werner Lemberg0bf6e062001-06-22 17:17:47 +00003138 I. CHANGES TO THE MODULES / FONT DRIVERS
Werner Lemberg80b8d772001-10-10 19:56:42 +00003139
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003140 - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix
3141 several annoying artefacts, mainly:
Werner Lemberg80b8d772001-10-10 19:56:42 +00003142
Werner Lembergb4142d52007-01-17 12:45:26 +00003143 - Blue zone alignment of horizontal stems wasn't performed
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003144 correctly, resulting in artefacts like the `d' being placed
3145 one pixel below the `b' in some fonts like Time New Roman.
Werner Lemberg80b8d772001-10-10 19:56:42 +00003146
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003147 - Overshoot thresholding wasn't performed correctly, creating
Werner Lemberg0bf6e062001-06-22 17:17:47 +00003148 unpleasant artefacts at large character pixel sizes.
Werner Lemberg80b8d772001-10-10 19:56:42 +00003149
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003150 - Composite glyph loading has been simplified. This gets rid
3151 of various artefacts where the components of a composite
3152 glyphs were not correctly spaced.
Werner Lemberg80b8d772001-10-10 19:56:42 +00003153
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003154 These are the last changes to the current auto-hinting module.
3155 A new hinting sub-system is currently in the work in order to
3156 support native hints in Type 1 / CFF / OpenType fonts, as well
3157 as globally improve rendering.
David Turner4312f422001-05-24 15:00:19 +00003158
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003159 - The PCF driver has been fixed. It reported invalid glyph
3160 dimensions for the fonts available on Solaris.
Werner Lemberg80b8d772001-10-10 19:56:42 +00003161
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003162 - The Type 1, CID and CFF drivers have been modified to fix the
Werner Lemberg0bf6e062001-06-22 17:17:47 +00003163 computation of the EM size.
David Turner4312f422001-05-24 15:00:19 +00003164
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003165 - The Type 1 driver has been fixed to avoid a dangerous bug that
3166 crashed the library with non-conforming fonts (i.e. ones that do
3167 not place the .notdef glyph at position 0).
David Turner4312f422001-05-24 15:00:19 +00003168
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003169 - The TrueType driver had a rather subtle bug (dangling pointer
3170 when loading composite glyphs) that could crash the library in
3171 rare occasions!
David Turner4312f422001-05-24 15:00:19 +00003172
3173
Werner Lemberg0bf6e062001-06-22 17:17:47 +00003174 II. HIGH-LEVEL API CHANGES
Werner Lemberg80b8d772001-10-10 19:56:42 +00003175
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003176 - The error code enumeration values have been changed. An error
3177 value is decomposed in a generic error code, and a module
3178 number. see <freetype/fterrors.h> for details.
David Turner4312f422001-05-24 15:00:19 +00003179
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003180 - A new public header file has been introduced, named
Alexei Podtelezhnikovb4ac30b2013-01-02 22:21:37 -05003181 FT_TRIGONOMETRY_H (include/freetype/fttrigon.h), providing
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003182 trigonometric functions to compute sines, cosines, arctangents,
3183 etc. with 16.16 fixed precision. The implementation is based on
3184 the CORDIC algorithm and is very fast while being sufficiently
3185 accurate.
David Turner4312f422001-05-24 15:00:19 +00003186
3187
Werner Lemberg0bf6e062001-06-22 17:17:47 +00003188 III. INTERNALS
Werner Lemberg80b8d772001-10-10 19:56:42 +00003189
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003190 - Added BeOS-specific files in the old build sub-system. Note
3191 that no changes were required to compile the library with Jam.
David Turner4312f422001-05-24 15:00:19 +00003192
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003193 - The configuration is now capable of automatically detecting
3194 64-bit integers on a set of predefined compilers (GCC, Visual
3195 C++, Borland C++) and will use them by default. This provides a
3196 small performance boost.
David Turner4312f422001-05-24 15:00:19 +00003197
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003198 - A small memory leak that happened when opening 0-sized files
3199 (duh!) have been fixed.
Werner Lemberg80b8d772001-10-10 19:56:42 +00003200
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003201 - Fixed bezier stack depth bug in the routines provided by the
3202 FT_BBOX_H header file. Also fixed similar bugs in the
3203 rasterizers.
David Turner4312f422001-05-24 15:00:19 +00003204
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003205 - The outline bounding box code has been rewritten to use direct
3206 computations, instead of bezier sub-division, to compute the
3207 exact bounding box of glyphs. This is slightly slower but more
3208 accurate.
David Turner4312f422001-05-24 15:00:19 +00003209
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003210 - The build system has been improved and fixed, mainly to support
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003211 `make' on Windows 2000 correctly, avoid problems with `make
3212 distclean' on non Unix systems, etc.
Werner Lemberg80b8d772001-10-10 19:56:42 +00003213
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003214 - Hexadecimal constants have been suffixed with `U' to avoid
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003215 problems with certain compilers on 64-bit platforms.
David Turner4312f422001-05-24 15:00:19 +00003216
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003217 - A new directory named `src/tools' has been created. It contains
David Turner4312f422001-05-24 15:00:19 +00003218 Python scripts and simple unit test programs used to develop the
3219 library.
Werner Lemberg80b8d772001-10-10 19:56:42 +00003220
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003221 - The DocMaker tool has been moved from `docs' to `src/tools' and
David Turner4312f422001-05-24 15:00:19 +00003222 has been updated with the following:
Werner Lemberg80b8d772001-10-10 19:56:42 +00003223
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003224 - Now accepts the `--title=XXXX' or `-t XXXX' option from the
Werner Lemberg0bf6e062001-06-22 17:17:47 +00003225 command line to set the project's name in the generated API
3226 reference.
Werner Lemberg80b8d772001-10-10 19:56:42 +00003227
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003228 - Now accepts the `--output=DIR' or `-o DIR' option from the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003229 command line to set the output directory for all generated
3230 HTML files.
Werner Lemberg80b8d772001-10-10 19:56:42 +00003231
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003232 - Now accepts the `--prefix=XXXX' or `-p XXX' option from the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003233 command line to set the file prefix to use for all
3234 generated HTML files.
David Turner4312f422001-05-24 15:00:19 +00003235
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003236 - Now generates the current time/data on each generated page
David Turner4312f422001-05-24 15:00:19 +00003237 in order to distinguish between versions.
3238
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003239 DocMaker can be used with other projects now, not only FT2
3240 (e.g. MLib, FTLayout, etc.).
Werner Lemberg80b8d772001-10-10 19:56:42 +00003241
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003242
3243======================================================================
Werner Lemberg0bf6e062001-06-22 17:17:47 +00003244
Werner Lemberg94168f02006-05-11 07:07:09 +00003245CHANGES BETWEEN 2.0.2 and 2.0.1
David Turnerd3c8e062000-12-04 22:53:55 +00003246
Werner Lemberg0bf6e062001-06-22 17:17:47 +00003247 I. CHANGES TO THE MODULES / FONT DRIVERS
David Turnera0f89552001-03-23 12:28:59 +00003248
3249 - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
Werner Lembergab6d1072001-04-02 21:30:06 +00003250 avoid legal problems with the Apple patents. It seems that we
3251 mistakenly turned this option on in previous releases of the
3252 build.
David Turnera0f89552001-03-23 12:28:59 +00003253
Werner Lembergab6d1072001-04-02 21:30:06 +00003254 Note that if you want to use the bytecode interpreter in order
3255 to get high-quality TrueType rendering, you will need to toggle
3256 by hand the definition of the
3257 TT_CONFIG_OPTION_BYTECODE_INTERPRETER macro in the file
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003258 `include/freetype/config/ftoption.h'.
Werner Lembergab6d1072001-04-02 21:30:06 +00003259
3260 - The CFF driver has been improved by Tom Kacvinsky and Sander van
3261 der Wal:
3262
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003263 * Support for `seac' emulation.
3264 * Support for `dotsection'.
Werner Lembergab6d1072001-04-02 21:30:06 +00003265 * Support for retrieving glyph names through
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003266 `FT_Get_Glyph_Name'.
David Turnera0f89552001-03-23 12:28:59 +00003267
3268 The first two items are necessary to correctly a large number of
Werner Lembergab6d1072001-04-02 21:30:06 +00003269 Type 1 fonts converted to the CFF formats by Adobe Acrobat.
David Turnera0f89552001-03-23 12:28:59 +00003270
Werner Lembergab6d1072001-04-02 21:30:06 +00003271 - The Type 1 driver was also improved by Tom & others:
David Turnera0f89552001-03-23 12:28:59 +00003272
Werner Lembergab6d1072001-04-02 21:30:06 +00003273 * Better EM size computation.
3274 * Better support for synthetic (transformed) fonts.
3275 * The Type 1 driver returns the charstrings corresponding to
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003276 each glyph in the `glyph->control_data' field after a call to
3277 `FT_Load_Glyph' (thanks Ha Shao).
David Turnera0f89552001-03-23 12:28:59 +00003278
Werner Lembergab6d1072001-04-02 21:30:06 +00003279 - Various other bugfixes, including the following:
David Turnera0f89552001-03-23 12:28:59 +00003280
Werner Lembergab6d1072001-04-02 21:30:06 +00003281 * Fixed a nasty memory leak in the Type 1 driver.
3282 * The autohinter and the pcf driver used static writable data
3283 when they shouldn't.
3284 * Many casts were added to make the code more 64-bits safe. It
3285 also now compiles on Windows XP 64-bits without warnings.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003286 * Some incorrect writable statics were removed in the `autohint'
3287 and `pcf' drivers. FreeType 2 now compiles on Epoc again.
David Turnera0f89552001-03-23 12:28:59 +00003288
3289
3290 II. CHANGES TO THE HIGH-LEVEL API
David Turnera0f89552001-03-23 12:28:59 +00003291
Werner Lembergab6d1072001-04-02 21:30:06 +00003292 - The library header files inclusion scheme has been changed. The
3293 old scheme looked like:
3294
3295 #include <freetype/freetype.h>
3296 #include <freetype/ftglyph.h>
3297 #include <freetype/ftcache.h>
3298 #include <freetype/cache/ftimage.h>
3299
3300 Now you should use:
3301
3302 #include <ft2build.h>
3303 #include FT_FREETYPE_H
3304 #include FT_GLYPH_H
3305 #include FT_CACHE_H
3306 #include FT_CACHE_IMAGE_H
3307
3308 NOTE THAT THE OLD INCLUSION SCHEME WILL STILL WORK WITH THIS
3309 RELEASE. HOWEVER, WE DO NOT GUARANTEE THAT THIS WILL STILL BE
3310 TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1).
3311
3312 The file <ft2build.h> is used to define the header filename
3313 macros. The complete and commented list of macros is available
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003314 in the API reference under the section name `Header File Macros'
Werner Lembergab6d1072001-04-02 21:30:06 +00003315 in Chapter I.
David Turnera0f89552001-03-23 12:28:59 +00003316
David Turnerf876b242001-03-23 18:09:09 +00003317 For more information, see section I of the following document:
David Turnerf876b242001-03-23 18:09:09 +00003318
Werner Lembergab6d1072001-04-02 21:30:06 +00003319 http://www.freetype.org/
3320 freetype2/docs/tutorial/step1.html
David Turnerf876b242001-03-23 18:09:09 +00003321
Werner Lembergab6d1072001-04-02 21:30:06 +00003322 or
David Turnera0f89552001-03-23 12:28:59 +00003323
Werner Lembergab6d1072001-04-02 21:30:06 +00003324 http://freetype.sourceforge.net/
3325 freetype2/docs/tutorial/step1.html
3326
3327 - Many, many comments have been added to the public source file in
3328 order to automatically generate the API Reference through the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003329 `docmaker.py' Python script.
Werner Lembergab6d1072001-04-02 21:30:06 +00003330
3331 The latter has been updated to support the grouping of sections
3332 in chapters and better index sort. See:
3333
3334 http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
David Turnera0f89552001-03-23 12:28:59 +00003335
3336
3337 III. CHANGES TO THE BUILD PROCESS
David Turnerb8f56fa2001-03-20 15:04:30 +00003338
Werner Lembergab6d1072001-04-02 21:30:06 +00003339 - If you are not building FreeType 2 with its own build system
3340 (but with your own Makefiles or project files), you will need to
3341 be aware that the build process has changed a little bit.
David Turnera0f89552001-03-23 12:28:59 +00003342
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003343 You don't need to put the `src' directory in the include path
Werner Lembergab6d1072001-04-02 21:30:06 +00003344 when compiling any FT2 component. Instead, simply put the
3345 component's directory in the current include path.
3346
3347 So, if you were doing something like:
3348
3349 cc -c -Iinclude -Isrc src/base/ftbase.c
3350
3351 change the line to:
3352
3353 cc -c -Iinclude -Isrc/base src/base/ftbase.c
3354
3355 If you were doing something like:
3356
3357 cd src/base
3358 cc -c -I../../include -I.. ftbase.c
3359
3360 change it to:
3361
3362 cd src/base
3363 cc -c -I../../include ftbase.c
3364
3365
3366======================================================================
3367
Werner Lemberg94168f02006-05-11 07:07:09 +00003368CHANGES BETWEEN 2.0.1 and 2.0
Werner Lembergab6d1072001-04-02 21:30:06 +00003369
David Turneraaac8132000-12-01 18:55:22 +00003370 2.0.1 introduces a few changes:
3371
Werner Lembergab6d1072001-04-02 21:30:06 +00003372 - Fixed many bugs related to the support of CFF / OpenType fonts.
3373 These formats are now much better supported though there is
3374 still work planned to deal with charset tables and PDF-embedded
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003375 CFF files that use the old `seac' command.
Werner Lembergab6d1072001-04-02 21:30:06 +00003376
3377 - The library could not be compiled in debug mode with a very
3378 small number of C compilers whose pre-processors didn't
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003379 implement the `##' directive correctly (i.e. per se the ANSI C
Werner Lembergab6d1072001-04-02 21:30:06 +00003380 specification!) An elegant fix was found.
3381
3382 - Added support for the free Borland command-line C++ Builder
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003383 compiler. Use `make setup bcc32'. Also fixed a few source
Werner Lembergab6d1072001-04-02 21:30:06 +00003384 lines that generated new warnings with BCC32.
3385
3386 - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
Werner Lemberg2e82c932000-12-01 21:56:47 +00003387 a conic Bezier arc.
David Turneraaac8132000-12-01 18:55:22 +00003388
Werner Lembergab6d1072001-04-02 21:30:06 +00003389 - Updated the INSTALL file to add IDE compilation.
David Turneraaac8132000-12-01 18:55:22 +00003390
Werner Lembergab6d1072001-04-02 21:30:06 +00003391 - Other minor bug fixes, from invalid Type 1 style flags to
3392 correct support of synthetic (obliqued) fonts in the
3393 auto-hinter, better support for embedded bitmaps in a SFNT font.
David Turneraaac8132000-12-01 18:55:22 +00003394
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003395 - Fixed some problems with `freetype-config'.
David Turneraaac8132000-12-01 18:55:22 +00003396
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003397 Finally, the `standard' scheme for including FreeType headers is now
Werner Lembergab6d1072001-04-02 21:30:06 +00003398 gradually changing, but this will be explained in a later release
3399 (probably 2.0.2).
David Turneraaac8132000-12-01 18:55:22 +00003400
Werner Lembergab6d1072001-04-02 21:30:06 +00003401 And very special thanks to Tom Kacvinsky and YAMANO-UCHI Hidetoshi
3402 for their contributions!
David Turneraaac8132000-12-01 18:55:22 +00003403
Werner Lembergab6d1072001-04-02 21:30:06 +00003404
3405======================================================================
3406
David Turneraaac8132000-12-01 18:55:22 +00003407CHANGES BETWEEN beta8 and 2.0
David Turnerf9b8dec2000-06-16 19:34:52 +00003408
Werner Lembergab6d1072001-04-02 21:30:06 +00003409 - Changed the default installation path for public headers from
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003410 `include/freetype' to `include/freetype2'.
David Turner27c88272000-11-09 19:10:22 +00003411
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003412 Also added a new `freetype-config' that is automatically generated
Werner Lembergab6d1072001-04-02 21:30:06 +00003413 and installed on Unix and Cygwin systems. The script itself is
3414 used to retrieve the current install path, C compilation flags as
3415 well as linker flags.
David Turner27c88272000-11-09 19:10:22 +00003416
Werner Lembergab6d1072001-04-02 21:30:06 +00003417 - Fixed several small bugs:
David Turner27c88272000-11-09 19:10:22 +00003418
Werner Lembergab6d1072001-04-02 21:30:06 +00003419 * Incorrect max advance width for fixed-pitch Type 1 fonts.
3420 * Incorrect glyph names for certain TrueType fonts.
3421 * The glyph advance was not copied when FT_Glyph_To_Bitmap was
3422 called.
Werner Lembergb4142d52007-01-17 12:45:26 +00003423 * The linearHoriAdvance and linearVertAdvance fields were not
Werner Lembergab6d1072001-04-02 21:30:06 +00003424 correctly returned for glyphs processed by the auto-hinter.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003425 * `type1z' renamed back to `type1'; the old `type1' module has
Werner Lembergab6d1072001-04-02 21:30:06 +00003426 been removed.
David Turner27c88272000-11-09 19:10:22 +00003427
Werner Lembergab6d1072001-04-02 21:30:06 +00003428 - Revamped the build system to make it a lot more generic. This
3429 will allow us to re-use nearly un-modified in lots of other
3430 projects (including FreeType Layout).
David Turner27c88272000-11-09 19:10:22 +00003431
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003432 - Changed `cid' to use `psaux' too.
David Turner27c88272000-11-09 19:10:22 +00003433
Werner Lembergab6d1072001-04-02 21:30:06 +00003434 - Added the cache sub-system. See <freetype/ftcache.h> as well as
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003435 the sources in `src/cache'. Note that it compiles but is still
Werner Lembergab6d1072001-04-02 21:30:06 +00003436 untested for now.
David Turner27c88272000-11-09 19:10:22 +00003437
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003438 - Updated `docs/docmaker.py', a draft API reference is available at
Werner Lembergab6d1072001-04-02 21:30:06 +00003439 http://www.freetype.org/ft2api.html.
Werner Lembergb5084e12000-10-28 17:10:06 +00003440
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003441 - Changed `type1' to use `psaux'.
David Turner046f7a02000-09-15 22:42:06 +00003442
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003443 - Created a new module named `psaux' to hold the Type 1 & Type 2
3444 parsing routines. It should be used by `type1', `cid', and `cff'
Werner Lembergab6d1072001-04-02 21:30:06 +00003445 in the future.
David Turner34f1c2f2000-08-23 22:47:44 +00003446
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003447 - Fixed an important bug in `FT_Glyph_Get_CBox'.
David Turner3b2c50e2000-08-23 21:11:13 +00003448
Werner Lembergab6d1072001-04-02 21:30:06 +00003449 - Fixed some compiler warnings that happened since the TrueType
3450 bytecode decoder was deactivated by default.
David Turnera39acf52000-08-23 02:47:57 +00003451
Werner Lembergab6d1072001-04-02 21:30:06 +00003452 - Fixed two memory leaks:
David Turnera39acf52000-08-23 02:47:57 +00003453
Werner Lembergab6d1072001-04-02 21:30:06 +00003454 * The memory manager (16 bytes) isn't released in
3455 FT_Done_FreeType!
3456 * Using custom input streams, the copy of the original stream was
3457 never released.
David Turnera39acf52000-08-23 02:47:57 +00003458
Werner Lembergab6d1072001-04-02 21:30:06 +00003459 - Fixed the auto-hinter by performing automatic computation of the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003460 `filling direction' of each glyph. This is done through a simple
Werner Lembergab6d1072001-04-02 21:30:06 +00003461 and fast approximation, and seems to work (problems spotted by
3462 Werner though). The Arphic fonts are a lot nicer though there are
3463 still a lot of things to do to handle Asian fonts correctly.
David Turnera39acf52000-08-23 02:47:57 +00003464
David Turnerb1693412000-07-27 21:48:48 +00003465
Werner Lembergab6d1072001-04-02 21:30:06 +00003466======================================================================
Werner Lemberge4b32a52000-10-31 20:42:18 +00003467
David Turnerc5cdf8b2000-07-27 21:40:22 +00003468BETA-8 (RELEASE CANDIDATE) CHANGES
3469
Werner Lembergab6d1072001-04-02 21:30:06 +00003470 - Deactivated the TrueType bytecode interpreter by default.
Werner Lemberge4b32a52000-10-31 20:42:18 +00003471
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003472 - Deactivated the `src/type1' font driver. Now `src/type1z' is used
Werner Lembergab6d1072001-04-02 21:30:06 +00003473 by default.
David Turner5f5b4462000-07-26 19:13:51 +00003474
Werner Lembergab6d1072001-04-02 21:30:06 +00003475 - Updates to the build system. We now compile the library correctly
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003476 under Unix system through `configure' which is automatically
3477 called on the first `make' invocation.
Werner Lemberge4b32a52000-10-31 20:42:18 +00003478
Werner Lembergab6d1072001-04-02 21:30:06 +00003479 - Added the auto-hinting module! Fixing some bugs here and there.
David Turner5fe4c002000-07-26 19:04:08 +00003480
Werner Lembergab6d1072001-04-02 21:30:06 +00003481 - Found some bugs in the composite loader (seac) of the Type1-based
3482 font drivers.
David Turner49bd4f02000-07-12 16:57:37 +00003483
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003484 - Renamed the directory `freetype2/config' to `freetype2/builds' and
Werner Lembergab6d1072001-04-02 21:30:06 +00003485 updated all relevant files.
David Turner1ca6f2d2000-07-08 00:49:43 +00003486
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003487 - Found a memory leak in the `type1' driver.
Werner Lemberge4b32a52000-10-31 20:42:18 +00003488
Werner Lembergab6d1072001-04-02 21:30:06 +00003489 - Incorporated Tom's patches to support flex operators correctly in
3490 OpenType/CFF fonts. Now all I need is to support pure CFF and CEF
3491 fonts to be done with this driver :-)
David Turner9b3d1c72000-07-07 19:47:34 +00003492
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003493 - Added the Windows FNT/FON driver in `src/winfonts'. For now, it
3494 always `simulates' a Unicode charmap, so it shouldn't be
Werner Lembergab6d1072001-04-02 21:30:06 +00003495 considered completed right now.
Werner Lemberge4b32a52000-10-31 20:42:18 +00003496
Werner Lembergab6d1072001-04-02 21:30:06 +00003497 It is there to be more a proof of concept than anything else
3498 anyway. The driver is a single C source file, that compiles to 3
3499 Kb of code.
Werner Lemberge4b32a52000-10-31 20:42:18 +00003500
Werner Lembergab6d1072001-04-02 21:30:06 +00003501 I'm still working on the PCF/BDF drivers, but I'm too lazy to
3502 finish them now.
David Turner9b3d1c72000-07-07 19:47:34 +00003503
David Turnerc06aba22000-06-30 23:38:23 +00003504 - CHANGES TO THE HIGH-LEVEL API
Werner Lemberge4b32a52000-10-31 20:42:18 +00003505
Werner Lembergab6d1072001-04-02 21:30:06 +00003506 * FT_Get_Kerning has a new parameter that allows you to select the
3507 coordinates of the kerning vector (font units, scaled, scaled +
3508 grid-fitted).
3509 * The outline functions are now in <freetype/ftoutln.h> and not
3510 part of <freetype/freetype.h> anymore.
3511 * <freetype/ftmodule.h> now contains declarations for
3512 FT_New_Library, FT_Done_Library, FT_Add_Default_Modules.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003513 * The so-called convenience functions have moved from `ftoutln.c'
3514 to `ftglyph.c', and are thus available with this optional
Werner Lembergab6d1072001-04-02 21:30:06 +00003515 component of the library. They are declared in
3516 <freetype/ftglyph.h> now.
3517 * Anti-aliased rendering is now the default for FT_Render_Glyph
David Turnerc06aba22000-06-30 23:38:23 +00003518 (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
3519 To generate a monochrome bitmap, use ft_render_mode_mono, or the
Werner Lembergab6d1072001-04-02 21:30:06 +00003520 FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char.
David Turnerc06aba22000-06-30 23:38:23 +00003521 FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
Werner Lembergab6d1072001-04-02 21:30:06 +00003522 * <freetype/freetype.h> now include <freetype/config/ftconfig.h>,
David Turnerc06aba22000-06-30 23:38:23 +00003523 solving a few headaches :-)
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003524 * The type FT_GlyphSlotRec has now a `library' field.
David Turnerc06aba22000-06-30 23:38:23 +00003525
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003526 - CHANGES TO THE `ftglyph.h' API
Werner Lemberge4b32a52000-10-31 20:42:18 +00003527
Werner Lembergab6d1072001-04-02 21:30:06 +00003528 This API has been severely modified in order to make it simpler,
3529 clearer, and more efficient. It certainly now looks like a real
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003530 `glyph factory' object, and allows client applications to manage
Werner Lembergab6d1072001-04-02 21:30:06 +00003531 (i.e. transform, bbox and render) glyph images without ever
3532 knowing their original format.
David Turnerc06aba22000-06-30 23:38:23 +00003533
Werner Lembergab6d1072001-04-02 21:30:06 +00003534 - Added support for CID-keyed fonts to the CFF driver. Maybe
3535 support for pure CFF + CEF fonts should come in?
David Turner9d636b62000-06-27 23:32:27 +00003536
Werner Lembergab6d1072001-04-02 21:30:06 +00003537 - Cleaned up source code in order to avoid two functions with the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003538 same name. Also changed the names of the files in `type1z' from
3539 `t1XXXX' to `z1XXXX' in order to avoid any conflicts.
Werner Lemberge4b32a52000-10-31 20:42:18 +00003540
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003541 `make multi' now works well :-)
Werner Lemberge4b32a52000-10-31 20:42:18 +00003542
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003543 Also removed the use of `cidafm' for now, even if the source files
Werner Lembergab6d1072001-04-02 21:30:06 +00003544 are still there. This functionality will certainly go into a
3545 specific module.
David Turnerc06aba22000-06-30 23:38:23 +00003546
Werner Lemberge4b32a52000-10-31 20:42:18 +00003547 - ADDED SUPPORT FOR THE AUTO-HINTER
3548
Werner Lembergab6d1072001-04-02 21:30:06 +00003549 It works :-) I have a demo program which simply is a copy of
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003550 `ftview' that does a `FT_Add_Module(library,
Werner Lembergab6d1072001-04-02 21:30:06 +00003551 &autohinter_module_class)' after library initialization, and Type
3552 1 & OpenType/CFF fonts are now hinted.
Werner Lemberge4b32a52000-10-31 20:42:18 +00003553
Werner Lembergab6d1072001-04-02 21:30:06 +00003554 CID fonts are not hinted, as they include no charmap and the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003555 auto-hinter doesn't include `generic' global metrics computations
Werner Lembergab6d1072001-04-02 21:30:06 +00003556 yet.
Werner Lemberge4b32a52000-10-31 20:42:18 +00003557
Werner Lembergab6d1072001-04-02 21:30:06 +00003558 Now, I need to release this thing to the FreeType 2 source.
David Turner9d636b62000-06-27 23:32:27 +00003559
3560 - CHANGES TO THE RENDERER MODULES
Werner Lemberge4b32a52000-10-31 20:42:18 +00003561
Werner Lembergab6d1072001-04-02 21:30:06 +00003562 The monochrome and smooth renderers are now in two distinct
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003563 directories, namely `src/raster1' and `src/smooth'. Note that the
3564 old `src/renderer' is now gone.
Werner Lemberge4b32a52000-10-31 20:42:18 +00003565
Werner Lembergab6d1072001-04-02 21:30:06 +00003566 I ditched the 5-gray-levels renderers. Basically, it involved a
3567 simple #define toggle in 'src/raster1/ftraster.c'.
Werner Lemberge4b32a52000-10-31 20:42:18 +00003568
Werner Lembergab6d1072001-04-02 21:30:06 +00003569 FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now
3570 select the best renderer available, depending on render mode. If
3571 the current renderer for a given glyph image format isn't capable
3572 of supporting the render mode, another one will be found in the
3573 library's list. This means that client applications do not need
3574 to switch or set the renderers themselves (as in the latest
3575 change), they'll get what they want automatically. At last.
Werner Lemberge4b32a52000-10-31 20:42:18 +00003576
Werner Lembergab6d1072001-04-02 21:30:06 +00003577 Changed the demo programs accordingly.
David Turner9d636b62000-06-27 23:32:27 +00003578
David Turnerf0df85b2000-06-22 00:17:42 +00003579 - MAJOR INTERNAL REDESIGN:
Werner Lemberge4b32a52000-10-31 20:42:18 +00003580
Werner Lembergab6d1072001-04-02 21:30:06 +00003581 A lot of internal modifications have been performed lately on the
David Turnerf0df85b2000-06-22 00:17:42 +00003582 source in order to provide the following enhancements:
Werner Lemberge4b32a52000-10-31 20:42:18 +00003583
Werner Lembergab6d1072001-04-02 21:30:06 +00003584 * More generic module support:
Werner Lemberge4b32a52000-10-31 20:42:18 +00003585
Werner Lembergab6d1072001-04-02 21:30:06 +00003586 The FT_Module type is now defined to represent a handle to a
3587 given module. The file <freetype/ftmodule.h> contains the
3588 FT_Module_Class definition, as well as the module-loading public
3589 API.
David Turnerf0df85b2000-06-22 00:17:42 +00003590
Werner Lembergab6d1072001-04-02 21:30:06 +00003591 The FT_Driver type is still defined, and still represents a
3592 pointer to a font driver. Note that FT_Add_Driver is replaced
3593 by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc.
3594
3595 * Support for generic glyph image types:
3596
3597 The FT_Renderer type is a pointer to a module used to perform
3598 various operations on glyph image.
3599
3600 Each renderer is capable of handling images in a single format
3601 (e.g. ft_glyph_format_outline). Its functions are used to:
3602
3603 - transform an glyph image
3604 - render a glyph image into a bitmap
3605 - return the control box (dimensions) of a given glyph image
3606
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003607 The scan converters `ftraster.c' and `ftgrays.c' have been moved
3608 to the new directory `src/renderer', and are used to provide two
Werner Lembergab6d1072001-04-02 21:30:06 +00003609 default renderer modules.
3610
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003611 One corresponds to the `standard' scan-converter, the other to
3612 the `smooth' one.
Werner Lembergab6d1072001-04-02 21:30:06 +00003613
3614 he current renderer can be set through the new function
3615 FT_Set_Renderer.
3616
3617 The old raster-related function FT_Set_Raster, FT_Get_Raster and
3618 FT_Set_Raster_Mode have now disappeared, in favor of the new:
3619
3620 FT_Get_Renderer
3621 FT_Set_Renderer
3622
3623 See the file <freetype/ftrender.h> for more details.
3624
3625 These changes were necessary to properly support different
3626 scalable formats in the future, like bi-color glyphs, etc.
3627
3628 * Glyph loader object:
3629
3630 A new internal object, called a 'glyph loader' has been
3631 introduced in the base layer. It is used by all scalable format
3632 font drivers to load glyphs and composites.
3633
3634 This object has been created to reduce the code size of each
3635 driver, as each one of them basically re-implemented its
3636 functionality.
3637
3638 See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
3639 more information.
3640
3641 * FT_GlyphSlot has new fields:
3642
3643 In order to support extended features (see below), the
3644 FT_GlyphSlot structure has a few new fields:
3645
3646 linearHoriAdvance:
3647
3648 This field gives the linearly scaled (i.e. scaled but
3649 unhinted) advance width for the glyph, expressed as a 16.16
3650 fixed pixel value. This is useful to perform WYSIWYG text.
3651
3652 linearVertAdvance:
3653 This field gives the linearly scaled advance height for the
3654 glyph (relevant in vertical glyph layouts only). This is
3655 useful to perform WYSIWYG text.
3656
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003657 Note that the two above field replace the removed `metrics2'
Werner Lembergab6d1072001-04-02 21:30:06 +00003658 field in the glyph slot.
3659
3660 advance:
3661 This field is a vector that gives the transformed advance for
3662 the glyph. By default, it corresponds to the advance width,
3663 unless FT_LOAD_VERTICAL_LAYOUT was specified when calling
3664 FT_Load_Glyph or FT_Load_Char.
3665
3666 bitmap_left:
3667 This field gives the distance in integer pixels from the
3668 current pen position to the left-most pixel of a glyph image
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003669 IF IT IS A BITMAP. It is only valid when the `format' field
3670 is set to `ft_glyph_format_bitmap', for example, after calling
Werner Lembergab6d1072001-04-02 21:30:06 +00003671 the new function FT_Render_Glyph.
3672
3673 bitmap_top:
3674 This field gives the distance in integer pixels from the
3675 current pen position (located on the baseline) to the top-most
3676 pixel of the glyph image IF IT IS A BITMAP. Positive values
3677 correspond to upwards Y.
3678
3679 loader:
3680 This is a new private field for the glyph slot. Client
3681 applications should not touch it.
David Turnerf0df85b2000-06-22 00:17:42 +00003682
3683
Werner Lembergab6d1072001-04-02 21:30:06 +00003684 * Support for transforms and direct rendering in FT_Load_Glyph:
David Turnerf0df85b2000-06-22 00:17:42 +00003685
Werner Lembergab6d1072001-04-02 21:30:06 +00003686 Most of the functionality found in <freetype/ftglyph.h> has been
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003687 moved to the core library. Hence, the following:
Werner Lemberge4b32a52000-10-31 20:42:18 +00003688
Werner Lembergab6d1072001-04-02 21:30:06 +00003689 - A transform can be specified for a face through
3690 FT_Set_Transform. this transform is applied by FT_Load_Glyph
3691 to scalable glyph images (i.e. NOT TO BITMAPS) before the
3692 function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM
3693 was set in the load flags.
Werner Lemberge4b32a52000-10-31 20:42:18 +00003694
Werner Lembergab6d1072001-04-02 21:30:06 +00003695 - Once a glyph image has been loaded, it can be directly
3696 converted to a bitmap by using the new FT_Render_Glyph
3697 function. Note that this function takes the glyph image from
3698 the glyph slot, and converts it to a bitmap whose properties
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003699 are returned in `face.glyph.bitmap', `face.glyph.bitmap_left'
3700 and `face.glyph.bitmap_top'. The original native image might
Werner Lembergab6d1072001-04-02 21:30:06 +00003701 be lost after the conversion.
3702
3703 - When using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph
3704 and FT_Load_Char functions will call FT_Render_Glyph
3705 automatically when needed.
3706
3707 - Reformatted all modules source code in order to get rid of the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003708 basic data types redifinitions (i.e. `TT_Int' instead of `FT_Int',
3709 `T1_Fixed' instead of `FT_Fixed'). Hence the format-specific
3710 prefixes like `TT_', `T1_', `T2_' and `CID_' are only used for
Werner Lembergab6d1072001-04-02 21:30:06 +00003711 relevant structures.
David Turnerf0df85b2000-06-22 00:17:42 +00003712
3713
Werner Lembergab6d1072001-04-02 21:30:06 +00003714======================================================================
Werner Lemberge4b32a52000-10-31 20:42:18 +00003715
David Turnerf9b8dec2000-06-16 19:34:52 +00003716OLD CHANGES FOR BETA 7
David Turner3475e7f2000-05-17 20:56:01 +00003717
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003718 - bug-fixed the OpenType/CFF parser. It now loads and displays my
Werner Lembergab6d1072001-04-02 21:30:06 +00003719 two fonts nicely, but I'm pretty certain that more testing is
3720 needed :-)
Werner Lemberge4b32a52000-10-31 20:42:18 +00003721
David Turner2b9be992000-06-07 23:41:17 +00003722 - fixed the crummy Type 1 hinter, it now handles accented characters
Werner Lembergab6d1072001-04-02 21:30:06 +00003723 correctly (well, the accent is not always well placed, but that's
David Turner2b9be992000-06-07 23:41:17 +00003724 another problem..)
3725
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003726 - added the CID-keyed Type 1 driver in `src/cid'. Works pretty well
Werner Lembergab6d1072001-04-02 21:30:06 +00003727 for only 13 Kb of code ;-) Doesn't read AFM files though, nor the
3728 really useful CMAP files..
David Turner04aa8002000-06-01 03:27:48 +00003729
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003730 - fixed two bugs in the smooth renderer (src/base/ftgrays.c).
3731 Thanks to Boris Letocha for spotting them and providing a fix.
David Turner04aa8002000-06-01 03:27:48 +00003732
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003733 - fixed potential `divide by zero' bugs in ftcalc.c.
David Turner4f99c3c2000-05-29 20:55:13 +00003734
Werner Lembergab6d1072001-04-02 21:30:06 +00003735 - added source code for the OpenType/CFF driver (still incomplete
3736 though..)
David Turner4f99c3c2000-05-29 20:55:13 +00003737
Werner Lembergab6d1072001-04-02 21:30:06 +00003738 - modified the SFNT driver slightly to perform more robust header
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003739 checks in TT_Load_SFNT_Header. This prevents certain font files
Werner Lembergab6d1072001-04-02 21:30:06 +00003740 (e.g. some Type 1 Multiple Masters) from being incorrectly
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003741 `recognized' as TrueType font files..
David Turner4f99c3c2000-05-29 20:55:13 +00003742
Werner Lembergab6d1072001-04-02 21:30:06 +00003743 - moved a lot of stuff from the TrueType driver to the SFNT module,
3744 this allows greater code re-use between font drivers
3745 (e.g. TrueType, OpenType, Compact-TrueType, etc..)
David Turner2e421312000-05-26 22:13:17 +00003746
3747 - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
3748 to minimally speed it up..
3749
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003750 - added support for Multiple Master fonts in `type1z'. There is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003751 also a new file named <freetype/ftmm.h> which defines functions to
David Turner11187202000-05-26 17:13:23 +00003752 manage them from client applications.
Werner Lemberge4b32a52000-10-31 20:42:18 +00003753
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003754 The new file `src/base/ftmm.c' is also optional to the engine..
David Turner11187202000-05-26 17:13:23 +00003755
Werner Lembergab6d1072001-04-02 21:30:06 +00003756 - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) +
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003757 small bug fixes in FT_Load_Glyph, the `type1' driver, etc..
David Turner11187202000-05-26 17:13:23 +00003758
David Turnerf5dcdd52000-05-23 22:16:27 +00003759 - a minor fix to the Type 1 driver to let them apply the font matrix
3760 correctly (used for many oblique fonts..)
3761
David Turner51179f02000-05-18 16:18:05 +00003762 - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003763 to use %p instead of %lx). Thanks to Karl Robillard.
David Turner51179f02000-05-18 16:18:05 +00003764
Werner Lembergab6d1072001-04-02 21:30:06 +00003765 - fixed some bugs in the sbit loader (src/base/sfnt/ttsbit.c) +
3766 added a new flag, FT_LOAD_CROP_BITMAP to query that bitmaps be
3767 cropped when loaded from a file (maybe I should move the bitmap
3768 cropper to the base layer ??).
David Turner109fcf62000-05-17 23:35:37 +00003769
Werner Lembergab6d1072001-04-02 21:30:06 +00003770 - changed the default number of gray levels of the smooth renderer
3771 to 256 (instead of the previous 128). Of course, the human eye
3772 can't see any difference ;-)
David Turner3475e7f2000-05-17 20:56:01 +00003773
Werner Lembergab6d1072001-04-02 21:30:06 +00003774 - removed TT_MAX_SUBGLYPHS, there is no static limit on the number
3775 of subglyphs in a TrueType font now..
David Turner3475e7f2000-05-17 20:56:01 +00003776
Werner Lembergab6d1072001-04-02 21:30:06 +00003777
3778======================================================================
3779
David Turner3475e7f2000-05-17 20:56:01 +00003780OLD CHANGES 16 May 2000
David Turnerefce08d2000-05-11 18:23:52 +00003781
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003782 - tagged `BETA-6' in the CVS tree. This one is a serious release
Werner Lembergab6d1072001-04-02 21:30:06 +00003783 candidate even though it doesn't incorporate the auto-hinter yet..
David Turner968f0c32000-05-16 23:26:01 +00003784
3785 - various obsolete files were removed, and copyright header updated
3786
Werner Lembergab6d1072001-04-02 21:30:06 +00003787 - finally updated the standard raster to fix the monochrome
3788 rendering bug + re-enable support for 5-gray levels anti-aliasing
3789 (suck, suck..)
David Turner968f0c32000-05-16 23:26:01 +00003790
3791 - created new header files, and modified sources accordingly:
David Turnere49ab252000-05-16 23:44:38 +00003792
Werner Lembergab6d1072001-04-02 21:30:06 +00003793 <freetype/fttypes.h>
3794 - simple FreeType types, without the API
3795 <freetype/internal/ftmemory.h>
3796 - definition of memory-management macros
David Turner968f0c32000-05-16 23:26:01 +00003797
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003798 - added the `DSIG' (OpenType Digital Signature) tag to
Werner Lembergab6d1072001-04-02 21:30:06 +00003799 <freetype/tttags.h>
David Turner968f0c32000-05-16 23:26:01 +00003800
Werner Lembergab6d1072001-04-02 21:30:06 +00003801 - light update/cleaning of the build system + changes to the sources
3802 in order to get rid of _all_ compiler warnings with three
3803 compilers, i.e:
David Turnerc30aea92000-05-12 15:01:18 +00003804
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003805 gcc with `-ansi -pedantic -Wall -W', Visual C++ with `/W3 /WX' and
Werner Lembergab6d1072001-04-02 21:30:06 +00003806 LCC
David Turnerc30aea92000-05-12 15:01:18 +00003807
Werner Lembergab6d1072001-04-02 21:30:06 +00003808 IMPORTANT NOTE FOR WIN32-LCC USERS:
3809 |
3810 | It seems the C pre-processor that comes with LCC is broken, it
3811 | doesn't recognize the ANSI standard directives # and ##
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003812 | correctly when one of the argument is a macro. Also,
3813 | something like:
Werner Lembergab6d1072001-04-02 21:30:06 +00003814 |
3815 | #define F(x) print##x
3816 |
3817 | F(("hello"))
3818 |
3819 | will get incorrectly translated to:
3820 |
3821 | print "hello")
3822 |
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003823 | by its pre-processor. For this reason, you simply cannot build
Werner Lembergab6d1072001-04-02 21:30:06 +00003824 | FreeType 2 in debug mode with this compiler..
David Turnerc30aea92000-05-12 15:01:18 +00003825
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003826 - yet another massive grunt work. I've changed the definition of
3827 the EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These
3828 now take an argument, which is the function's return value type.
David Turnere49ab252000-05-16 23:44:38 +00003829
Werner Lembergab6d1072001-04-02 21:30:06 +00003830 This is necessary to compile FreeType as a DLL on Windows and
3831 OS/2. Depending on the compiler used, a compiler-specific keyword
3832 like __export or __system must be placed before (VisualC++) or
3833 after (BorlandC++) the type..
David Turnere49ab252000-05-16 23:44:38 +00003834
David Turnerbfe2f982000-05-12 12:17:15 +00003835 Of course, this needed a lot of changes throughout the source code
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003836 to make it compile again... All cleaned up now, apparently..
David Turnerbfe2f982000-05-12 12:17:15 +00003837
Werner Lembergab6d1072001-04-02 21:30:06 +00003838 Note also that there is a new EXPORT_VAR macro defined to allow
3839 the _declaration_ of an exportable public (constant)
3840 variable. This is the case of the raster interfaces (see
3841 ftraster.h and ftgrays.h), as well as each module's interface (see
3842 sfdriver.h, psdriver.h, etc..)
David Turnerbfe2f982000-05-12 12:17:15 +00003843
Werner Lembergab6d1072001-04-02 21:30:06 +00003844 - new feature: it is now possible to pass extra parameters to font
3845 drivers when creating a new face object. For now,
3846 this capability is unused. It could however prove to
3847 be useful in a near future..
David Turnerbfe2f982000-05-12 12:17:15 +00003848
Werner Lembergab6d1072001-04-02 21:30:06 +00003849 the FT_Open_Args structure was changes, as well as the internal
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003850 driver interface (the specific `init_face' module function has
Werner Lembergab6d1072001-04-02 21:30:06 +00003851 now a different signature).
David Turnerbfe2f982000-05-12 12:17:15 +00003852
3853 - updated the tutorial (not finished though).
Werner Lembergab6d1072001-04-02 21:30:06 +00003854
David Turnerc30aea92000-05-12 15:01:18 +00003855 - updated the top-level BUILD document
David Turnerbfe2f982000-05-12 12:17:15 +00003856
Werner Lembergab6d1072001-04-02 21:30:06 +00003857 - fixed a potential memory leak that could occur when loading
3858 embedded bitmaps.
David Turnerc60c61c2000-05-12 15:26:58 +00003859
Werner Lembergab6d1072001-04-02 21:30:06 +00003860 - added the declaration of FT_New_Memory_Face in
3861 <freetype/freetype.h>, as it was missing from the public header
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003862 (the implementation was already in `ftobjs.c').
David Turnerbfe2f982000-05-12 12:17:15 +00003863
Werner Lembergab6d1072001-04-02 21:30:06 +00003864 - the file <freetype/fterrors.h> has been seriously updated in order
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003865 to allow the automatic generation of error message tables. See
3866 the comments within it for more information.
David Turnerbfe2f982000-05-12 12:17:15 +00003867
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003868 - major directory hierarchy re-organisation. This was done for two
Werner Lembergab6d1072001-04-02 21:30:06 +00003869 things:
David Turnere49ab252000-05-16 23:44:38 +00003870
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003871 * first, to ease the `manual' compilation of the library by
Werner Lembergab6d1072001-04-02 21:30:06 +00003872 requiring at lot less include paths :-)
David Turnerbfe2f982000-05-12 12:17:15 +00003873
Werner Lembergab6d1072001-04-02 21:30:06 +00003874 * second, to allow external programs to effectively access
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003875 internal data fields. For example, this can be extremely
Werner Lembergab6d1072001-04-02 21:30:06 +00003876 useful if someone wants to write a font producer or a font
3877 manager on top of FreeType.
David Turnera9c251c2000-05-11 18:36:19 +00003878
Werner Lembergab6d1072001-04-02 21:30:06 +00003879 Basically, you should now use the 'freetype/' prefix for header
3880 inclusion, as in:
David Turnere49ab252000-05-16 23:44:38 +00003881
David Turnera9c251c2000-05-11 18:36:19 +00003882 #include <freetype/freetype.h>
3883 #include <freetype/ftglyph.h>
3884
3885 Some new include sub-directories are available:
David Turnere49ab252000-05-16 23:44:38 +00003886
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003887 a. the `freetype/config' directory, contains two files used to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003888 configure the build of the library. Client applications
3889 should not need to look at these normally, but they can if
3890 they want.
David Turnere49ab252000-05-16 23:44:38 +00003891
David Turnera9c251c2000-05-11 18:36:19 +00003892 #include <freetype/config/ftoption.h>
3893 #include <freetype/config/ftconfig.h>
David Turnere49ab252000-05-16 23:44:38 +00003894
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003895 b. the `freetype/internal' directory, contains header files that
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003896 describes library internals. These are the header files that
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003897 were previously found in the `src/base' and `src/shared'
Werner Lembergab6d1072001-04-02 21:30:06 +00003898 directories.
David Turnera9c251c2000-05-11 18:36:19 +00003899
3900
Werner Lembergab6d1072001-04-02 21:30:06 +00003901 As usual, the build system and the demos have been updated to
3902 reflect the change..
David Turnere49ab252000-05-16 23:44:38 +00003903
David Turnera9c251c2000-05-11 18:36:19 +00003904 Here's a layout of the new directory hierarchy:
David Turnere49ab252000-05-16 23:44:38 +00003905
Werner Lemberg89df58f2002-06-14 08:09:25 +00003906 TOP_DIR
David Turnera9c251c2000-05-11 18:36:19 +00003907 include/
3908 freetype/
3909 freetype.h
3910 ...
3911 config/
3912 ftoption.h
3913 ftconfig.h
3914 ftmodule.h
David Turnere49ab252000-05-16 23:44:38 +00003915
David Turnera9c251c2000-05-11 18:36:19 +00003916 internal/
3917 ftobjs.h
3918 ftstream.h
3919 ftcalc.h
3920 ...
David Turnere49ab252000-05-16 23:44:38 +00003921
David Turnera9c251c2000-05-11 18:36:19 +00003922 src/
3923 base/
3924 ...
David Turnere49ab252000-05-16 23:44:38 +00003925
David Turnera9c251c2000-05-11 18:36:19 +00003926 sfnt/
3927 psnames/
3928 truetype/
3929 type1/
3930 type1z/
3931
3932
Werner Lembergab6d1072001-04-02 21:30:06 +00003933 Compiling a module is now much easier, for example, the following
Werner Lemberg89df58f2002-06-14 08:09:25 +00003934 should work when in the TOP_DIR directory on an ANSI build:
David Turnere49ab252000-05-16 23:44:38 +00003935
David Turnera9c251c2000-05-11 18:36:19 +00003936 gcc -c -I./include -I./src/base src/base/ftbase.c
3937 gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
3938 etc..
3939
3940 (of course, using -Iconfig/<system> if you provide system-specific
3941 configuration files).
David Turnerefce08d2000-05-11 18:23:52 +00003942
Werner Lembergab6d1072001-04-02 21:30:06 +00003943 - updated the structure of FT_Outline_Funcs in order to allow direct
3944 coordinate scaling within the outline decomposition routine (this
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003945 is important for virtual `on' points with TrueType outlines) +
Werner Lembergab6d1072001-04-02 21:30:06 +00003946 updates to the rasters to support this..
David Turnerefce08d2000-05-11 18:23:52 +00003947
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003948 - updated the OS/2 table loading code in `src/sfnt/ttload.c' in
Werner Lembergab6d1072001-04-02 21:30:06 +00003949 order to support version 2 of the table (see OpenType 1.2 spec)
David Turnerefce08d2000-05-11 18:23:52 +00003950
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003951 - created `include/tttables.h' and `include/t1tables.h' to allow
Werner Lembergab6d1072001-04-02 21:30:06 +00003952 client applications to access some of the SFNT and T1 tables of a
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003953 face with a procedural interface (see `FT_Get_Sfnt_Table') +
Werner Lembergab6d1072001-04-02 21:30:06 +00003954 updates to internal source files to reflect the change..
David Turnerefce08d2000-05-11 18:23:52 +00003955
Werner Lembergab6d1072001-04-02 21:30:06 +00003956 - some cleanups in the source code to get rid of warnings when
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003957 compiling with the `-Wall -W -ansi -pedantic' options in gcc.
David Turnerefce08d2000-05-11 18:23:52 +00003958
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003959 - debugged and moved the smooth renderer to `src/base/ftgrays.c' and
3960 its header to `include/ftgrays.h'
David Turnerefce08d2000-05-11 18:23:52 +00003961
Werner Lembergab6d1072001-04-02 21:30:06 +00003962 - updated TT_MAX_SUBGLYPHS to 96 as some CJK fonts have composites
3963 with up to 80 sub-glyphs !! Thanks to Werner
David Turnerefce08d2000-05-11 18:23:52 +00003964
Werner Lembergab6d1072001-04-02 21:30:06 +00003965
3966======================================================================
3967
David Turnerefce08d2000-05-11 18:23:52 +00003968OLD CHANGES - 14-apr-2000
David Turner77054f22000-04-14 20:49:52 +00003969
Werner Lembergab6d1072001-04-02 21:30:06 +00003970 - fixed a bug in the TrueType glyph loader that prevented the
3971 correct loading of some CJK glyphs in mingli.ttf
David Turnere49ab252000-05-16 23:44:38 +00003972
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003973 - improved the standard Type 1 hinter in `src/type1'
David Turnere49ab252000-05-16 23:44:38 +00003974
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003975 - fixed two bugs in the experimental Type 1 driver in `src/type1z'
David Turner77054f22000-04-14 20:49:52 +00003976 to handle the new XFree86 4.0 fonts (and a few other ones..)
3977
Werner Lembergab6d1072001-04-02 21:30:06 +00003978 - the smooth renderer is now complete and supports sub-banding to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003979 render large glyphs at high speed. However, it is still located
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003980 in `demos/src/ftgrays.c' and should move to the library itself in
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003981 the next beta. NOTE: The smooth renderer doesn't compile in
David Turner77054f22000-04-14 20:49:52 +00003982 stand-alone mode anymore, but this should be fixed RSN..
David Turnere49ab252000-05-16 23:44:38 +00003983
Werner Lembergab6d1072001-04-02 21:30:06 +00003984 - introduced convenience functions to more easily deal with glyph
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003985 images, see `include/ftglyph.h' for more details, as well as the
3986 new demo program named `demos/src/ftstring.c' that demonstrates
David Turner77054f22000-04-14 20:49:52 +00003987 its use
3988
Werner Lembergab6d1072001-04-02 21:30:06 +00003989 - implemented FT_LOAD_NO_RECURSE in both the TrueType and Type 1
3990 drivers (this is required by the auto-hinter to improve its
3991 results).
David Turner77054f22000-04-14 20:49:52 +00003992
Werner Lembergab6d1072001-04-02 21:30:06 +00003993 - changed the raster interface, in order to allow client
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003994 applications to provide their own span-drawing callbacks.
3995 However, only the smooth renderer supports this. See
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003996 `FT_Raster_Params' in the file `include/ftimage.h'.
David Turner77054f22000-04-14 20:49:52 +00003997
Werner Lembergab6d1072001-04-02 21:30:06 +00003998 - fixed a small bug in FT_MulFix that caused incorrect transform
3999 computation!
David Turner77054f22000-04-14 20:49:52 +00004000
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004001 - Note: The tutorial is out-of-date.
David Turner77054f22000-04-14 20:49:52 +00004002
Werner Lembergab6d1072001-04-02 21:30:06 +00004003
4004======================================================================
4005
David Turner77054f22000-04-14 20:49:52 +00004006OLD CHANGES - 12-mar-2000
David Turnerc3c7e7f2000-03-13 14:19:31 +00004007
Werner Lembergab6d1072001-04-02 21:30:06 +00004008 - changed the layout of configuration files : now, all ANSI
4009 configuration files are located in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004010 `freetype2/config'. System-specific over-rides can be placed in
4011 `freetype2/config/<system>'.
David Turnere49ab252000-05-16 23:44:38 +00004012
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004013 - moved all configuration macros to `config/ftoption.h'
David Turnere49ab252000-05-16 23:44:38 +00004014
David Turnerc3c7e7f2000-03-13 14:19:31 +00004015 - improvements in the Type 1 driver with AFM support
David Turnere49ab252000-05-16 23:44:38 +00004016
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004017 - changed the fields in the FT_Outline structure : the old `flags'
4018 array is re-named `tags', while all ancient flags are encoded into
4019 a single unsigned int named `flags'.
David Turnerc3c7e7f2000-03-13 14:19:31 +00004020
Werner Lembergab6d1072001-04-02 21:30:06 +00004021 - introduced new flags in FT_Outline.flags (see
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004022 ft_outline_.... enums in `ftimage.h').
David Turnerc3c7e7f2000-03-13 14:19:31 +00004023
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004024 - changed outline functions to `FT_Outline_<action>' syntax
David Turnerc3c7e7f2000-03-13 14:19:31 +00004025
4026 - added a smooth anti-alias renderer to the demonstration programs
Werner Lembergab6d1072001-04-02 21:30:06 +00004027
David Turnerc3c7e7f2000-03-13 14:19:31 +00004028 - added Mac graphics driver (thanks Just)
David Turnere49ab252000-05-16 23:44:38 +00004029
Werner Lembergab6d1072001-04-02 21:30:06 +00004030 - FT_Open_Face changed in order to received a pointer to a
4031 FT_Open_Args descriptor..
David Turnere49ab252000-05-16 23:44:38 +00004032
Werner Lembergab6d1072001-04-02 21:30:06 +00004033 - various cleanups, a few more API functions implemented (see
4034 FT_Attach_File)
David Turnerc3c7e7f2000-03-13 14:19:31 +00004035
4036 - updated some docs
4037
Werner Lembergab6d1072001-04-02 21:30:06 +00004038
4039======================================================================
4040
David Turnerc3c7e7f2000-03-13 14:19:31 +00004041OLD CHANGES - 22-feb-2000
David Turner58c10b52000-02-22 14:31:42 +00004042
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004043 - introduced the `psnames' module. It is used to:
David Turner58c10b52000-02-22 14:31:42 +00004044
Werner Lembergab6d1072001-04-02 21:30:06 +00004045 o convert a Postscript glyph name into the equivalent Unicode
Werner Lembergb4142d52007-01-17 12:45:26 +00004046 character code (used by the Type 1 driver(s) to synthesize on
Werner Lembergab6d1072001-04-02 21:30:06 +00004047 the fly a Unicode charmap).
David Turner58c10b52000-02-22 14:31:42 +00004048
Werner Lembergab6d1072001-04-02 21:30:06 +00004049 o provide an interface to retrieve the Postscript names of the
4050 Macintosh, Adobe Standard & Adobe Expert character codes.
4051 (the Macintosh names are used by the SFNT-module postscript
4052 names support routines, while the other two tables are used by
4053 the Type 1 driver(s)).
David Turner58c10b52000-02-22 14:31:42 +00004054
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004055 - introduced the `type1z' alternate Type 1 driver. This is a (still
Werner Lembergab6d1072001-04-02 21:30:06 +00004056 experimental) driver for the Type 1 format that will ultimately
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004057 replace the one in `src/type1'. It uses pattern matching to load
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004058 data from the font, instead of a finite state analyzer. It works
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004059 much better than the `old' driver with `broken' fonts. It is also
David Turner58c10b52000-02-22 14:31:42 +00004060 much smaller (under 15 Kb).
4061
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004062 - the Type 1 drivers (both in `src/type1' and `src/type1z') are
Werner Lembergab6d1072001-04-02 21:30:06 +00004063 nearly complete. They both provide automatic Unicode charmap
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004064 synthesis through the `psnames' module. No re-encoding vector is
Werner Lembergab6d1072001-04-02 21:30:06 +00004065 needed. (note that they still leak memory due to some code
David Turner58c10b52000-02-22 14:31:42 +00004066 missing, and I'm getting lazy).
4067
Werner Lembergab6d1072001-04-02 21:30:06 +00004068 Trivial AFM support has been added to read kerning information but
4069 wasn't exactly tested as it should ;-)
David Turner58c10b52000-02-22 14:31:42 +00004070
Werner Lembergab6d1072001-04-02 21:30:06 +00004071 - The TrueType glyph loader has been seriously rewritten (see the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004072 file `src/truetype/ttgload.c'. It is now much, much simpler as
Werner Lembergab6d1072001-04-02 21:30:06 +00004073 well as easier to read, maintain and understand :-) Preliminary
4074 versions introduced a memory leak that has been reported by Jack
David Turner58c10b52000-02-22 14:31:42 +00004075 Davis, and is now fixed..
4076
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004077 - introduced the new `ft_glyph_format_plotter', used to represent
4078 stroked outlines like Windows `Vector' fonts, and certain Type 1
4079 fonts like `Hershey'. The corresponding raster will be written
David Turner58c10b52000-02-22 14:31:42 +00004080 soon.
4081
Werner Lembergab6d1072001-04-02 21:30:06 +00004082 - FT_New_Memory_Face is gone. Likewise, FT_Open_Face has a new
4083 interface that uses a structure to describe the input stream, the
4084 driver (if required), etc..
4085
David Turner58c10b52000-02-22 14:31:42 +00004086
4087TODO
Werner Lembergab6d1072001-04-02 21:30:06 +00004088
David Turner58c10b52000-02-22 14:31:42 +00004089 - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
4090
Werner Lembergb4142d52007-01-17 12:45:26 +00004091 - Add a function like FT_Load_Character(face, char_code, load_flags)
4092 that would really embed a call to FT_Get_Char_Index then
Werner Lembergab6d1072001-04-02 21:30:06 +00004093 FT_Load_Glyph to ease developer's work.
David Turner58c10b52000-02-22 14:31:42 +00004094
Werner Lembergab6d1072001-04-02 21:30:06 +00004095 - Update the tutorial!
4096
4097 - consider adding support for Multiple Master fonts in the Type 1
David Turner58c10b52000-02-22 14:31:42 +00004098 drivers.
4099
Werner Lembergab6d1072001-04-02 21:30:06 +00004100 - Test the AFM routines of the Type 1 drivers to check that kerning
David Turner58c10b52000-02-22 14:31:42 +00004101 information is returned correctly.
4102
Werner Lembergab6d1072001-04-02 21:30:06 +00004103 - write a decent auto-gridding component !! We need this to release
David Turner58c10b52000-02-22 14:31:42 +00004104 FreeType 2.0 gold !
4105
4106
Werner Lembergab6d1072001-04-02 21:30:06 +00004107less urgent needs:
4108
David Turner58c10b52000-02-22 14:31:42 +00004109 - add a CFF/Type2 driver
4110 - add a BDF driver
4111 - add a FNT/PCF/HBF driver
4112 - add a Speedo driver from the X11 sources
4113
4114
Werner Lembergab6d1072001-04-02 21:30:06 +00004115======================================================================
4116
David Turner58c10b52000-02-22 14:31:42 +00004117OLDER CHANGES - 27-jan-2000
David Turner633da992000-01-27 14:07:33 +00004118
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004119 - updated the `sfnt' module interface to allow several SFNT-based
David Turner633da992000-01-27 14:07:33 +00004120 drivers to co-exist peacefully
David Turnere49ab252000-05-16 23:44:38 +00004121
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004122 - updated the `T1_Face' type to better separate Postscript font
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004123 content from the rest of the FT_Face structure. Might be used
Werner Lembergab6d1072001-04-02 21:30:06 +00004124 later by the CFF/Type2 driver..
David Turnere49ab252000-05-16 23:44:38 +00004125
David Turner633da992000-01-27 14:07:33 +00004126 - added an experimental replacement Type 1 driver featuring advanced
4127 (and speedy) pattern matching to retrieve the data from postscript
4128 fonts.
4129
Werner Lembergab6d1072001-04-02 21:30:06 +00004130 - very minor changes in the implementation of FT_Set_Char_Size and
Werner Lembergb4142d52007-01-17 12:45:26 +00004131 FT_Set_Pixel_Sizes (they now implement default to lighten the font
Werner Lembergab6d1072001-04-02 21:30:06 +00004132 driver's code).
David Turner633da992000-01-27 14:07:33 +00004133
4134
Werner Lembergab6d1072001-04-02 21:30:06 +00004135======================================================================
4136
David Turner633da992000-01-27 14:07:33 +00004137OLD MESSAGE
4138
Werner Lembergb4142d52007-01-17 12:45:26 +00004139This file summarizes the changes that occurred since the last `beta'
4140of FreeType 2. Because the list is important, it has been divided into
Werner Lembergab6d1072001-04-02 21:30:06 +00004141separate sections:
David Turnerd2b1f351999-12-16 23:11:37 +00004142
David Turner5951ce91999-12-29 00:53:44 +00004143Table Of Contents:
4144
4145 I High-Level Interface (easier !)
4146 II Directory Structure
4147 III Glyph Image Formats
4148 IV Build System
4149 V Portability
4150 VI Font Drivers
David Turnerd2b1f351999-12-16 23:11:37 +00004151
David Turnerd2b1f351999-12-16 23:11:37 +00004152
Werner Lembergab6d1072001-04-02 21:30:06 +00004153----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00004154
Werner Lembergab6d1072001-04-02 21:30:06 +00004155High-Level Interface:
David Turnere49ab252000-05-16 23:44:38 +00004156
Werner Lembergab6d1072001-04-02 21:30:06 +00004157 The high-level API has been considerably simplified. Here is how:
David Turnere49ab252000-05-16 23:44:38 +00004158
Werner Lembergab6d1072001-04-02 21:30:06 +00004159 - resource objects have disappeared. this means that face objects
4160 can now be created with a single function call (see FT_New_Face
4161 and FT_Open_Face)
David Turnere49ab252000-05-16 23:44:38 +00004162
Werner Lembergab6d1072001-04-02 21:30:06 +00004163 - when calling either FT_New_Face & FT_Open_Face, a size object
4164 and a glyph slot object are automatically created for the face,
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004165 and can be accessed through `face->glyph' and `face->size' if
Werner Lembergab6d1072001-04-02 21:30:06 +00004166 one really needs to. In most cases, there's no need to call
4167 FT_New_Size or FT_New_Glyph.
4168
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004169 - similarly, FT_Load_Glyph now only takes a `face' argument
Werner Lemberg4b2e83d2007-02-01 07:58:02 +00004170 (instead of a glyph slot and a size). Also, its `result'
Werner Lembergab6d1072001-04-02 21:30:06 +00004171 parameter is gone, as the glyph image type is returned in the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004172 field `face->glyph.format'
Werner Lembergab6d1072001-04-02 21:30:06 +00004173
4174 - the list of available charmaps is directly accessible through
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004175 `face->charmaps', counting `face->num_charmaps' elements. Each
Werner Lembergab6d1072001-04-02 21:30:06 +00004176 charmap has an 'encoding' field which specifies which known
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004177 encoding it deals with. Valid values are, for example:
David Turnere49ab252000-05-16 23:44:38 +00004178
David Turnerd2b1f351999-12-16 23:11:37 +00004179 ft_encoding_unicode (for ASCII, Latin-1 and Unicode)
4180 ft_encoding_apple_roman
4181 ft_encoding_sjis
4182 ft_encoding_adobe_standard
David Turner5951ce91999-12-29 00:53:44 +00004183 ft_encoding_adobe_expert
David Turnere49ab252000-05-16 23:44:38 +00004184
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004185 other values may be added in the future. Each charmap still
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004186 holds its `platform_id' and `encoding_id' values in case the
Werner Lembergab6d1072001-04-02 21:30:06 +00004187 encoding is too exotic for the current library
David Turnerd2b1f351999-12-16 23:11:37 +00004188
4189
Werner Lembergab6d1072001-04-02 21:30:06 +00004190----------------------------------------------------------------------
4191
David Turnerd2b1f351999-12-16 23:11:37 +00004192Directory Structure:
4193
4194 Should seem obvious to most of you:
4195
4196 freetype/
4197 config/ -- configuration sub-makefiles
4198 ansi/
David Turner5951ce91999-12-29 00:53:44 +00004199 unix/ -- platform-specific configuration files
David Turnerd2b1f351999-12-16 23:11:37 +00004200 win32/
4201 os2/
4202 msdos/
4203
Werner Lembergab6d1072001-04-02 21:30:06 +00004204 include/ -- public header files, those to be included
4205 directly by client apps
David Turnerd2b1f351999-12-16 23:11:37 +00004206
4207 src/ -- sources of the library
4208 base/ -- the base layer
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004209 sfnt/ -- the sfnt `driver' (see the drivers section
Werner Lembergab6d1072001-04-02 21:30:06 +00004210 below)
David Turnerd2b1f351999-12-16 23:11:37 +00004211 truetype/ -- the truetype driver
4212 type1/ -- the type1 driver
4213 shared/ -- some header files shared between drivers
4214
4215 demos/ -- demos/tools
4216
4217 docs/ -- documentation (a bit empty for now)
4218
David Turnerd2b1f351999-12-16 23:11:37 +00004219
Werner Lembergab6d1072001-04-02 21:30:06 +00004220----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00004221
Werner Lembergab6d1072001-04-02 21:30:06 +00004222Glyph Image Formats:
David Turnerd2b1f351999-12-16 23:11:37 +00004223
Werner Lembergab6d1072001-04-02 21:30:06 +00004224 Drivers are now able to register new glyph image formats within the
4225 library. For now, the base layer supports of course bitmaps and
4226 vector outlines, but one could imagine something different like
Werner Lembergb4142d52007-01-17 12:45:26 +00004227 colored bitmaps, bi-color vectors or whatever else (Metafonts anyone
Werner Lembergab6d1072001-04-02 21:30:06 +00004228 ??).
David Turnerd2b1f351999-12-16 23:11:37 +00004229
Werner Lembergab6d1072001-04-02 21:30:06 +00004230 See the file `include/ftimage.h'. Note also that the type
4231 FT_Raster_Map is gone, and is now replaced by FT_Bitmap, which
4232 should encompass all known bitmap types.
4233
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004234 Each new image format must provide at least one `raster', i.e. a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004235 module capable of transforming the glyph image into a bitmap. It's
Werner Lembergab6d1072001-04-02 21:30:06 +00004236 also possible to change the default raster used for a given glyph
4237 image format.
4238
4239 The default outline scan-converter now uses 128 levels of grays by
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004240 default, which tends to smooth many things. Note that the demo
Werner Lembergab6d1072001-04-02 21:30:06 +00004241 programs have been updated significantly in order to display these..
David Turnerd2b1f351999-12-16 23:11:37 +00004242
4243
Werner Lembergab6d1072001-04-02 21:30:06 +00004244----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00004245
Werner Lembergab6d1072001-04-02 21:30:06 +00004246Build system:
David Turnerd2b1f351999-12-16 23:11:37 +00004247
Werner Lembergab6d1072001-04-02 21:30:06 +00004248 You still need GNU Make to build the library. The build system has
4249 been very seriously re-vamped in order to provide things like :
4250
4251 - automatic host platform detection (reverting to 'config/ansi' if
4252 it is not detected, with pseudo-standard compilation flags)
David Turnerd2b1f351999-12-16 23:11:37 +00004253
4254 - the ability to compile from the Makefiles with very different and
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004255 exotic compilers. Note that linking the library can be difficult
Werner Lembergab6d1072001-04-02 21:30:06 +00004256 for some platforms.
David Turnerd2b1f351999-12-16 23:11:37 +00004257
4258 For example, the file `config/win32/lcclib.bat' is invoked by the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004259 build system to create the `.lib' file with LCC-Win32 because its
Werner Lembergab6d1072001-04-02 21:30:06 +00004260 librarian has too many flaws to be invoked directly from the
4261 Makefile.
David Turnerd2b1f351999-12-16 23:11:37 +00004262
Werner Lembergab6d1072001-04-02 21:30:06 +00004263 Here's how it works:
David Turnerd2b1f351999-12-16 23:11:37 +00004264
Werner Lembergab6d1072001-04-02 21:30:06 +00004265 - the first time you type `make', the build system runs a series of
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004266 sub-makefiles in order to detect your host platform. It then
4267 dumps what it found, and creates a file called `config.mk' in the
4268 current directory. This is a sub-Makefile used to define many
Werner Lembergab6d1072001-04-02 21:30:06 +00004269 important Make variables used to build the library.
David Turnerd2b1f351999-12-16 23:11:37 +00004270
Werner Lembergab6d1072001-04-02 21:30:06 +00004271 - the second time, the build system detects the `config.mk' then use
4272 it to build the library. All object files go into 'obj' by
4273 default, as well as the library file, but this can easily be
4274 changed.
David Turnerd2b1f351999-12-16 23:11:37 +00004275
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004276 Note that you can run `make setup' to force another host platform
Werner Lembergab6d1072001-04-02 21:30:06 +00004277 detection even if a `config.mk' is present in the current
4278 directory. Another solution is simply to delete the file, then
4279 re-run make.
David Turnerd2b1f351999-12-16 23:11:37 +00004280
Werner Lembergab6d1072001-04-02 21:30:06 +00004281 Finally, the default compiler for all platforms is gcc (for now,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004282 this will hopefully changed in the future). You can however specify
Werner Lembergab6d1072001-04-02 21:30:06 +00004283 a different compiler by specifying it after the 'setup' target as
4284 in:
David Turnerd2b1f351999-12-16 23:11:37 +00004285
4286 gnumake setup lcc on Win32 to use the LCC compiler
4287 gnumake setup visualc on Win32 to use Visual C++
4288
Werner Lembergab6d1072001-04-02 21:30:06 +00004289 See the file `config/<system>/detect.mk' for a list of supported
4290 compilers for your platforms.
David Turnerd2b1f351999-12-16 23:11:37 +00004291
Werner Lembergab6d1072001-04-02 21:30:06 +00004292 It should be relatively easy to write new detection rules files and
David Turnerd2b1f351999-12-16 23:11:37 +00004293 config.mk..
4294
Werner Lembergab6d1072001-04-02 21:30:06 +00004295 Finally, to build the demo programs, go to `demos' and launch GNU
4296 Make, it will use the `config.mk' in the top directory to build the
4297 test programs..
David Turnerd2b1f351999-12-16 23:11:37 +00004298
David Turnerd2b1f351999-12-16 23:11:37 +00004299
Werner Lembergab6d1072001-04-02 21:30:06 +00004300----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00004301
Werner Lembergab6d1072001-04-02 21:30:06 +00004302Portability:
David Turnerd2b1f351999-12-16 23:11:37 +00004303
Werner Lembergab6d1072001-04-02 21:30:06 +00004304 In the previous beta, a single FT_System object was used to
4305 encompass all low-level operations like thread synchronisation,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004306 memory management and i/o access. This has been greatly simplified:
Werner Lembergab6d1072001-04-02 21:30:06 +00004307
4308 - thread synchronisation has been dropped, for the simple reason
4309 that the library is already re-entrant, and that if you really
4310 need two threads accessing the same FT_Library, you should
4311 really synchronize access to it yourself with a simple mutex.
4312
4313 - memory management is performed through a very simple object
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004314 called `FT_Memory', which really is a table containing a table
Werner Lembergab6d1072001-04-02 21:30:06 +00004315 of pointers to functions like malloc, realloc and free as well
4316 as some user data (closure).
David Turnerd2b1f351999-12-16 23:11:37 +00004317
4318 - resources have disappeared (they created more problems than they
Werner Lembergab6d1072001-04-02 21:30:06 +00004319 solved), and i/o management have been simplified greatly as a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004320 result. Streams are defined through FT_Stream objects, which
4321 can be either memory-based or disk-based.
David Turnerd2b1f351999-12-16 23:11:37 +00004322
Werner Lembergab6d1072001-04-02 21:30:06 +00004323 Note that each face has its own stream, which is closed only
4324 when the face object is destroyed. Hence, a function like
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004325 TT_Flush_Face in 1.x cannot be directly supported. However, if
Werner Lembergab6d1072001-04-02 21:30:06 +00004326 you really need something like this, you can easily tailor your
4327 own streams to achieve the same feature at a lower level (and
4328 use FT_Open_Face instead of FT_New_Face to create the face).
David Turnerd2b1f351999-12-16 23:11:37 +00004329
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004330 See the file `include/ftsystem.h' for more details, as well as the
4331 implementations found in `config/unix' and `config/ansi'.
David Turnerd2b1f351999-12-16 23:11:37 +00004332
4333
Werner Lembergab6d1072001-04-02 21:30:06 +00004334----------------------------------------------------------------------
David Turnere49ab252000-05-16 23:44:38 +00004335
Werner Lembergab6d1072001-04-02 21:30:06 +00004336Font Drivers:
David Turner5951ce91999-12-29 00:53:44 +00004337
Werner Lembergab6d1072001-04-02 21:30:06 +00004338 The Font Driver interface has been modified in order to support
David Turner5951ce91999-12-29 00:53:44 +00004339 extensions & versioning.
4340
4341
Werner Lembergab6d1072001-04-02 21:30:06 +00004342 The list of the font drivers that are statically linked to the
4343 library at compile time is managed through a new configuration file
David Turner5951ce91999-12-29 00:53:44 +00004344 called `config/<platform>/ftmodule.h'.
4345
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004346 This file is autogenerated when invoking `make modules'. This
4347 target will parse all sub-directories of 'src', looking for a
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004348 `module.mk' rules file, used to describe the driver to the build
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004349 system.
David Turner5951ce91999-12-29 00:53:44 +00004350
Werner Lembergab6d1072001-04-02 21:30:06 +00004351 Hence, one should call `make modules' each time a font driver is
4352 added or removed from the `src' directory.
David Turner5951ce91999-12-29 00:53:44 +00004353
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004354 Finally, this version provides a `pseudo-driver' in `src/sfnt'.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004355 This driver doesn't support font files directly, but provides
4356 services used by all TrueType-like font drivers. Hence, its code is
4357 shared between the TrueType & OpenType font formats, and possibly
4358 more formats to come if we're lucky..
David Turnerd2b1f351999-12-16 23:11:37 +00004359
Werner Lembergab6d1072001-04-02 21:30:06 +00004360
4361----------------------------------------------------------------------
4362
4363Extensions support:
David Turner5951ce91999-12-29 00:53:44 +00004364
4365 The extensions support is inspired by the one found in 1.x.
4366
Werner Lembergcc7f12a2007-01-09 10:37:36 +00004367 Now, each font driver has its own `extension registry', which lists
Werner Lembergab6d1072001-04-02 21:30:06 +00004368 which extensions are available for the font faces managed by the
4369 driver.
David Turner5951ce91999-12-29 00:53:44 +00004370
Werner Lembergab6d1072001-04-02 21:30:06 +00004371 Extension ids are now strings, rather than 4-byte tags, as this is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004372 usually more readable.
David Turner5951ce91999-12-29 00:53:44 +00004373
4374 Each extension has:
4375 - some data, associated to each face object
4376 - an interface (table of function pointers)
4377
Werner Lembergab6d1072001-04-02 21:30:06 +00004378 An extension that is format-specific should simply register itself
Werner Lemberg5e3614f2003-09-12 19:38:13 +00004379 to the correct font driver. Here is some example code:
David Turner5951ce91999-12-29 00:53:44 +00004380
4381 // Registering an extensions
4382 //
4383 FT_Error FT_Init_XXXX_Extension( FT_Library library )
4384 {
4385 FT_DriverInterface* tt_driver;
4386
4387 driver = FT_Get_Driver( library, "truetype" );
4388 if (!driver) return FT_Err_Unimplemented_Feature;
4389
David Turnere49ab252000-05-16 23:44:38 +00004390 return FT_Register_Extension( driver, &extension_class );
David Turner5951ce91999-12-29 00:53:44 +00004391 }
4392
David Turnere49ab252000-05-16 23:44:38 +00004393
David Turner5951ce91999-12-29 00:53:44 +00004394 // Implementing the extensions
4395 //
4396 FT_Error FT_Proceed_Extension_XXX( FT_Face face )
4397 {
4398 FT_XXX_Extension ext;
4399 FT_XXX_Extension_Interface ext_interface;
4400
4401 ext = FT_Get_Extension( face, "extensionid", &ext_interface );
4402 if (!ext) return error;
4403
4404 return ext_interface->do_it(ext);
4405 }
David Turnerd2b1f351999-12-16 23:11:37 +00004406
Werner Lemberg56c368c2005-06-04 23:00:25 +00004407------------------------------------------------------------------------
4408
Werner Lembergf57fc592015-01-17 20:41:43 +01004409Copyright 2000-2015 by
Werner Lemberg56c368c2005-06-04 23:00:25 +00004410David Turner, Robert Wilhelm, and Werner Lemberg.
4411
4412This file is part of the FreeType project, and may only be used,
4413modified, and distributed under the terms of the FreeType project
4414license, LICENSE.TXT. By continuing to use, modify, or distribute this
4415file you indicate that you have read the license and understand and
4416accept it fully.
4417
4418
Werner Lemberg110246c2006-09-26 21:55:44 +00004419Local Variables:
4420version-control: never
4421coding: utf-8
4422End:
4423
Werner Lembergab6d1072001-04-02 21:30:06 +00004424--- end of CHANGES ---