blob: 77df5897db8eff44dced1d92234a736cc8c32263 [file] [log] [blame]
Werner Lemberg9d7f0952011-11-14 20:37:12 +01001
Werner Lemberge4ecce32013-01-11 09:02:22 +01002CHANGES BETWEEN 2.4.11 and 2.4.12
3
4 I. IMPORTANT CHANGES
5
6 - The macro FT_CONFIG_OPTION_OLD_INTERNALS is no longer set by
7 default. In the next release, we will completely remove the
8 associated code. Please update your programs in case you are
9 still using this macro.
10
11
12======================================================================
13
Werner Lembergc6a66b42012-12-20 08:31:56 +010014CHANGES BETWEEN 2.4.10 and 2.4.11
15
16 I. IMPORTANT BUG FIXES
17
18 - Some vulnerabilities in the BDF implementation have been fixed.
19 Users of this font format should upgrade.
20
21
22 II. IMPORTANT CHANGES
23
24 - Subpixel hinting support has been contributed by Infinality,
25 based on Greg Hitchcock's whitepaper at
26
27 http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
28
29 Originally, it was a separate patch available from
30
31 http://www.infinality.net/blog/
32
33 and which has been integrated.
34
35 Note that ClearType support is not completely implemented! In
36 particular, full support for the options `compatible_widths',
37 `symmetrical_smoothing, and `bgr' (via the GETINFO bytecode
38 instruction) is missing.
39
40 Activation of subpixel hinting support can be controlled with
41 the `TT_CONFIG_OPTION_SUBPIXEL_HINTING' configuration option; it
42 is switched off by default. This feature is still experimental;
43 we welcome test reports!
44
45 - Support for OpenType collections (OTC) has been added.
46
47 - Pure CFF fonts within an SFNT wrapper are now supported.
48
49
50 III. MISCELLANEOUS
51
52 - Minor rendering improvements to the auto-hinter.
53
54 - `FT_GlyphSlot_Oblique' now uses a shear angle of 12°.
55
56 - Experimental support to handle `property modules', for example
57 to control the behaviour of the auto-hinter. The API consists
58 of two new functions, `FT_Property_Set' and `FT_Property_Get'.
59
60 The code is still subject to change and should not be used for
61 production.
62
63 - The `ftdiff' demo program now supports UTF-8 encoded input files
64 for option `-f'.
65
66 - Using keys `r' and `R', you can now adjust the stroker radius in
67 the `ftview' demo program.
68
69 - Other, minor fixes and improvements.
70
71
72======================================================================
73
Werner Lemberg2d67e9b2012-06-14 08:46:04 +020074CHANGES BETWEEN 2.4.9 and 2.4.10
75
76 I. IMPORTANT BUG FIXES
77
78 - Incremental glyph loading as needed by ghostscript was broken.
79
80
81 II. MISCELLANEOUS
82
83 - A new function `FT_Outline_EmboldenXY', contributed by Alexei
84 Podtelezhnikov.
85
86 - In the `ftview' demo program, key `e' has been replaced with `x'
Alexei Podtelezhnikovcea9d7a2012-06-15 06:33:46 +020087 and `y' to embolden in the horizontal and vertical direction,
Werner Lemberg2d67e9b2012-06-14 08:46:04 +020088 respectively.
89
Alexei Podtelezhnikovcea9d7a2012-06-15 06:33:46 +020090 - The glyph spacing computation in `FT_GlyphSlot_Embolden' (and
91 similar code in `ftview') has been improved.
92
Werner Lemberg2d67e9b2012-06-14 08:46:04 +020093 - Minor improvements to the TrueType bytecode interpreter and
94 glyph loader, the auto-hinter, and the B/W rasterizer.
95
96
97======================================================================
98
Werner Lembergbd633342012-02-26 08:46:05 +010099CHANGES BETWEEN 2.4.8 and 2.4.9
100
Werner Lemberg50ed33e2012-03-08 21:02:06 +0100101 I. IMPORTANT BUG FIXES
102
103 - Another round of fixes to better handle invalid fonts. Many of
104 them are vulnerabilities (see CVE-2012-1126 up to CVE-2012-1144
105 and SA48320) so all users should upgrade.
106
107
108 II. MISCELLANEOUS
Werner Lembergbd633342012-02-26 08:46:05 +0100109
110 - The `ENCODING -1 <n>' format of BDF fonts is now supported.
111
112 - For BDF fonts, support for the whole Unicode encoding range has
113 been added.
114
115 - Better TTF support for x_ppem != y_ppem.
116
117 - `FT_Get_Advances' sometimes returned bogus values.
118
Werner Lemberg50ed33e2012-03-08 21:02:06 +0100119 - The demo programs no longer recognize and handle default
120 suffixes; you now have to always specify the complete font name.
121
Werner Lembergc6a66b42012-12-20 08:31:56 +0100122 - Better rendering and LCD mode cycling added to `ftview'.
Werner Lembergbd633342012-02-26 08:46:05 +0100123
124
125======================================================================
126
Werner Lemberg9d7f0952011-11-14 20:37:12 +0100127CHANGES BETWEEN 2.4.7 and 2.4.8
128
129 I. IMPORTANT BUG FIXES
130
131 - Some vulnerabilities in handling CID-keyed PostScript fonts have
132 been fixed; see CVE-2011-3439.
133
134
135 II. MISCELLANEOUS
136
137 - Chris Liddell contributed a new API, `FT_Get_PS_Font_Value', to
138 retrieve most of the dictionary keys in Type 1 fonts.
139
140
141======================================================================
142
Werner Lemberg016eba92011-10-18 13:34:32 +0200143CHANGES BETWEEN 2.4.6 and 2.4.7
144
145 I. IMPORTANT BUG FIXES
146
147 - Some vulnerabilities in handling Type 1 fonts have been fixed;
148 see CVE-2011-3256.
149
Werner Lemberg9d7f0952011-11-14 20:37:12 +0100150
Werner Lemberg016eba92011-10-18 13:34:32 +0200151 II. MISCELLANEOUS
152
153 - FreeType now properly handles ZapfDingbats glyph names while
154 constructing a Unicode character map (for fonts which don't have
155 one).
156
157
158======================================================================
159
Werner Lemberg29a79652011-07-29 06:23:27 +0200160CHANGES BETWEEN 2.4.5 and 2.4.6
Werner Lembergfe42a652010-12-31 17:47:09 +0100161
Werner Lemberg9c111b02011-03-07 06:07:53 +0100162 I. IMPORTANT BUG FIXES
163
Werner Lemberg29a79652011-07-29 06:23:27 +0200164 - For TrueType based fonts, the ascender and descender values were
165 incorrect sometimes (off by a pixel if the ppem value was not a
166 multiple of 5). Depending on the use you might now experience
167 a different layout; the change should result in better, more
168 consistent line spacing.
169
170 - Fix CVE-2011-0226 which causes a vulnerability while handling
171 Type 1 fonts.
172
Werner Lemberg54f187a2011-06-29 10:01:42 +0200173 - BDF fonts containing glyphs with negative values for ENCODING
174 were incorrectly rejected. This bug has been introduced in
175 FreeType version 2.2.0.
176
Werner Lemberg9ae6c7c2011-07-02 12:15:10 +0200177 - David Bevan contributed a major revision of the FreeType stroker
178 code:
179
180 . The behaviour of FT_STROKER_LINEJOIN_BEVEL has been corrected.
181
182 . A new line join style, FT_STROKER_LINEJOIN_MITER_FIXED, has
183 been introduced to support PostScript and PDF miter joins.
184
185 . FT_STROKER_LINEJOIN_MITER_VARIABLE has been introduced as an
186 alias for FT_STROKER_LINEJOIN_MITER.
187
188 . Various stroking glitches has been fixed.
189
Werner Lemberg54f187a2011-06-29 10:01:42 +0200190
Werner Lembergf4b63322011-07-03 11:24:46 +0200191 II. MISCELLANEOUS
192
193 - SFNT bitmap fonts which contain an outline glyph for `.notdef'
194 only no longer set the FT_FACE_FLAG_SCALABLE flag.
195
196
Werner Lemberg54f187a2011-06-29 10:01:42 +0200197======================================================================
198
199CHANGES BETWEEN 2.4.4 and 2.4.5
200
201 I. IMPORTANT BUG FIXES
202
Werner Lemberg9c111b02011-03-07 06:07:53 +0100203 - A rendering regression for second-order Bézier curves has been
204 fixed, introduced in 2.4.3.
205
206
207 II. IMPORTANT CHANGES
208
209 - If autohinting is not explicitly disabled, FreeType now uses
210 the autohinter if a TrueType based font doesn't contain native
211 hints.
212
Behdad Esfahbod8c82ec52011-04-21 08:21:37 +0200213 - The load flag FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH has been made
214 redundant and is simply ignored; this means that FreeType now
215 ignores the global advance width value in TrueType fonts.
216
Werner Lemberg9c111b02011-03-07 06:07:53 +0100217
218 III. MISCELLANEOUS
Werner Lembergfe42a652010-12-31 17:47:09 +0100219
Werner Lembergcecd9122011-03-09 06:18:28 +0100220 - `FT_Sfnt_Table_Info' can now return the number of SFNT tables of
221 a font.
222
Werner Lembergfe42a652010-12-31 17:47:09 +0100223 - Support for PCF files compressed with bzip2 has been contributed
224 by Joel Klinghed. To make this work, the OS must provide a
225 bzip2 library.
226
Werner Lemberg9c111b02011-03-07 06:07:53 +0100227 - Bradley Grainger contributed project and solution files in
228 Visual Studio 2010 format.
229
230 - Again some fixes to better handle broken fonts.
231
232 - Some improvements to the B/W rasterizer.
233
234 - Fixes to the cache module to improve robustness.
235
Werner Lemberg3ae2c702011-06-24 13:18:41 +0200236 - Just Fill Bugs contributed (experimental) code to compute blue
237 zones for CJK Ideographs, improving the alignment of horizontal
238 stems at the top or bottom edges.
239
Werner Lembergda9dbf82011-06-25 07:16:22 +0200240 - The `ftgrid' demo program can now display autohinter segments,
241 to be toggled on and off with key `s'.
Werner Lembergfe42a652010-12-31 17:47:09 +0100242
Werner Lemberg54f187a2011-06-29 10:01:42 +0200243
suzuki toshiya51d48812010-11-23 04:28:11 +0900244======================================================================
245
246CHANGES BETWEEN 2.4.3 and 2.4.4
247
248 I. IMPORTANT BUG FIXES
249
250 - UVS support (TrueType/OpenType cmap format 14) support is fixed.
251 This regression has been introduced in version 2.4.0.
252
Werner Lemberg9c111b02011-03-07 06:07:53 +0100253
suzuki toshiya51d48812010-11-23 04:28:11 +0900254 II. MISCELLANEOUS
255
256 - Detect tricky fonts (e.g. MingLiU) by the lengths and checksums
257 of Type42-persistent subtables (`cvt ', `fpgm', and `prep') when
Werner Lembergcd322442010-11-28 15:31:23 +0100258 a TrueType font without family name is given. The previous fix,
259 introduced in 2.4.3, was too rigorous, causing many subsetted
260 fonts (mainly from PDF files) displayed badly because FreeType
261 forced rendering with the TrueType bytecode engine instead of
262 the autohinter.
263
264 - Better support for 64bit platforms.
265
266 - More fixes to improve handling of broken fonts.
suzuki toshiya51d48812010-11-23 04:28:11 +0900267
268
269======================================================================
Werner Lemberga5a32c12010-10-03 20:36:03 +0200270
271CHANGES BETWEEN 2.4.2 and 2.4.3
272
273 I. IMPORTANT BUG FIXES
274
275 - Fix rendering of certain cubic, S-shaped arcs. This regression
276 has been introduced in version 2.4.0.
277
278
279 II. MISCELLANEOUS
280
281 - To fix the above mentioned rendering issue, a new spline
282 flattening algorithm has been introduced which speeds up both
283 conic and cubic arcs.
284
285 - Handling of broken fonts has been further improved.
286
287
288======================================================================
289
Werner Lembergfe3433c2010-07-18 18:41:47 +0200290CHANGES BETWEEN 2.4.1 and 2.4.2
291
suzuki toshiya018f5c22010-08-06 14:12:54 +0900292 I. IMPORTANT BUG FIXES
293
294 - A stack overflow in CFF Type2 CharStrings interpreter is fixed.
295
Werner Lemberg6a8691e2010-08-06 22:00:38 +0200296 - Handling Type 42 font deallocation was broken; additionally, the
297 library is now more robust against malformed Type 42 fonts.
298
299
suzuki toshiya018f5c22010-08-06 14:12:54 +0900300 II. MISCELLANEOUS
Werner Lembergfe3433c2010-07-18 18:41:47 +0200301
302 - Two new functions, `FT_Reference_Library' (in FT_MODULE_H) and
303 `FT_Reference_Face' (in FT_FREETYPE_H), have been added to
304 simplify life-cycle management. A counter gets initialized to 1
305 at the time an FT_Library (or FT_Face) structure is created.
306 The two new functions increment the respective counter.
307 `FT_Done_Library' and `FT_Done_Face' then only destroy a library
308 or face if the counter is 1, otherwise they simply decrement the
Werner Lembergc6a66b42012-12-20 08:31:56 +0100309 counter.
Werner Lembergfe3433c2010-07-18 18:41:47 +0200310
311
312======================================================================
Werner Lembergb69c6ac2010-07-18 06:20:09 +0200313
314CHANGES BETWEEN 2.4.0 and 2.4.1
315
316 I. IMPORTANT CHANGES
317
318 - A serious bug in the CFF font module prevented display of many
319 glyphs in CFF fonts like `MinionPro-Regular.otf'.
320
321
322======================================================================
323
Werner Lemberg6bbbbc12010-07-04 07:37:56 +0200324CHANGES BETWEEN 2.3.12 and 2.4.0
Werner Lemberg460d23f2010-04-05 08:46:26 +0200325
326 I. IMPORTANT CHANGES
327
Werner Lemberg15ffc352010-07-12 22:07:16 +0200328 - Since May 2010, all patents regarding the TrueType bytecode
Werner Lemberg6bbbbc12010-07-04 07:37:56 +0200329 interpreter have expired worldwide. Consequently, we now define
Werner Lemberg15ffc352010-07-12 22:07:16 +0200330 TT_CONFIG_OPTION_BYTECODE_INTERPRETER by default (and undefine
Werner Lemberg6bbbbc12010-07-04 07:37:56 +0200331 TT_CONFIG_OPTION_UNPATENTED_HINTING).
332
Werner Lemberg460d23f2010-04-05 08:46:26 +0200333 - A new function `FT_Library_SetLcdFilterWeights' is available to
334 adjust the filter weights set by `FT_Library_SetLcdFilter'.
335
Werner Lemberg15ffc352010-07-12 22:07:16 +0200336
Werner Lemberg6bbbbc12010-07-04 07:37:56 +0200337 II. MISCELLANEOUS
338
339 - Thanks to many reports from Robert Święcki, FreeType's stability
Werner Lemberg15ffc352010-07-12 22:07:16 +0200340 in handling broken or damaged fonts is much improved.
341
342 - Support for LCD filter control has been added to the demo
343 programs `ftdiff' and `ftview'.
Werner Lemberg6bbbbc12010-07-04 07:37:56 +0200344
Werner Lemberg460d23f2010-04-05 08:46:26 +0200345
346======================================================================
347
Werner Lembergb36d4192010-02-13 07:57:56 +0100348CHANGES BETWEEN 2.3.11 and 2.3.12
349
350 I. IMPORTANT CHANGES
351
352 - For `FT_Open_Face', new parameters are available to ignore
353 preferred family names: FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY and
354 FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY.
355
Werner Lemberg6bbbbc12010-07-04 07:37:56 +0200356
Werner Lembergb36d4192010-02-13 07:57:56 +0100357 II. MISCELLANEOUS
358
359 - Support for incremental font loading (controlled with the
360 FT_CONFIG_OPTION_INCREMENTAL macro) is now active by default.
361
362 - Better support for vertical metrics.
363
364 - Various minor bug fixes.
365
366
367======================================================================
368
Werner Lemberg3c4e6ba2009-10-10 20:15:49 +0200369CHANGES BETWEEN 2.3.10 and 2.3.11
370
371 I. IMPORTANT BUG FIXES
372
373 - Version 2.3.10 broke PCF support.
374
375
376======================================================================
377
Werner Lembergca98f8c2009-04-04 07:42:38 +0200378CHANGES BETWEEN 2.3.10 and 2.3.9
379
Werner Lemberg8b84c9d2009-04-27 19:40:35 +0200380 I. IMPORTANT BUG FIXES
381
Werner Lemberg7daf8012009-04-30 20:00:22 +0200382 - If all ASCII digits in a font have the same (unscaled) width,
Werner Lemberg8b84c9d2009-04-27 19:40:35 +0200383 the autohinter respects this and won't change it.
384
Werner Lemberg2cd790d2009-07-19 11:18:00 +0200385 - TrueType fonts are now rasterized correctly if the horizontal
386 and vertical resolution differ.
387
388 - Type 1 fonts are now handled with increased precision internally
389 to avoid serious rounding issues if non-integral coordinates are
390 encountered.
391
Werner Lembergd77cd8c2009-08-27 00:10:56 +0200392 - Horizontally condensed CFF fonts (using the font matrix) were
393 rendered incorrectly. This bug has been introduced after
394 release 2.3.5.
395
Werner Lemberg8b84c9d2009-04-27 19:40:35 +0200396
397 II. IMPORTANT CHANGES
Werner Lembergca98f8c2009-04-04 07:42:38 +0200398
399 - Support for the SFNT cmap 13 table format (as defined by the new
400 OpenType 1.6 specification) has been added.
401
Werner Lemberg140a6942009-06-18 16:07:11 +0200402 - B/W rasterization of well-hinted TrueType fonts at small sizes
403 has been greatly improved.
404
Werner Lemberge2184502009-09-23 09:28:48 +0200405 - Calculation of vertical metrics in OpenType fonts has been
406 improved.
Werner Lemberg2cd790d2009-07-19 11:18:00 +0200407
Werner Lembergbcdde602009-10-06 11:14:19 +0200408
Werner Lemberg7daf8012009-04-30 20:00:22 +0200409 III. MISCELLANEOUS
410
411 - It is now possible to change the emboldening factor in the
412 `ftview' demo program with keys `e' and `E'.
413
414 - It is now possible to change the slant value in the `ftview'
415 demo program with keys `s' and `S'.
416
Werner Lemberge2184502009-09-23 09:28:48 +0200417 - The 5-levels grayscale mode of the `ftraster' module (which
418 FreeType doesn't use by default) was broken since version 2.3.0.
419
420 - Compilation of the `ftgrays' and `ftraster' modules was broken
421 in stand-alone mode.
422
423 - Various fixes for compilation on 64bit and 16bit architectures.
Werner Lembergca98f8c2009-04-04 07:42:38 +0200424
Werner Lembergbcdde602009-10-06 11:14:19 +0200425
Werner Lembergca98f8c2009-04-04 07:42:38 +0200426======================================================================
427
Werner Lemberg59e2c8d2009-01-18 06:42:59 +0000428CHANGES BETWEEN 2.3.9 and 2.3.8
429
430 I. IMPORTANT BUG FIXES
431
Werner Lemberg15b60bb2009-03-03 21:35:32 +0000432 - Very unfortunately, FreeType 2.3.8 contained a change that broke
433 its official ABI. The end result is that programs compiled
David Turnercda6f492009-03-03 20:49:32 +0000434 against previous versions of the library, but dynamically linked
Werner Lemberg15b60bb2009-03-03 21:35:32 +0000435 to 2.3.8 can experience memory corruption if they call the
436 `FT_Get_PS_Font_Info' function.
David Turnercda6f492009-03-03 20:49:32 +0000437
Werner Lemberg15b60bb2009-03-03 21:35:32 +0000438 We recommend all users to upgrade to 2.3.9 as soon as possible,
439 or to downgrade to a previous release of the library if this is
David Turnercda6f492009-03-03 20:49:32 +0000440 not an option.
441
Werner Lemberg15b60bb2009-03-03 21:35:32 +0000442 The origin of the bug is that a new field was added to the
443 publicly defined `PS_FontInfoRec' structure. Unfortunately,
444 objects of this type can be stack or heap allocated by callers
445 of `FT_Get_PS_Font_Info', resulting in a memory buffer
446 overwrite with its implementation in 2.3.8.
David Turnercda6f492009-03-03 20:49:32 +0000447
Werner Lemberg15b60bb2009-03-03 21:35:32 +0000448 If you want to know whether your code is vulnerable to this
449 issue, simply search for the substrings `PS_FontInfo' and
450 `PS_Font_Info' in your source code. If none is found, your code
451 is safe and is not affected.
David Turnercda6f492009-03-03 20:49:32 +0000452
453 The FreeType team apologizes for the problem.
454
Suzuki, Toshiya (鈴木俊哉)5a009092009-01-22 03:50:37 +0000455 - The POSIX support of MacOS resource-fork fonts (Suitcase fonts
456 and LaserWriter Type1 PostScript fonts) was broken in 2.3.8. If
457 FreeType2 is built without Carbon framework, these fonts are not
Werner Lemberg5e83ce42009-01-22 05:53:35 +0000458 handled correctly. Version 2.3.7 didn't have this bug.
459
Werner Lemberg14de1112009-02-24 21:34:51 +0000460 - `FT_Get_Advance' (and `FT_Get_Advances') returned bad values for
461 almost all font formats except TrueType fonts.
462
Werner Lemberg42f5c712009-03-03 23:34:49 +0000463 - Fix a bug in the SFNT kerning table loader/parser which could
464 crash the engine if certain malformed tables were encountered.
Werner Lemberg59e2c8d2009-01-18 06:42:59 +0000465
Werner Lemberg21dab912009-03-09 18:06:28 +0000466 - Composite SFNT bitmaps are now handled correctly.
Werner Lemberg59e2c8d2009-01-18 06:42:59 +0000467
468
Werner Lemberg07e81812009-03-11 21:29:54 +0000469 II. IMPORTANT CHANGES
470
471 - The new functions `FT_Get_CID_Is_Internally_CID_keyed' and
472 `FT_Get_CID_From_Glyph_Index' can be used to access CID-keyed
473 CFF fonts via CID values. This code has been contributed by
474 Michael Toftdal.
475
476
477 III. MISCELLANEOUS
Werner Lemberg59e2c8d2009-01-18 06:42:59 +0000478
479 - `FT_Outline_Get_InsideBorder' returns FT_STROKER_BORDER_RIGHT
480 for empty outlines. This was incorrectly documented.
481
Werner Lemberg1e54a652009-03-11 07:10:26 +0000482 - The `ftview' demo program now supports UTF-8 encoded strings.
483
Werner Lemberg5e83ce42009-01-22 05:53:35 +0000484
Werner Lemberg59e2c8d2009-01-18 06:42:59 +0000485======================================================================
486
Werner Lemberg3d2f06f2008-07-16 06:13:34 +0000487CHANGES BETWEEN 2.3.8 and 2.3.7
488
489 I. IMPORTANT BUG FIXES
490
Werner Lemberg22e970a2008-09-20 12:20:21 +0000491 - CID-keyed fonts in an SFNT wrapper were not handled correctly.
492
Werner Lemberg70f4cff2008-09-20 16:12:05 +0000493 - The smooth renderer produced truncated images (on the right) for
494 outline parts with negative horizontal values. Most fonts don't
495 contain outlines left to the y coordinate axis, but the effect
496 was very noticeable for outlines processed with FT_Glyph_Stroke,
497 using thick strokes.
498
Werner Lembergb972a2a2008-12-11 08:55:48 +0000499 - `FT_Get_TrueType_Engine_Type' returned a wrong value if both
500 configuration macros TT_CONFIG_OPTION_BYTECODE_INTERPRETER and
501 TT_CONFIG_OPTION_UNPATENTED_HINTING were defined.
Werner Lembergc321b9b2008-11-05 14:34:29 +0000502
Werner Lemberg1ad384d2008-12-25 23:52:00 +0000503 - The `face_index' field in the `FT_Face' structure wasn't
504 initialized properly after calling FT_Open_Face and friends with
505 a positive face index for CFFs, WinFNTs, and, most importantly,
506 for TrueType Collections (TTCs).
507
Werner Lemberg22e970a2008-09-20 12:20:21 +0000508
509 II. IMPORTANT CHANGES
510
511 - Rudimentary support for Type 1 fonts and CID-keyed Type 1 fonts
512 in an SFNT wrapper has been added -- such fonts are used on the
513 Mac. The core SFNT tables `TYP1' and `CID ' are passed to the
514 PS Type 1 and CID-keyed PS font drivers; other tables (`ALMX',
515 `BBOX', etc.) are not supported yet.
Werner Lemberg3d2f06f2008-07-16 06:13:34 +0000516
Werner Lemberg174b8de2008-10-12 11:47:29 +0000517 - A new interface to extract advance values of glyphs without
518 loading their outlines has been added. The functions are called
519 `FT_Get_Advance' and `FT_Get_Advances'; they are defined in file
520 `ftadvanc.h' (to be accessed as FT_ADVANCES_H).
521
Werner Lemberg05bf6872008-12-18 06:32:10 +0000522 - A new function `FT_Get_FSType_Flags' (in FT_FREETYPE_H) has been
523 contributed by David Bevan to access the embedding and
524 subsetting restriction information of fonts.
525
Werner Lemberg174b8de2008-10-12 11:47:29 +0000526
527 III. MISCELLANEOUS
528
529 - FT_MulFix is now an inlined function; by default, assembler code
530 is provided for x86 and ARM. See FT_CONFIG_OPTION_INLINE_MULFIX
531 and FT_CONFIG_OPTION_NO_ASSEMBLER (in ftoption.h) for more.
532
Werner Lembergb972a2a2008-12-11 08:55:48 +0000533 - The handling of `tricky' fonts (this is, fonts which don't work
534 with the autohinter, needing the font format's hinting engine)
535 has been generalized and changed slightly:
536
537 . A new face flag FT_FACE_FLAG_TRICKY indicates that the font
538 format's hinting engine is necessary for correct rendering.
539 The macro FT_IS_TRICKY can be used to check this flag.
540
541 . FT_LOAD_NO_HINTING is now ignored for tricky fonts. To really
542 force raw loading of such fonts (without hinting), both
543 FT_LOAD_NO_HINTING and FT_LOAD_NO_AUTOHINT must be used --
544 this is something which you probably never want to do.
545
546 . Tricky TrueType fonts always use the bytecode interpreter,
547 either the patented or unpatented version.
548
Werner Lembergc8c4cc82008-12-17 10:50:31 +0000549 - The function `FT_GlyphSlot_Own_Bitmap' has been moved from
550 FT_SYNTHESIS_H to FT_BITMAP_H; it is now part of the `official'
551 API. (The functions in FT_SYNTHESIS_H are still subject to
552 change, however.)
553
Werner Lemberga79de112009-01-07 08:27:37 +0000554 - In the `ftdiff' demo program you can now toggle the use of
555 FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH with key `a'.
556
Werner Lemberg3d2f06f2008-07-16 06:13:34 +0000557
558======================================================================
559
Werner Lembergad83e052008-06-15 11:06:12 +0000560CHANGES BETWEEN 2.3.7 and 2.3.6
561
562 I. IMPORTANT BUG FIXES
563
564 - If the library was compiled on an i386 platform using gcc, and
565 compiler option -O3 was given, `FT_MulFix' sometimes returned
566 incorrect results which could have caused problems with
567 `FT_Request_Metrics' and `FT_Select_Metrics', returning an
568 incorrect descender size.
569
Werner Lemberg5b631d82008-06-19 16:23:43 +0000570 - Pure CFFs without subfonts were scaled incorrectly if the font
571 matrix was non-standard. This bug has been introduced in
572 version 2.3.6.
573
Werner Lembergd57a5e92008-06-18 06:16:39 +0000574 - The `style_name' field in the `FT_FaceRec' structure often
575 contained a wrong value for Type 1 fonts. This misbehaviour
576 has been introduced in version 2.3.6 while trying to fix
577 another problem. [Note, however, that this value is
578 informative only since the used algorithm to extract it is
579 very simplistic.]
580
Werner Lembergad83e052008-06-15 11:06:12 +0000581
Werner Lemberg745a4f42008-06-22 22:41:24 +0000582 II. IMPORTANT CHANGES
583
584 - Two new macros, FT_OUTLINE_SMART_DROPOUTS and
585 FT_OUTLINE_EXCLUDE_STUBS, have been introduced. Together with
Werner Lemberg959cb8e2008-06-25 20:58:33 +0000586 FT_OUTLINE_IGNORE_DROPOUTS (which was ignored previously) it is
Werner Lemberg745a4f42008-06-22 22:41:24 +0000587 now possible to control the dropout mode of the `raster' module
588 (for B&W rasterization), using the `flags' field in the
589 `FT_Outline' structure.
590
591 - The TrueType bytecode interpreter now passes the dropout mode to
592 the B&W rasterizer. This greatly increases the output for small
Werner Lembergbe54a682008-06-29 07:43:41 +0000593 ppem values of many fonts like `pala.ttf'.
Werner Lemberg745a4f42008-06-22 22:41:24 +0000594
595
Werner Lembergad83e052008-06-15 11:06:12 +0000596======================================================================
Werner Lembergdf49e692007-05-04 06:30:05 +0000597
Werner Lembergef915c32007-07-16 20:46:05 +0000598CHANGES BETWEEN 2.3.6 and 2.3.5
599
Werner Lemberg9a966b72007-10-15 17:21:32 +0000600 I. IMPORTANT BUG FIXES
601
Werner Lemberg6174e172008-06-10 05:58:25 +0000602 - A bunch of potential security problems have been found. All
603 users should update.
604
Werner Lemberg9a966b72007-10-15 17:21:32 +0000605 - Microsoft Unicode cmaps in TrueType fonts are now always
606 preferred over Apple cmaps. This is not a bug per se, but there
607 exist some buggy fonts created for MS which have broken Apple
608 cmaps. This affects only the automatic selection of FreeType;
609 it's always possible to manually select an Apple Unicode cmap if
610 desired.
611
Werner Lemberg7cb9ec02008-06-09 20:49:29 +0000612 - Many bug fixes to the TrueType bytecode interpreter.
613
Werner Lemberg5057e362008-02-29 07:23:02 +0000614 - Improved Mac support.
615
Werner Lemberg210d6182008-04-01 05:55:48 +0000616 - Subsetted CID-keyed CFFs are now supported correctly.
617
Werner Lemberge6e6ead2008-05-14 23:05:38 +0000618 - CID-keyed CFFs with subfonts which are scaled in a non-standard
619 way are now handled correctly.
620
Werner Lembergfb572282008-05-13 12:10:04 +0000621 - A call to FT_Open_Face with `face_index' < 0 crashed FreeType if
622 the font was a Windows (bitmap) FNT/FON.
Werner Lemberg9a966b72007-10-15 17:21:32 +0000623
Werner Lemberg16dc51f2008-05-18 17:36:15 +0000624
Werner Lembergef915c32007-07-16 20:46:05 +0000625 II. IMPORTANT CHANGES
626
627 - The new function `FT_Get_CID_Registry_Ordering_Supplement' gives
628 access to those fields in a CID-keyed font. The code has been
629 contributed by Derek Clegg.
630
Werner Lembergd76fe5a2007-08-08 06:38:06 +0000631 - George Williams contributed code to validate the new `MATH'
632 OpenType table (within the `otvalid' module). The `ftvalid'
633 demo program has been extended accordingly.
Werner Lembergef915c32007-07-16 20:46:05 +0000634
Werner Lemberg9a966b72007-10-15 17:21:32 +0000635 - An API for cmap 14 support (for Unicode Variant Selectors, UVS)
636 has been contributed by George Williams.
637
Werner Lemberg210d6182008-04-01 05:55:48 +0000638 - A new face flag FT_FACE_FLAG_CID_KEYED has been added, together
639 with a macro FT_IS_CID_KEYED which evaluates to 1 if the font is
640 CID-keyed.
641
Werner Lemberg5057e362008-02-29 07:23:02 +0000642
Werner Lemberg85751172008-03-21 07:16:00 +0000643 III. MISCELLANEOUS
Werner Lemberg5057e362008-02-29 07:23:02 +0000644
645 - Build support for symbian has been contributed.
646
Werner Lemberga2f17cc2008-05-17 10:01:45 +0000647 - Better WGL4 glyph name support, contributed by Sergey Tolstov.
648
Werner Lemberg16dc51f2008-05-18 17:36:15 +0000649 - Debugging output of the various FT_TRACEX macros is now sent to
650 stderr.
651
Werner Lemberg6174e172008-06-10 05:58:25 +0000652 - The `ftview' demo program now provides artificial slanting too.
653
654 - The `ftvalid' demo program has a new option `-f' to select the
655 font index.
656
Werner Lemberg5057e362008-02-29 07:23:02 +0000657
Werner Lembergef915c32007-07-16 20:46:05 +0000658======================================================================
659
Werner Lembergdf49e692007-05-04 06:30:05 +0000660CHANGES BETWEEN 2.3.5 and 2.3.4
661
Werner Lembergc1d22572007-05-19 07:24:55 +0000662 I. IMPORTANT BUG FIXES
663
664 - Some subglyphs in TrueType fonts were handled incorrectly due to
665 a missing graphics state reinitialization.
666
Werner Lemberg1c8980e2007-05-25 07:11:12 +0000667 - Large .Z files (as distributed with some X11 packages) weren't
668 handled correctly, making FreeType increase the heap stack in an
669 endless loop.
670
Werner Lembergaa52eab2007-07-02 15:14:50 +0000671 - A large number of bugs have been fixed to avoid crashes and
672 endless loops with invalid fonts.
673
Werner Lembergc1d22572007-05-19 07:24:55 +0000674
675 II. IMPORTANT CHANGES
676
Werner Lemberg1c8980e2007-05-25 07:11:12 +0000677 - The two new cache functions `FTC_ImageCache_LookupScaler' and
678 `FTC_SBit_Cache_LookupScaler' have been added to allow lookup of
679 glyphs using an `FTC_Scaler' object; this makes it possible to
Werner Lemberg99e0c182007-05-29 07:00:23 +0000680 use fractional pixel sizes in the cache. The demo programs have
681 been updated accordingly to use this feature.
Werner Lemberg1c8980e2007-05-25 07:11:12 +0000682
Werner Lemberg99e0c182007-05-29 07:00:23 +0000683 - A new API `FT_Get_CMap_Format' has been added to get the cmap
Werner Lemberg79944112007-05-19 14:10:06 +0000684 format of a TrueType font. This is useful in handling PDF
Werner Lembergc1d22572007-05-19 07:24:55 +0000685 files. The code has been contributed by Derek Clegg.
686
Werner Lemberg99e0c182007-05-29 07:00:23 +0000687 - The auto-hinter now produces better output by default for
688 non-Latin scripts like Indic. This was done by using the CJK
689 hinting module as the default instead of the Latin one. Thanks
690 to Rahul Bhalerao for this suggestion.
691
Werner Lembergf6c120f2007-06-11 04:55:58 +0000692 - A new API `FT_Face_CheckTrueTypePatents' has been added to find
693 out whether a given TrueType font uses patented bytecode
Werner Lemberge9f47992007-06-16 09:32:31 +0000694 instructions. The `ft2demos' bundle contains a new program
695 called `ftpatchk' which demonstrates its usage.
Werner Lembergf6c120f2007-06-11 04:55:58 +0000696
Werner Lembergaa52eab2007-07-02 15:14:50 +0000697 - A new API `FT_Face_SetUnpatentedHinting' has been added to
698 enable or disable the unpatented hinter.
699
Werner Lembergab1604b2007-06-16 07:59:39 +0000700 - Support for Windows FON files in PE format has been contributed
701 by Dmitry Timoshkov.
702
Werner Lembergc1d22572007-05-19 07:24:55 +0000703
704 III. MISCELLANEOUS
Werner Lembergdf49e692007-05-04 06:30:05 +0000705
706 - Vincent Richomme contributed Visual C++ project files for Pocket
707 PCs.
708
709
710======================================================================
711
Werner Lemberg14bf82e2007-04-10 04:09:49 +0000712CHANGES BETWEEN 2.3.4 and 2.3.3
713
714 I. IMPORTANT BUG FIXES
715
716 - A serious bug in the handling of bitmap fonts (and bitmap
717 strikes of outline fonts) has been introduced in 2.3.3.
718
719
720======================================================================
721
David Turner23553d62007-03-26 13:37:17 +0000722CHANGES BETWEEN 2.3.3 and 2.3.2
723
724 I. IMPORTANT BUG FIXES
725
726 - Remove a serious regression in the TrueType bytecode interpreter
Werner Lemberg644b1ad2007-03-28 21:17:11 +0000727 that was introduced in version 2.3.2. Note that this does not
Werner Lemberg79944112007-05-19 14:10:06 +0000728 disable the improvements introduced to the interpreter in
729 version 2.3.2, only some ill cases that occurred with certain
730 fonts (though a few popular ones).
David Turner23553d62007-03-26 13:37:17 +0000731
Werner Lemberg644b1ad2007-03-28 21:17:11 +0000732 - The auto-hinter now ignores single-point contours for computing
733 blue zones. This bug created `wavy' baselines when rendering
734 text with various fonts that use these contours to model
735 mark-attach points (these are points that are never rasterized
736 and are placed outside of the glyph's real outline).
David Turner23553d62007-03-26 13:37:17 +0000737
Werner Lemberg79944112007-05-19 14:10:06 +0000738 - The `rsb_delta' and `lsb_delta' glyph slot fields are now set to
Werner Lemberg99e0c182007-05-29 07:00:23 +0000739 zero for mono-spaced fonts. Otherwise code that uses them would
David Turner23553d62007-03-26 13:37:17 +0000740 essentially ruin the fixed-advance property.
741
Werner Lemberg79944112007-05-19 14:10:06 +0000742 - Fix CVE-2007-1351 which can cause an integer overflow while
743 parsing BDF fonts, leading to a potentially exploitable heap
Werner Lemberg9f83e052007-04-05 02:28:23 +0000744 overflow condition.
745
Werner Lemberg99e0c182007-05-29 07:00:23 +0000746
Werner Lemberg644b1ad2007-03-28 21:17:11 +0000747 II. MISCELLANEOUS
748
749 - Fixed compilation issues on some 64-bit platforms (see ChangeLog
750 for details).
751
752 - A new demo program `ftdiff' has been added to compare TrueType
753 hinting, FreeType's auto hinting, and rendering without hinting
754 in three columns.
755
756
David Turner23553d62007-03-26 13:37:17 +0000757======================================================================
Werner Lemberg644b1ad2007-03-28 21:17:11 +0000758
David Turner121cad52007-03-08 16:43:50 +0000759CHANGES BETWEEN 2.3.2 and 2.3.1
760
761 I. IMPORTANT BUG FIXES
762
Werner Lemberg25d592a2007-03-09 07:59:35 +0000763 - FreeType returned incorrect kerning information from TrueType
764 fonts when the bytecode interpreter was enabled. This happened
765 due to a typo introduced in version 2.3.0.
David Turner121cad52007-03-08 16:43:50 +0000766
Werner Lemberg25d592a2007-03-09 07:59:35 +0000767 - Negative kerning values from PFM files are now reported
768 correctly (they were read as 16-bit unsigned values from the
769 file).
David Turner121cad52007-03-08 16:43:50 +0000770
Werner Lemberg25d592a2007-03-09 07:59:35 +0000771 - Fixed a small memory leak when `FT_Init_FreeType' failed for
772 some reason.
David Turner121cad52007-03-08 16:43:50 +0000773
Werner Lemberg25d592a2007-03-09 07:59:35 +0000774 - The Postscript hinter placed and sized very thin and ghost stems
775 incorrectly.
David Turner121cad52007-03-08 16:43:50 +0000776
Werner Lemberg25d592a2007-03-09 07:59:35 +0000777 - The TrueType bytecode interpreter has been fixed to get rid of
778 most of the rare differences seen in comparison to the Windows
779 font loader.
780
David Turner121cad52007-03-08 16:43:50 +0000781
782 II. IMPORTANT CHANGES
783
Werner Lemberg25d592a2007-03-09 07:59:35 +0000784 - The auto-hinter now better deals with serifs and corner cases
785 (e.g., glyph '9' in Arial at 9pt, 96dpi). It also improves
786 spacing adjustments and doesn't change widths for non-spacing
787 glyphs.
David Turner121cad52007-03-08 16:43:50 +0000788
Werner Lemberg25d592a2007-03-09 07:59:35 +0000789 - Many Mac-specific functions are deprecated (but still
790 available); modern replacements have been provided for them.
791 See the documentation in file `ftmac.h'.
792
David Turner121cad52007-03-08 16:43:50 +0000793
794======================================================================
795
Werner Lemberg53935932007-01-31 08:53:02 +0000796CHANGES BETWEEN 2.3.1 and 2.3.0
Werner Lemberg555258f2007-01-21 09:46:37 +0000797
798 I. IMPORTANT BUG FIXES
799
800 - The TrueType interpreter sometimes returned incorrect horizontal
801 metrics due to a bug in the handling of the SHZ instruction.
802
Werner Lembergb1be9e82007-01-25 11:50:00 +0000803 - A typo in a security check introduced after version 2.2.1
804 prevented FreeType to render some glyphs in CFF fonts.
805
Werner Lembergd7855662007-01-25 13:53:56 +0000806
Werner Lemberg555258f2007-01-21 09:46:37 +0000807======================================================================
808
Werner Lemberg17432b52007-01-12 09:28:44 +0000809CHANGES BETWEEN 2.3.0 and 2.2.1
David Turnere3d6e942006-09-26 16:58:21 +0000810
811 I. IMPORTANT BUG FIXES
812
Werner Lemberg110246c2006-09-26 21:55:44 +0000813 - The PCF font loader is now much more robust while loading
814 malformed font files.
David Turnere3d6e942006-09-26 16:58:21 +0000815
Werner Lemberg110246c2006-09-26 21:55:44 +0000816 - Various memory leaks have been found and fixed.
817
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000818 - The TrueType name loader now deals properly with some fonts that
819 encode their names in UTF-16 (the specification was vague, and
820 the code incorrectly assumed UCS-4).
David Turnere3d6e942006-09-26 16:58:21 +0000821
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000822 - Fixed the TrueType bytecode loader to deal properly with subtle
823 monochrome/gray issues when scaling the CVT. Some fonts
824 exhibited bad rendering artifacts otherwise.
David Turner4f7496e2007-01-09 09:21:16 +0000825
Werner Lembergb4142d52007-01-17 12:45:26 +0000826 - `FT_GlyphSlot_Embolden' now supports vertical layouts correctly
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000827 (it mangled the vertical advance height).
828
Werner Lembergb4142d52007-01-17 12:45:26 +0000829 - Fixed byte endian issues of `ftmac.c' to support Mac OS X on
830 i386.
831
832 - The PFR font loader no longer erroneously tags font files
833 without any outlines as FT_FACE_FLAG_SCALABLE.
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000834
David Turner4f7496e2007-01-09 09:21:16 +0000835
836 II. NEW API FUNCTIONS
837
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000838 - `FT_Library_SetLcdFilter' allows you to select a special filter
839 to be applied to the bitmaps generated by `FT_Render_Glyph' if
840 one of the FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V modes has
841 been selected. This filter is used to reduce color fringes;
842 several settings are available through the FT_LCD_FILTER_XXX
843 enumeration.
David Turner4f7496e2007-01-09 09:21:16 +0000844
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000845 Its declaration and documentation can be found in file
846 `include/freetype/ftlcdfil.h' (to be accessed with macro
847 FT_LCD_FILTER_H).
David Turner4f7496e2007-01-09 09:21:16 +0000848
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000849 *IMPORTANT*: This function returns an error
850 (FT_Err_Unimplemented_Feature) in default builds of the library
851 for patent reasons. See below.
David Turner4f7496e2007-01-09 09:21:16 +0000852
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000853 - `FT_Get_Gasp' allows you to query the flags of the TrueType
854 `gasp' table for a given character pixel size. This is useful
Werner Lembergb4142d52007-01-17 12:45:26 +0000855 to duplicate the text rendering of MS Windows when the native
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000856 bytecode interpreter is enabled (which isn't the default for
857 other patent reasons).
David Turner4f7496e2007-01-09 09:21:16 +0000858
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000859 Its declaration and documentation can be found in file
860 `include/freetype/ftgasp.h' (to be accessed with macro
861 FT_GASP_H).
David Turner4f7496e2007-01-09 09:21:16 +0000862
863
864 III. IMPORTANT CHANGES
865
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000866 - The auto-hinter has been tuned a lot to improve its results with
867 serif fonts, resulting in much better font rendering of many web
868 pages.
David Turnere3d6e942006-09-26 16:58:21 +0000869
Werner Lemberg110246c2006-09-26 21:55:44 +0000870 - The unpatented hinter is now part of the default build of the
871 library; we have added code to automatically support `tricky'
David Turnere3d6e942006-09-26 16:58:21 +0000872 fonts that need it.
873
Werner Lemberg110246c2006-09-26 21:55:44 +0000874 This means that FreeType should `just work' with certain Asian
875 fonts, like MingLiU, which cannot properly be loaded without a
876 bytecode interpreter, but which fortunately do not use any of
877 the patented bytecode opcodes. We detect these fonts by name,
878 so please report any font file that doesn't seem to work with
879 FreeType, and we shall do what we can to support it in a next
880 release.
David Turnere3d6e942006-09-26 16:58:21 +0000881
Werner Lemberg110246c2006-09-26 21:55:44 +0000882 Note that the API hasn't changed, so you can still force
Werner Lembergb4142d52007-01-17 12:45:26 +0000883 unpatented hinting with a special parameter to `FT_Open_Face' as
Werner Lemberg110246c2006-09-26 21:55:44 +0000884 well. This might be useful in same cases; for example, a PDF
885 reader might present a user option to activate it to deal with
886 certain `tricky' embedded fonts which cannot be clearly
887 identified.
David Turnere3d6e942006-09-26 16:58:21 +0000888
Werner Lemberg110246c2006-09-26 21:55:44 +0000889 If you are a developer for embedded systems, you might want to
890 *disable* the feature to save code space by undefining
Werner Lembergb4142d52007-01-17 12:45:26 +0000891 TT_CONFIG_OPTION_UNPATENTED_HINTING in file `ftoption.h'.
David Turnere3d6e942006-09-26 16:58:21 +0000892
Werner Lembergb4142d52007-01-17 12:45:26 +0000893 - LCD-optimized rendering is now *disabled* in all default builds
894 of the library, mainly due to patent issues. For more
895 information see:
David Turnere3d6e942006-09-26 16:58:21 +0000896
897 http://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html
898
Werner Lemberg110246c2006-09-26 21:55:44 +0000899 A new configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING
Werner Lembergb4142d52007-01-17 12:45:26 +0000900 has been introduced in `ftoption.h'; manually define it in this
Werner Lemberg110246c2006-09-26 21:55:44 +0000901 file if you want to re-enable the feature.
David Turnere3d6e942006-09-26 16:58:21 +0000902
Werner Lemberg110246c2006-09-26 21:55:44 +0000903 The change only affects the implementation, not the FreeType
904 API. This means that clients don't need to be modified, because
905 the library still generates LCD decimated bitmaps, but with the
906 added constraint that R=G=B on each triplet.
David Turnere3d6e942006-09-26 16:58:21 +0000907
Werner Lemberg110246c2006-09-26 21:55:44 +0000908 The displayed result should be equal to normal anti-aliased
David Turnere3d6e942006-09-26 16:58:21 +0000909 rendering.
910
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000911 Additionally, if FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
912 defined, the new `FT_Library_SetLcdFilter' function returns the
913 FT_Err_Unimplemented_Feature error code.
David Turner4f7496e2007-01-09 09:21:16 +0000914
Werner Lemberg110246c2006-09-26 21:55:44 +0000915 - Some computation bugs in the TrueType bytecode interpreter were
916 found, which allow us to get rid of very subtle and rare
917 differences we had experienced with the Windows renderer.
918
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000919 - It is now possible to cross-compile the library easily. See the
Werner Lembergb4142d52007-01-17 12:45:26 +0000920 file `docs/INSTALL.CROSS' for details.
David Turner4f7496e2007-01-09 09:21:16 +0000921
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000922 - The file `src/base/ftmac.c' now contains code for Mac OS X only;
923 its deprecated function `FT_GetFile_From_Mac_Font_Name' always
Werner Lembergb4142d52007-01-17 12:45:26 +0000924 returns an error even if the QuickDraw framework is available.
925 The previous version has been moved to `builds/mac/ftmac.c'.
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000926
927 Selecting configure option `--with-quickdraw-carbon' makes the
928 build process use the original `ftmac.c' file instead of the Mac
929 OS X-only version.
930
David Turner4f7496e2007-01-09 09:21:16 +0000931
Werner Lemberg8c4120d2007-01-15 06:42:40 +0000932 IV. MISCELLANEOUS
David Turnere3d6e942006-09-26 16:58:21 +0000933
David Turner4f7496e2007-01-09 09:21:16 +0000934 - Various performance and memory footprint optimizations have been
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000935 performed on the TrueType and CFF font loaders, sometimes with
936 very drastic benefits (e.g., the TrueType loader is now about
937 25% faster; FreeType should use less heap memory under nearly
Werner Lembergb4142d52007-01-17 12:45:26 +0000938 all conditions).
David Turnere3d6e942006-09-26 16:58:21 +0000939
Werner Lemberg110246c2006-09-26 21:55:44 +0000940 - The anti-aliased rasterizer has been optimized and is now 15% to
941 25% percent faster than in previous versions, depending on
942 content.
David Turnere3d6e942006-09-26 16:58:21 +0000943
Werner Lemberg110246c2006-09-26 21:55:44 +0000944 - The Type 1 loader has been improved; as an example, it now skips
945 top-level dictionaries properly.
946
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000947 - Better support for Mac fonts on POSIX systems, plus compilation
948 fixes for Mac OS X on ppc64 where `ftmac.c' cannot be built.
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000949
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000950 - Configuration without `--with-old-mac-fonts' does not include
951 `ftmac.c' (this was the behaviour in FreeType version 2.1.10).
Werner Lembergb0398be2007-01-13 08:52:27 +0000952
Werner Lemberg17432b52007-01-12 09:28:44 +0000953 - The TrueTypeGX validator (gxvalid) checks the order of glyph IDs
954 in the kern table.
955
David Turnere3d6e942006-09-26 16:58:21 +0000956
957======================================================================
958
Werner Lemberg94168f02006-05-11 07:07:09 +0000959CHANGES BETWEEN 2.2.1 and 2.2
Werner Lemberg1639c792006-05-06 16:44:58 +0000960
961 I. IMPORTANT BUG FIXES
962
963 - Various integer overflows have been fixed.
964
965 - PFB fonts with MacOS resource fork weren't handled correctly on
966 non-MacOS platforms.
967
968
969======================================================================
970
Werner Lemberg94168f02006-05-11 07:07:09 +0000971CHANGES BETWEEN 2.2 and 2.1.10
Werner Lemberg49f4d342005-06-16 19:07:08 +0000972
Werner Lemberg1639c792006-05-06 16:44:58 +0000973(not released officially)
974
Werner Lemberg49f4d342005-06-16 19:07:08 +0000975 I. IMPORTANT BUG FIXES
976
977 - Vertical metrics for SFNT fonts were incorrect sometimes.
978
Werner Lemberg7e25c682005-09-09 18:00:06 +0000979 - The FT_HAS_KERNING macro always returned 0.
980
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000981 - CFF OpenType fonts didn't return correct vertical metrics for
Werner Lembergcfc0cf22005-11-17 08:12:00 +0000982 glyphs with outlines.
983
Werner Lemberg6c990452005-11-18 21:10:59 +0000984 - If FreeType was compiled without hinters, all font formats based
985 on PS outlines weren't scaled correctly.
986
Werner Lemberg435046b2006-01-11 10:57:42 +0000987
Werner Lemberg49f4d342005-06-16 19:07:08 +0000988 II. IMPORTANT CHANGES
989
Werner Lemberge88d24c2006-02-28 21:49:54 +0000990 - Version 2.2 no longer exposes its internals, this is, the header
991 files located in the `include/freetype/internal' directory of
992 the source package are not copied anymore by the `make install'
993 command. Consequently, a number of rogue clients which directly
994 access FreeType's internal functions and structures won't
995 compile without modification.
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000996
Werner Lemberge88d24c2006-02-28 21:49:54 +0000997 We provide patches for most of those rogue clients. See the
998 following page for more information:
David Turnere9a47192006-02-28 09:26:58 +0000999
Werner Lemberg94168f02006-05-11 07:07:09 +00001000 http://www.freetype.org/freetype2/patches/rogue-patches.html
Werner Lemberge88d24c2006-02-28 21:49:54 +00001001
1002 Note that, as a convenience to our Unix desktop users, version
1003 2.2 is *binary* compatible with FreeType 2.1.7, which means that
1004 installing this release on an existing distribution shall not
1005 break any working desktop.
David Turnere9a47192006-02-28 09:26:58 +00001006
Werner Lemberg59939242006-01-31 20:17:42 +00001007 - FreeType's build mechanism has been redesigned. With GNU make
1008 it is now sufficient in most cases to edit two files:
1009 `modules.cfg', to select the library components, and the
1010 configuration file `include/freetype/config/ftoption.h' (which
1011 can be copied to the objects directory). Removing unused module
1012 directories to prevent its compilation and editing
1013 `include/freetype/config/ftmodule.h' is no longer necessary.
1014
Werner Lemberg083ba0b2005-12-23 15:10:54 +00001015 - The LIGHT hinting algorithm produces more pleasant results.
1016 Also, using the FT_LOAD_TARGET_LIGHT flags within FT_Load_Glyph
Werner Lemberg40917862006-04-01 18:49:07 +00001017 always forces auto-hinting, as a special exception. This allows
1018 you to experiment with it even if you have enabled the TrueType
David Turnercf603712006-04-01 16:22:06 +00001019 bytecode interpreter in your build.
1020
1021 - The auto hinter now employs a new algorithm for CJK fonts, based
1022 on Akito Hirai's patch. Note that this only works for fonts
1023 with a Unicode charmap at the moment.
David Turnere6bb9532005-12-23 13:32:06 +00001024
Werner Lemberg083ba0b2005-12-23 15:10:54 +00001025 - The following callback function types have changed slightly (by
Werner Lemberg49f4d342005-06-16 19:07:08 +00001026 adding the `const' keyword where appropriate):
1027
1028 FT_Outline_MoveToFunc
1029 FT_Outline_LineToFunc
1030 FT_Outline_ConicToFunc
1031 FT_Outline_CubicToFunc
1032 FT_SpanFunc
1033 FT_Raster_RenderFunc
1034
1035 FT_Glyph_TransformFunc
1036 FT_Renderer_RenderFunc
1037 FT_Renderer_TransformFunc
1038
Werner Lemberg4db32ec2006-03-24 11:54:53 +00001039 Note that this doesn't affect binary backward compatibility.
Werner Lemberg49f4d342005-06-16 19:07:08 +00001040
Werner Lemberg435046b2006-01-11 10:57:42 +00001041 - On MacOS, new APIs have been added as replacements for legacy
1042 APIs: `FT_New_Face_From_FSRef' for `FT_New_Face_From_FSSpec',
1043 and `FT_GetFile_From_Mac_ATS_Name' for
1044 `FT_GetFile_From_Mac_Name'. Legacy APIs are still available, if
1045 FreeType is built without disabling them.
1046
Werner Lemberg4db32ec2006-03-24 11:54:53 +00001047 - A new API `FT_Select_Size' has been added to select a bitmap
1048 strike by its index. Code using other functions to select
1049 bitmap strikes should be updated to use this function.
Wu, Chia-I (吳佳一)e33dc2e2006-01-14 05:09:30 +00001050
Werner Lemberg4db32ec2006-03-24 11:54:53 +00001051 - A new API `FT_Get_SubGlyph_Info' has been added to retrieve
Werner Lemberg40917862006-04-01 18:49:07 +00001052 subglyph data. This can be used by rogue clients which used to
David Turnercf603712006-04-01 16:22:06 +00001053 access the internal headers to get the corresponding data.
Werner Lemberg4db32ec2006-03-24 11:54:53 +00001054
1055 - In 2.1.10, the behaviour of `FT_Set_Pixel_Sizes' was changed for
Werner Lemberge88d24c2006-02-28 21:49:54 +00001056 BDF/PCF fonts, and only for them. This causes inconsistency.
1057 In this release, we undo the change. The intent of the change
Wu, Chia-I (吳佳一)e33dc2e2006-01-14 05:09:30 +00001058 in 2.1.10 is to allow size selection through real dimensions,
1059 which can now be done through `FT_Request_Size'.
1060
Werner Lemberge88d24c2006-02-28 21:49:54 +00001061 - Some security issues were discovered and fixed in the CFF and
1062 Type 1 loader, causing crashes of FreeType by malformed font
1063 files.
1064
Suzuki, Toshiya (鈴木俊哉)f8d16cc2006-01-11 09:28:38 +00001065
Werner Lemberg49f4d342005-06-16 19:07:08 +00001066 III. MISCELLANEOUS
1067
Werner Lemberg083ba0b2005-12-23 15:10:54 +00001068 - The documentation for FT_LOAD_TARGET_XXX and FT_RENDER_MODE_XXX
1069 values now better reflects its usage and differences: One set is
David Turnerdad2a2d2006-03-20 11:48:13 +00001070 used to specify the hinting algorithm, the other to specify the
1071 pixel rendering mode.
Werner Lemberge88d24c2006-02-28 21:49:54 +00001072
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001073 - `FT_New_Face' and `FT_New_Face_From_FSSpec' in ftmac.c have been
Werner Lemberg083ba0b2005-12-23 15:10:54 +00001074 changed to count supported scalable faces (sfnt, LWFN) only, and
Werner Lemberg4db32ec2006-03-24 11:54:53 +00001075 to return the number of available faces via face->num_faces.
Werner Lemberg083ba0b2005-12-23 15:10:54 +00001076 Unsupported bitmap faces (fbit, NFNT) are ignored.
Suzuki, Toshiya (鈴木俊哉)53be6e92005-12-23 12:22:46 +00001077
Werner Lemberg435046b2006-01-11 10:57:42 +00001078 - builds/unix/configure has been improved for MacOS X. It now
1079 automatically checks available functions in Carbon library, and
1080 prepare to use newest functions by default. Options to specify
1081 the dependencies of each Carbon APIs (FSSpec, FSRef, old/new
1082 QuickDraw, ATS) are available too. By manual disabling of all
1083 QuickDraw functionality, FreeType can be built without
1084 `deprecated function' warnings on MacOS 10.4.x, but
1085 FT_GetFile_Mac_Name in ftmac.c then is changed to a dummy
1086 function, and returns an `unimplemented' error. For details see
1087 builds/mac/README.
Suzuki, Toshiya (鈴木俊哉)f8d16cc2006-01-11 09:28:38 +00001088
Werner Lemberge88d24c2006-02-28 21:49:54 +00001089 - SFNT cmap handling has been improved, mainly to run much faster
David Turnere9a47192006-02-28 09:26:58 +00001090 with CJK fonts.
Werner Lemberg7734a1f2005-10-05 15:18:29 +00001091
Werner Lembergf99d8462006-02-26 17:50:59 +00001092 - A new function `FT_Get_TrueType_Engine_Type (declared in
1093 `FT_MODULE_H') is provided to determine the status of the
1094 TrueType bytecode interpreter compiled into the library
1095 (patented, unpatented, unimplemented).
Werner Lemberg6cdab922006-01-08 22:34:01 +00001096
Wu, Chia-I (吳佳一)ea1e8d32006-01-15 15:01:45 +00001097 - Vertical metrics of glyphs are synthesized if the font does not
1098 provide such information. You can tell whether the metrics are
1099 synthesized or not by checking the FT_FACE_FLAG_VERTICAL flag of
1100 the face.
1101
Werner Lemberg7b33dca2005-06-23 20:31:48 +00001102 - The demo programs `ftview' and `ftstring' have been rewritten
Werner Lemberg1639c792006-05-06 16:44:58 +00001103 for better readability. `ftview' has a new switch `-p' to test
1104 FT_New_Memory_Face (instead of FT_New_Face).
Wu, Chia-I (吳佳一)87f9bfc2005-06-22 03:56:14 +00001105
Werner Lemberg2752bd12005-08-22 07:11:31 +00001106 - FreeType now honours bit 1 in the `head' table of TrueType fonts
Werner Lemberg083ba0b2005-12-23 15:10:54 +00001107 (meaning `left sidebearing point at x=0'). This helps with some
1108 buggy fonts.
Werner Lemberg2752bd12005-08-22 07:11:31 +00001109
Werner Lembergb3feb802005-09-23 07:40:28 +00001110 - Rudimentary support for Adobe's new `SING Glyphlet' format. See
1111
1112 http://www.adobe.com/products/indesign/sing_gaiji.html
1113
1114 for more information.
Werner Lemberg49f4d342005-06-16 19:07:08 +00001115
Werner Lemberg083ba0b2005-12-23 15:10:54 +00001116 - The `ftdump' program from the `ft2demos' bundle now shows some
1117 information about charmaps. It also supports a new switch `-v'
Werner Lembergb797fdb2005-11-30 08:48:32 +00001118 to increase verbosity.
1119
Wu, Chia-I (吳佳一)f9a69132006-02-11 12:12:02 +00001120 - Better AFM support. This includes track kerning support.
1121
Wu, Chia-I (吳佳一)f9a69132006-02-11 12:12:02 +00001122
Werner Lemberg49f4d342005-06-16 19:07:08 +00001123======================================================================
1124
Werner Lemberg94168f02006-05-11 07:07:09 +00001125CHANGES BETWEEN 2.1.10 and 2.1.9
Werner Lembergd232f592004-08-02 05:38:33 +00001126
1127 I. IMPORTANT BUG FIXES
1128
1129 - The size comparison for BDF and PCF files could fail sometimes.
1130
1131 - Some CFF files were still not loaded correctly. Patch from
1132 Derek Noonburg.
1133
1134 - The stroker still had some serious bugs.
1135
Werner Lemberg33febc02004-10-09 07:07:43 +00001136 - Boris Letocha fixed a bug in the TrueType interpreter: The
1137 NPUSHW instruction wasn't skipped correctly in IF clauses. Some
1138 fonts like `Helvetica 75 Bold' failed.
1139
Werner Lemberg4d1550e2004-11-19 14:12:48 +00001140 - Another serious bug in handling TrueType hints caused many
1141 distortions. It has been introduced in version 2.1.8, and it is
1142 highly recommended to upgrade.
Werner Lembergb9ff4152004-11-19 10:35:52 +00001143
Werner Lembergc9114b92005-02-10 08:18:27 +00001144 - FreeType didn't properly parse empty Type 1 glyphs.
David Turnere6bb9532005-12-23 13:32:06 +00001145
Werner Lembergebf55852005-03-16 01:49:54 +00001146 - An unbound dynamic buffer growth was fixed in the PFR loader.
David Turnere6bb9532005-12-23 13:32:06 +00001147
Werner Lembergebf55852005-03-16 01:49:54 +00001148 - Several bugs have been fixed in the cache sub-system.
David Turner58609c42005-03-15 23:31:48 +00001149
Werner Lembergebf55852005-03-16 01:49:54 +00001150 - FreeType behaved incorrectly when resizing two distinct but very
1151 close character pixel sizes through `FT_Set_Char_Size' (Savannah
1152 bug #12263).
David Turnere6bb9532005-12-23 13:32:06 +00001153
Werner Lembergebf55852005-03-16 01:49:54 +00001154 - The auto-hinter didn't work properly for fonts without a Unicode
1155 charmap -- it even refused to load the glyphs.
Werner Lembergc9114b92005-02-10 08:18:27 +00001156
Werner Lembergd232f592004-08-02 05:38:33 +00001157
1158 II. IMPORTANT CHANGES
1159
Werner Lembergebf55852005-03-16 01:49:54 +00001160 - Many fixes have been applied to drastically reduce the amount of
1161 heap memory used by FreeType, especially when using
1162 memory-mapped font files (which is the default on Unix systems
1163 which support them).
David Turner58609c42005-03-15 23:31:48 +00001164
Werner Lemberga37745b2005-03-23 16:45:24 +00001165 - The auto-hinter has been replaced with a new module, called the
1166 `auto-fitter'. It consumes less memory than its predecessor,
1167 and it is prepared to support non-latin scripts better in next
1168 releases.
David Turner58609c42005-03-15 23:31:48 +00001169
Werner Lembergd232f592004-08-02 05:38:33 +00001170 - George Williams contributed code to read kerning data from PFM
1171 files.
1172
1173 - FreeType now uses the TT_NAME_ID_PREFERRED_FAMILY and
1174 TT_NAME_ID_PREFERRED_SUBFAMILY strings (if available) for
1175 setting family and style in SFNT fonts (patch from Kornfeld
1176 Eliyahu Peter).
1177
Werner Lemberg17439422004-08-11 05:25:37 +00001178 - A new API `FT_Sfnt_Table_Info' (in FT_TRUETYPE_TABLES_H) has
1179 been added to retrieve name and size information of SFNT tables.
1180
Werner Lembergee95b6f2004-09-10 14:39:00 +00001181 - A new API `FT_OpenType_Validate' (in FT_OPENTYPE_VALIDATE_H) has
1182 been added to validate OpenType tables (BASE, GDEF, GPOS, GSUB,
1183 JSTF). After validation it is no longer necessary to check
Werner Lemberg33febc02004-10-09 07:07:43 +00001184 for errors in those tables while accessing them.
Werner Lembergee95b6f2004-09-10 14:39:00 +00001185
Werner Lemberg82b71922005-06-02 07:12:05 +00001186 Note that this module might be moved to another library in the
1187 future to avoid a tight dependency between FreeType and the
1188 OpenType specification.
1189
Werner Lembergf2438e12004-12-14 16:01:29 +00001190 - A new API in FT_BITMAP_H (`FT_Bitmap_New', `FT_Bitmap_Convert',
Werner Lembergafb2ba52005-05-25 05:51:01 +00001191 `FT_Bitmap_Copy', `FT_Bitmap_Embolden', `FT_Bitmap_Done') has
1192 been added. Its use is to convert an FT_Bitmap structure in
1193 1bpp, 2bpp, 4bpp, or 8bpp format into another 8bpp FT_Bitmap,
1194 probably using a different pitch, and to further manipulate it.
1195
1196 - A new API `FT_Outline_Embolden' (in FT_OUTLINE_H) gives finer
1197 control how outlines are embolded.
1198
1199 - `FT_GlyphSlot_Embolden' (in FT_SYNTHESIS_H) now handles bitmaps
1200 also (code contributed by Chia I Wu). Note that this function
1201 is still experimental and may be replaced with a better API.
Werner Lembergf2438e12004-12-14 16:01:29 +00001202
Werner Lemberga76108b2005-04-03 20:11:42 +00001203 - The method how BDF and PCF bitmap fonts are accessed has been
1204 refined. Formerly, FT_Set_Pixel_Sizes and FT_Set_Char_Size
1205 were synonyms in FreeType's BDF and PCF interface. This has
1206 changed now. FT_Set_Pixel_Sizes should be used to select the
1207 actual font dimensions (the `strike', which is the sum of the
1208 `FONT_ASCENT' and `FONT_DESCENT' properties), while
1209 FT_Set_Char_Size selects the `nominal' size (the `PIXELSIZE'
1210 property). In both functions, the width parameter is ignored.
1211
Werner Lembergebf55852005-03-16 01:49:54 +00001212
Werner Lembergf2438e12004-12-14 16:01:29 +00001213 III. MISCELLANEOUS
1214
1215 - The BDF driver no longer converts all returned bitmaps with a
1216 depth of 2bpp or 4bpp to a depth of 8bpp. The documentation has
1217 not mentioned this explicitly, but implementors might have
1218 relied on this after looking into the source files.
1219
Werner Lembergc9114b92005-02-10 08:18:27 +00001220 - A new option `--ftversion' has been added to freetype-config to
1221 return the FreeType version.
1222
Werner Lemberga37745b2005-03-23 16:45:24 +00001223 - The memory debugger has been updated to dump allocation
1224 statistics on all allocation sources in the library. This is
1225 useful to spot greedy allocations when loading and processing
1226 fonts.
David Turner58609c42005-03-15 23:31:48 +00001227
Werner Lemberga37745b2005-03-23 16:45:24 +00001228 - We removed a huge array of constant pointers to constant strings
1229 in the `psnames' module. The problem was that compilations in
1230 PIC mode (i.e., when generating a Unix shared object/dll) put
1231 the array into the non-shared writable section of the library
David Turner58609c42005-03-15 23:31:48 +00001232 since absolute pointers are not relocatable by nature.
David Turnere6bb9532005-12-23 13:32:06 +00001233
Werner Lemberga37745b2005-03-23 16:45:24 +00001234 This reduces the memory consumption by approximately 16KByte per
1235 process linked to FreeType. We now also store the array in a
1236 compressed form (as a trie) which saves about 20KByte of code as
1237 well.
David Turnerdb3faff2003-09-11 19:58:19 +00001238
Werner Lemberge623bfa2005-05-19 13:51:26 +00001239 - Kirill Smelkov provided patches to make src/raster/ftraster.c
Werner Lembergf9fccbe2005-05-19 07:20:24 +00001240 compile stand-alone again.
1241
Werner Lembergebf55852005-03-16 01:49:54 +00001242
1243======================================================================
1244
Werner Lemberg94168f02006-05-11 07:07:09 +00001245CHANGES BETWEEN 2.1.9 and 2.1.8
Werner Lemberge95365b2004-04-24 14:43:37 +00001246
1247 I. IMPORTANT BUG FIXES
1248
1249 - The function `FT_Get_CharMap_Index' was only declared, without
1250 any real code. For consistency, it has been renamed to
1251 `FT_Get_Charmap_Index'. (This function is needed to implement
1252 cmap caches.)
1253
Werner Lemberg7d62f522004-06-04 22:30:10 +00001254 - `FT_Outline_Get_BBox' sometimes returned incorrect values for
Werner Lemberg8ef41832004-06-22 12:28:17 +00001255 conic outlines (e.g., for TrueType fonts).
Werner Lemberg7d62f522004-06-04 22:30:10 +00001256
1257 - Handling of `bhed' table has been fixed.
Werner Lemberge95365b2004-04-24 14:43:37 +00001258
Werner Lemberg11785f52004-06-21 23:32:31 +00001259 - The TrueType driver with enabled byte code interpreter sometimes
1260 returned artifacts due to incorrect rounding. This bug has been
1261 introduced after version 2.1.4.
1262
Werner Lemberg8ef41832004-06-22 12:28:17 +00001263 - The BDF driver dropped the last glyph in the font.
1264
1265 - The BDF driver now uses the DEFAULT_CHAR property (if available)
1266 to select a glyph shape for the undefined glyph.
1267
Werner Lemberg43f0e262004-07-17 16:45:21 +00001268 - The stroker failed for closed outlines and single points.
1269
Werner Lemberg11785f52004-06-21 23:32:31 +00001270
Werner Lembergcdb6e702004-04-26 08:09:30 +00001271 II. IMPORTANT CHANGES
1272
1273 - George Williams contributed code to handle Apple's font
1274 distortion technology found in GX fonts (`avar', `cvar', `fvar',
1275 and `gvar' tables; the Multiple Masters API has been slightly
Werner Lemberg7d62f522004-06-04 22:30:10 +00001276 extended to cope with the new functionality).
1277
Werner Lembergfefd8742004-06-12 13:21:20 +00001278 - The `FT_GlyphSlotRec' structure has been extended: The elements
Werner Lemberg7d62f522004-06-04 22:30:10 +00001279 `lsb_delta' and `rsb_delta' give the difference between hinted
1280 and unhinted left and right side bearings if autohinting is
1281 active. Using those values can improve the inter-letter spacing
Werner Lembergfefd8742004-06-12 13:21:20 +00001282 considerably. See the documentation of `FT_GlyphSlotRec' and
Werner Lemberg7d62f522004-06-04 22:30:10 +00001283 the `ftstring' demo program how to use it.
Werner Lembergcdb6e702004-04-26 08:09:30 +00001284
Werner Lemberg43f0e262004-07-17 16:45:21 +00001285 - Loading TrueType and Type 1 fonts has been made much faster.
1286
1287 - The stroker is no longer experimental (but the cache subsystem
1288 still is).
1289
Werner Lembergcdb6e702004-04-26 08:09:30 +00001290
Werner Lembergeab92f12004-04-29 05:59:49 +00001291 III. MISCELLANEOUS
1292
1293 - A new documentation file `formats.txt' describes various font
1294 formats supported (and not supported) by FreeType.
1295
1296
Werner Lemberge95365b2004-04-24 14:43:37 +00001297======================================================================
1298
Werner Lemberg94168f02006-05-11 07:07:09 +00001299CHANGES BETWEEN 2.1.8 and 2.1.7
Werner Lemberg51ecb692003-11-13 10:19:27 +00001300
1301 I. IMPORTANT BUG FIXES
1302
Werner Lemberg4ff243d2003-11-25 09:30:57 +00001303 - The native TrueType hinter contained some bugs which prevented
1304 some fonts to be rendered correctly, most notably Legendum.otf.
1305
Werner Lembergba80d612004-04-16 09:56:30 +00001306 - The PostScript hinter now produces improved results.
Werner Lemberg460355a2004-02-24 07:52:45 +00001307
Werner Lemberg4ff243d2003-11-25 09:30:57 +00001308 - The linear advance width and height values were incorrectly
1309 rounded, making them virtually unusable if not loaded with
1310 FT_LOAD_LINEAR_DESIGN.
1311
Werner Lemberg80cfbd72003-12-26 07:26:08 +00001312 - Indexing CID-keyed CFF fonts is now working: The glyph index is
1313 correctly treated as a CID, similar to FreeType's CID driver
Werner Lemberg460355a2004-02-24 07:52:45 +00001314 module. Note that CID CMap support is still missing.
Werner Lembergb36d4a52003-12-12 15:38:39 +00001315
Werner Lembergc78df1e2004-04-21 07:36:38 +00001316 - The FT_FACE_FLAGS_GLYPH_NAMES flag is now set correctly for all
1317 font formats.
Werner Lemberg7f1458a2003-12-17 21:57:56 +00001318
Werner Lemberg80cfbd72003-12-26 07:26:08 +00001319 - Some subsetted Type 1 fonts weren't parsed correctly. This bug
Werner Lemberg9cef4792004-02-08 09:07:08 +00001320 has been introduced in 2.1.7. In summary, the Type 1 parser has
1321 become more robust.
Werner Lemberg48b6ddb2003-12-22 23:01:20 +00001322
Werner Lembergc78df1e2004-04-21 07:36:38 +00001323 - Non-decimal numbers weren't parsed correctly in PS fonts.
1324
Werner Lemberg48b6ddb2003-12-22 23:01:20 +00001325 - The WinFNT driver now correctly reports FT_ENCODING_NONE for all
Werner Lemberg80cfbd72003-12-26 07:26:08 +00001326 but one encoding. Use the new FT_WinFNT_ID_XXX values together
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001327 with `FT_Get_WinFNT_Header' to get the WinFNT charset ID.
Werner Lemberg48b6ddb2003-12-22 23:01:20 +00001328
Werner Lemberg9914b972004-01-02 16:33:04 +00001329 - The descender metrics (face->size->metrics.descender) for WinFNT
1330 bitmap fonts had the wrong sign.
1331
Werner Lembergc78df1e2004-04-21 07:36:38 +00001332 - The (emulated) `seac' support for CFF fonts was broken.
Werner Lemberg5972e9a2004-02-01 00:49:56 +00001333
Werner Lembergc78df1e2004-04-21 07:36:38 +00001334 - The `flex' operator didn't work for CFF fonts.
Werner Lemberg5972e9a2004-02-01 00:49:56 +00001335
Werner Lemberg460355a2004-02-24 07:52:45 +00001336 - PS glyphs which use the `hintmask' operator haven't been
1337 rendered correctly in some cases.
Werner Lemberga5724ef2004-02-21 16:47:20 +00001338
Werner Lemberge0c50442004-02-08 16:30:37 +00001339 - Metrics for BDF and PCF bitmap font formats have been fixed.
1340
Werner Lembergba80d612004-04-16 09:56:30 +00001341 - Autohinting is now disabled for glyphs which are vertically
1342 distorted or mirrored (using a transformation matrix). This
1343 fixes a bug which produced zero-height glyphs.
1344
Werner Lemberg53a1edd2004-02-08 22:45:48 +00001345 - The `freetype-config' script now handles --prefix and
1346 --exec-prefix correctly; it also returns the proper --rpath (or
1347 -R) value if FreeType has been built as a shared library.
1348
Werner Lemberg51ecb692003-11-13 10:19:27 +00001349
1350 II. IMPORTANT CHANGES
1351
1352 - Both PCF and BDF drivers now handle the SETWIDTH_NAME and
1353 ADD_STYLE_NAME properties. Values are appended to
1354 face->style_name; example: `Bold SemiCondensed'.
1355
Werner Lembergdfa46192004-03-05 09:26:24 +00001356 - The PCF driver now handles bitmap fonts compressed with the LZW
1357 algorithm (extension .pcf.Z, compressed with `compress').
1358
Werner Lemberg7f1458a2003-12-17 21:57:56 +00001359 - A new API function `FT_Get_CMap_Language_ID' (declared in
1360 `tttables.h') is available to get the language ID of a
1361 TrueType/SFNT cmap.
1362
Werner Lembergef512e32004-01-23 19:52:40 +00001363 - The hexadecimal format of data after the `StartData' command in
1364 CID-keyed Type 1 fonts is now supported. While this can't occur
1365 in file-based fonts, it can happen in document-embedded
1366 resources of PostScript documents.
1367
Werner Lembergdfa46192004-03-05 09:26:24 +00001368 - Embedded bitmaps in SFNT-based CFF fonts are now supported.
1369
Werner Lemberg460355a2004-02-24 07:52:45 +00001370 - A simple API is now available to control FreeType's tracing
1371 mechanism if compiled with FT_DEBUG_LEVEL_TRACE. See the file
1372 `ftdebug.h' for more details.
1373
Werner Lemberg675431b2004-02-25 21:17:49 +00001374 - YAMATO Masatake contributed improved handling of MacOS resource
1375 forks on non-MacOS platforms (for example, Linux can mount MacOS
1376 file systems).
1377
Werner Lemberge2455ba2004-02-26 21:56:27 +00001378 - Support for MacOS has been improved; there is now a new function
1379 `FT_New_Face_From_FSSpec' similar to `FT_New_Face' except that
1380 it accepts an FSSpec instead of a path.
1381
Werner Lemberg80cfbd72003-12-26 07:26:08 +00001382 - The cache sub-system has been rewritten.
1383
1384 - There is now support for deinstallation of faces.
1385
1386 - A new API function `FTC_Manager_RemoveFaceID' has been added
1387 to delete all `idle' nodes that correspond to a given
1388 FTC_FaceID. All `locked' nodes (i.e., those with a reference
1389 count > 0), will be modified to prevent them from appearing in
1390 further lookups (they will be cleaned normally when their
1391 reference count reaches 0).
1392
1393 - There is now support for point scaling (i.e., providing
1394 character sizes in points + dpis, instead of pixels).
1395
1396 - Three abstract cache classes are now available:
1397
1398 FTC_GCache: Used to store one glyph item per cache node,
1399 with the ability to group common attributes into
1400 `families'. This replaces the old
1401 FTC_GlyphCache class.
1402
1403 FTC_ICache: Used to store one FT_Glyph per cache node. This
1404 extends FTC_GCache. Family definition, family
1405 comparison, and glyph loading are however left
1406 to sub-classes.
1407
1408 FTC_SCache: Used to store up to 16 small bitmaps per cache
1409 node. This extends FTC_GCache. Family
1410 definition, family comparison and glyph loading
1411 are however left to sub-classes.
1412
1413 - The file `src/cache/ftcbasic.c' implements:
1414
1415 FTC_ImageCache: Extends FTC_ICache; implements family
1416 definitions and glyph loading similar to the
1417 old API.
1418
1419 FTC_SBitCache: Extends FTC_SCache, implements family
1420 definitions and glyph loading similar to the
1421 old API
1422
1423 Client applications should be able to extend FTC_GCache,
1424 FTC_ICache, or FTC_SCache much more easily (i.e., less code to
1425 write, and less callbacks). For example, one could envision
1426 caches that are capable of storing transformed (obliqued),
1427 stroked, emboldened, or colored glyph images. Use
1428 `ftcbasic.c' as an example.
1429
1430 - All public APIs are now in `include/freetype/ftcache.h', (to
1431 be accessed as `FT_CACHE_H'). The contents of
1432 `include/freetype/cache/' is only needed by applications that
1433 wish to implement their own caches.
1434
1435 - There were some major performance improvements through the use
1436 of various programming tricks. Cache hits are up to 70%
1437 faster than in the old code.
1438
Werner Lembergb4142d52007-01-17 12:45:26 +00001439 - The FTC_CMapCache has been simplified. Charmaps can only be
Werner Lemberg80cfbd72003-12-26 07:26:08 +00001440 accessed by index right now. There is also a new API named
1441 `FT_Charmap_GetIndex' for this purpose.
1442
1443 - The demo programs have been updated to the new code. The
1444 previous versions will not work with the current one.
1445
Werner Lemberg2630e542004-03-20 14:26:38 +00001446 - Using an invalid face index in FT_Open_Face and friends now
1447 causes an error even if the font contains a single face only.
1448
Werner Lemberg51ecb692003-11-13 10:19:27 +00001449
Werner Lemberge1075142003-12-16 06:04:44 +00001450 III. MISCELLANEOUS
1451
Werner Lemberg110246c2006-09-26 21:55:44 +00001452 - Wolfgang Domröse contributed support files for building FreeType
Werner Lembergb066c152003-12-16 06:42:11 +00001453 on the Atari using the PureC compiler. Note that the Atari is a
1454 16bit platform.
Werner Lemberge1075142003-12-16 06:04:44 +00001455
Werner Lemberg9cef4792004-02-08 09:07:08 +00001456 - Vitaliy Pasternak contributed project files for VS.NET 2003.
1457
Werner Lemberge1075142003-12-16 06:04:44 +00001458
Werner Lemberg51ecb692003-11-13 10:19:27 +00001459======================================================================
1460
Werner Lemberg94168f02006-05-11 07:07:09 +00001461CHANGES BETWEEN 2.1.7 and 2.1.6
Werner Lemberge42dbce2003-11-09 08:37:14 +00001462
1463 I. IMPORTANT BUG FIXES
1464
1465 - Updated to newest libtool version, fixing build problems on
1466 various platforms.
1467
1468 - On Unix platforms, `make install' didn't copy the correct
1469 `ftconfig.h' file.
1470
1471 Note that version 2.1.7 contains the same library C source code as
1472 version 2.1.6.
1473
1474
1475======================================================================
1476
Werner Lemberg94168f02006-05-11 07:07:09 +00001477CHANGES BETWEEN 2.1.6 and 2.1.5
David Turnerdb3faff2003-09-11 19:58:19 +00001478
1479 I. IMPORTANT BUG FIXES
1480
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001481 - The PFR font driver didn't load kerning tables correctly, and
1482 the functions in FT_PFR_H didn't work at all.
David Turnerdb3faff2003-09-11 19:58:19 +00001483
Werner Lemberg99ee4992003-09-20 17:23:36 +00001484 - Type 1 font files in binary format (PFB) with an end-of-file
1485 indicator weren't accepted by the FreeType engine.
1486
Werner Lemberg4795b362003-10-23 16:24:10 +00001487 - Fonts which contain /PaintType and /StrokeWidth no longer cause
1488 a segfault. This bug has been introduced in version 2.1.5.
1489
1490 - Fonts loaded with FT_LOAD_RENDER no longer cause strange
1491 results. This bug has been introduced in version 2.1.5.
1492
1493 - Some Windows (bitmap) FNT/FON files couldn't be handled
1494 correctly.
1495
Werner Lemberge42dbce2003-11-09 08:37:14 +00001496
David Turnerdb3faff2003-09-11 19:58:19 +00001497 II. IMPORTANT CHANGES
1498
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001499 - The internal module API has been heavily changed in favor of
1500 massive simplifications within the font engine. This also means
1501 that authors of third-party modules must adapt their code to the
Werner Lemberge42dbce2003-11-09 08:37:14 +00001502 new scheme.
1503
1504 NOTE: THE NEW SCHEME IS NOT COMPLETED YET. PLEASE WAIT UNTIL A
1505 FINAL ANNOUNCEMENT!
David Turnerdb3faff2003-09-11 19:58:19 +00001506
Werner Lemberg4795b362003-10-23 16:24:10 +00001507 - The PostScript parser has been enhanced to handle comments and
1508 strings correctly. Additionally, more syntax forms are
1509 recognized.
1510
Werner Lemberge42dbce2003-11-09 08:37:14 +00001511 - Added the optional unpatented hinting system for TrueType. It
1512 allows typefaces which need hinting to produce correct glyph
1513 forms (e.g., Chinese typefaces from Dynalab) to work acceptably
1514 without infringing Apple patents. This system is compiled only
1515 if TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING is defined in
1516 ftoption.h (activated by default).
David Turnerdb3faff2003-09-11 19:58:19 +00001517
Werner Lemberge42dbce2003-11-09 08:37:14 +00001518
1519 III. MISCELLANEOUS
1520
1521 - There is now a guard in the public header files to protect
1522 against inclusion of freetype.h from FreeType 1.
1523
1524 - Direct inclusion of freetype.h and other public header files no
1525 longer works. You have to use the documented scheme
1526
1527 #include <ft2build.h>
1528 #include FT_FREETYPE_H
1529
1530 to load freetype.h with a symbolic name. This protects against
1531 renaming of public header files (which shouldn't happen but
1532 actually has, avoiding two public header files with the same
1533 name).
1534
1535
1536======================================================================
David Turner7543f392003-09-01 21:18:03 +00001537
Werner Lemberg94168f02006-05-11 07:07:09 +00001538CHANGES BETWEEN 2.1.5 and 2.1.4
Werner Lembergf9d864a2003-07-25 05:57:21 +00001539
Werner Lembergf9d864a2003-07-25 05:57:21 +00001540 I. IMPORTANT BUG FIXES
1541
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001542 - Parsing the /CIDFontName field now removes the leading slash to
Werner Lembergf9d864a2003-07-25 05:57:21 +00001543 be in sync with other font drivers.
1544
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001545 - gzip support was buggy. Some fonts could not be read.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001546
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001547 - Fonts which have nested subglyphs more than one level deep no
Werner Lembergf9d864a2003-07-25 05:57:21 +00001548 longer cause a segfault.
1549
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001550 - Creation of synthetic cmaps for fonts in CFF format was broken
Werner Lembergf9d864a2003-07-25 05:57:21 +00001551 partially.
1552
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001553 - Numeric font dictionary entries for synthetic fonts are no
1554 longer overwritten.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001555
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001556 - The font matrix wasn't applied to the advance width for Type1,
Werner Lemberg4795b362003-10-23 16:24:10 +00001557 CID, and CFF fonts. This caused problems when loading certain
1558 synthetic Type 1 fonts like `Helvetica Narrow'.
Werner Lemberge8ff7692003-08-06 04:40:48 +00001559
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001560 - The test for the charset registry in BDF and PCF fonts is now
Werner Lembergf9d864a2003-07-25 05:57:21 +00001561 case-insensitive.
1562
Werner Lemberg4795b362003-10-23 16:24:10 +00001563 - FT_Vector_Rotate sometimes returned strange values due to
1564 rounding errors.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001565
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001566 - The PCF driver now returns the correct number of glyphs
1567 (including an artificial `notdef' glyph at index 0).
Werner Lembergf9d864a2003-07-25 05:57:21 +00001568
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001569 - FreeType now supports buggy CMaps which are contained in many
1570 CJK fonts from Dynalab.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001571
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001572 - Opening an invalid font on a Mac caused a segfault due to
Werner Lembergf9d864a2003-07-25 05:57:21 +00001573 double-freeing memory.
1574
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001575 - BDF fonts with more than 32768 glyphs weren't supported
1576 properly.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001577
1578
1579 II. IMPORTANT CHANGES
1580
Werner Lembergf9d864a2003-07-25 05:57:21 +00001581 - Accessing bitmap font formats has been synchronized. To do that
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001582 the FT_Bitmap_Size structure has been extended to contain new
Werner Lembergf9d864a2003-07-25 05:57:21 +00001583 fields `size', `x_ppem', and `y_ppem'.
1584
1585 - The FNT driver now returns multiple faces, not multiple strikes.
1586
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001587 - The `psnames' module has been updated to the Adobe Glyph List
Werner Lembergf9d864a2003-07-25 05:57:21 +00001588 version 2.0.
1589
1590 - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
1591
1592 - The algorithm for guessing the font style has been improved.
1593
Werner Lemberg7f1458a2003-12-17 21:57:56 +00001594 - For fonts in SFNT format, root->height is no longer increased if
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001595 the line gap is zero. There exist fonts (containing e.g. form
1596 drawing characters) which intentionally have a zero line gap
1597 value.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001598
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001599 - ft_glyph_bbox_xxx flags are now deprecated in favour of
Werner Lembergf9d864a2003-07-25 05:57:21 +00001600 FT_GLYPH_BBOX_XXX.
1601
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001602 - ft_module_xxx flags are now deprecated in favour of
1603 FT_MODULE_XXX.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001604
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001605 - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now
1606 deprecated in favour of
1607 FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB} -- those encodings
1608 are not specific to Microsoft.
Werner Lemberged2a8df2003-09-01 07:06:06 +00001609
Werner Lembergf9d864a2003-07-25 05:57:21 +00001610
1611 III. MISCELLANEOUS
1612
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001613 - The autohinter has been further improved; for example, `m'
1614 glyphs now retain its vertical symmetry.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001615
Werner Lembergf9d864a2003-07-25 05:57:21 +00001616 - Partial support of Mac fonts on non-Mac platforms.
1617
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001618 - `make refdoc' (after first `make') builds the HTML
1619 documentation. You need Python for this.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001620
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001621 - The make build system should now work more reliably on DOS-like
Werner Lembergf9d864a2003-07-25 05:57:21 +00001622 platforms.
1623
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001624 - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has
1625 been added.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001626
1627 - Better VMS build support.
1628
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001629 - Support for the pkg-config package by providing a `freetype.pc'
Werner Lembergf9d864a2003-07-25 05:57:21 +00001630 file.
1631
1632 - New configure option --with-old-mac-fonts for Darwin.
1633
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001634 - Some source files have been renamed (mainly to fit into the 8.3
Werner Lembergf9d864a2003-07-25 05:57:21 +00001635 naming scheme).
1636
1637
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001638======================================================================
Werner Lembergf9d864a2003-07-25 05:57:21 +00001639
Werner Lemberg94168f02006-05-11 07:07:09 +00001640CHANGES BETWEEN 2.1.4 and 2.1.3
David Turner9acb09e2003-01-24 08:30:36 +00001641
1642 I. IMPORTANT BUG FIXES
1643
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001644 - Updated to newest libtool version, fixing build problems on
1645 various platforms.
David Turner9acb09e2003-01-24 08:30:36 +00001646
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001647 - A fix in the Gzip stream reader: It couldn't read certain .gz
1648 files properly due to a small typo. In certain cases, FreeType
1649 could also loop endlessly when trying to load tiny gzipped
1650 files.
David Turner9acb09e2003-01-24 08:30:36 +00001651
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001652 - The configure script now tries to use the system-wide zlib when
1653 it finds one (instead of the copy found in src/gzip). And
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001654 `freetype-config' has been updated to return relevant flags in
1655 this case when invoked with `--libs' (e.g. `-lzlib').
David Turner9acb09e2003-01-24 08:30:36 +00001656
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001657 - Certain fonts couldn't be loaded by 2.1.3 because they lacked a
1658 Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously
1659 rejected them.
David Turner9acb09e2003-01-24 08:30:36 +00001660
Werner Lemberga16c4a72003-04-21 13:30:27 +00001661 - The CFF loader was modified to accept fonts which only contain a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001662 subset of their reference charset. This prevented the correct
1663 use of PDF-embedded fonts.
David Turner9acb09e2003-01-24 08:30:36 +00001664
Werner Lemberga16c4a72003-04-21 13:30:27 +00001665 - The logic to detect Unicode charmaps has been modified. This is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001666 required to support fonts which include both 16-bit and 32-bit
1667 charmaps (like very recent asian ones) using the new 10 and 12
1668 SFNT formats.
David Turner9acb09e2003-01-24 08:30:36 +00001669
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001670 - The TrueType loader now limits the depth of composite glyphs.
1671 This is necessary to prevent broken fonts to break the engine by
1672 blowing the stack with recursive glyph definitions.
David Turner9acb09e2003-01-24 08:30:36 +00001673
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001674 - The CMap cache is now capable of managing UCS-4 character codes
1675 that are mapped through extended charmaps in recent
1676 TrueType/OpenType fonts.
David Turnerb848b682003-02-25 21:44:11 +00001677
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001678 - The cache sub-system now properly manages out-of-memory
1679 conditions instead of blindly reporting them to the caller.
1680 This means that it will try to empty the cache before restarting
1681 its allocations to see if that can help.
David Turner66cbc202003-03-20 07:04:40 +00001682
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001683 - The PFR driver didn't return the list of available embedded
1684 bitmaps properly.
David Turnerb848b682003-02-25 21:44:11 +00001685
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001686 - There was a nasty memory leak when using embedded bitmaps in
1687 certain font formats.
David Turnerb6b63372003-04-09 06:55:57 +00001688
Werner Lemberga16c4a72003-04-21 13:30:27 +00001689
David Turner9acb09e2003-01-24 08:30:36 +00001690 II. IMPORTANT CHANGES
1691
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001692 - David Chester contributed some enhancements to the auto-hinter
1693 that significantly increase the quality of its output. The
1694 Postscript hinter was also improved in several ways.
David Turner9acb09e2003-01-24 08:30:36 +00001695
Werner Lemberga16c4a72003-04-21 13:30:27 +00001696 - The FT_RENDER_MODE_LIGHT render mode was implemented.
David Turner9acb09e2003-01-24 08:30:36 +00001697
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001698 - A new API function called `FT_Get_BDF_Property' has been added
1699 to FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font
1700 files. THIS IS STILL EXPERIMENTAL, since it hasn't been
1701 properly tested yet.
David Turner9acb09e2003-01-24 08:30:36 +00001702
Werner Lemberga16c4a72003-04-21 13:30:27 +00001703 - A Windows FNT specific API has been added, mostly to access font
1704 headers. This is used by Wine.
David Turner9acb09e2003-01-24 08:30:36 +00001705
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001706 - TrueType tables without an `hmtx' table are now tolerated when
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001707 an incremental interface is used. This happens for certain
1708 Type42 fonts passed from Ghostscript to FreeType.
David Turner9acb09e2003-01-24 08:30:36 +00001709
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001710 - The PFR font driver is now capable of returning the font family
1711 and style names when they are available (instead of the sole
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001712 `FontID'). This is performed by parsing an *undocumented*
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001713 portion of the font file!
Werner Lemberga16c4a72003-04-21 13:30:27 +00001714
David Turnerb848b682003-02-25 21:44:11 +00001715
David Turner9acb09e2003-01-24 08:30:36 +00001716 III. MISCELLANEOUS
1717
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001718 - The path stroker in FT_STROKER_H has entered beta stage. It now
1719 works very well, but its interface might change a bit in the
1720 future. More on this in later releases.
David Turner9acb09e2003-01-24 08:30:36 +00001721
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001722 - The documentation for FT_Size_Metrics didn't appear properly in
1723 the API reference.
David Turner9acb09e2003-01-24 08:30:36 +00001724
Werner Lemberga16c4a72003-04-21 13:30:27 +00001725 - The file docs/VERSION.DLL has been updated to explain versioning
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001726 with FreeType (i.e., comparing release/libtool/so numbers, and
1727 how to use them in autoconf scripts).
David Turner9acb09e2003-01-24 08:30:36 +00001728
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001729 - The installation documentation has been seriously revamped.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001730 Everything is now in the `docs' directory.
Werner Lemberga16c4a72003-04-21 13:30:27 +00001731
David Turner66cbc202003-03-20 07:04:40 +00001732
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001733======================================================================
Werner Lemberga16c4a72003-04-21 13:30:27 +00001734
Werner Lemberg94168f02006-05-11 07:07:09 +00001735CHANGES BETWEEN 2.1.3 and 2.1.2
David Turner86e6a712002-08-29 23:18:56 +00001736
1737 I. IMPORTANT BUG FIXES
1738
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001739 - FT_Vector_Transform had been incorrectly modified in 2.1.2,
1740 resulting in incorrect transformations being applied (for
1741 example, rotations were processed in opposite angles).
David Turner86e6a712002-08-29 23:18:56 +00001742
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001743 - The format 8 and 12 TrueType charmap enumeration routines have
1744 been fixed (FT_Get_Next_Char returned invalid values).
David Turner86e6a712002-08-29 23:18:56 +00001745
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001746 - The PFR font driver returned incorrect advance widths if the
1747 outline and metrics resolution defined in the font file were
1748 different.
David Turner86e6a712002-08-29 23:18:56 +00001749
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001750 - FT_Glyph_To_Bitmap now returns successfully when called with an
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001751 FT_BitmapGlyph argument (it previously returned an error).
David Turner86e6a712002-08-29 23:18:56 +00001752
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001753 - A bug in the Type 1 loader that prevented valid font bounding
1754 boxes to be loaded from multiple master fonts.
David Turner86e6a712002-08-29 23:18:56 +00001755
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001756 - The SFNT validation code has been rewritten. FreeType can now
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001757 load `broken' fonts that were usable on Windows, but not with
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001758 previous versions of the library.
David Turner86e6a712002-08-29 23:18:56 +00001759
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001760 - The computation of bearings in the BDF driver has been fixed.
David Turner86e6a712002-08-29 23:18:56 +00001761
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001762 - The Postscript hinter crashed when trying to hint certain glyphs
1763 (more precisely, when trying to apply hints to an empty glyph
1764 outline).
David Turnerdb3d5c12002-09-18 07:53:22 +00001765
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001766 - The TrueType glyph loader now supports composites in `Apple
1767 format' (they differ slightly from Microsoft/OpenType ones in
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001768 the way transformation offsets are computed).
Werner Lemberg98add9e2002-09-18 11:32:12 +00001769
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001770 - FreeType was very slow at opening certain asian CID/CFF fonts,
1771 due to fixed increment in dynamic array re-allocations. This
1772 has been changed to exponential behaviour to get acceptable
1773 performance.
Werner Lemberga16c4a72003-04-21 13:30:27 +00001774
1775
David Turner86e6a712002-08-29 23:18:56 +00001776
David Turnerb0b8df62002-09-25 00:10:27 +00001777 II. IMPORTANT CHANGES
David Turner86e6a712002-08-29 23:18:56 +00001778
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001779 - The PCF driver now supports gzip-compressed font files natively.
1780 This means that you will be able to use all these bitmap fonts
1781 that come with XFree86 with FreeType (and libXft/libXft2, by
1782 extension).
David Turner6048e3d2002-11-13 23:28:08 +00001783
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001784 - The automatic and postscript hinters have both been updated.
1785 This results in a relatively important increase of rendering
Werner Lembergb4142d52007-01-17 12:45:26 +00001786 quality since many nasty defaults have been suppressed. Please
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001787 visit the web page:
David Turnerdb3d5c12002-09-18 07:53:22 +00001788
David Turner6048e3d2002-11-13 23:28:08 +00001789 http://www.freetype.org/hinting/smooth-hinting.html
David Turnerdb3d5c12002-09-18 07:53:22 +00001790
Werner Lemberg98add9e2002-09-18 11:32:12 +00001791 for additional details on this topic.
David Turnerdb3d5c12002-09-18 07:53:22 +00001792
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001793 - The `load_flags' parameter of `FT_Load_Glyph' is now an FT_Int32
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001794 (instead of just being an FT_Int). This breaks source and
1795 binary compatibility for 16bit systems only, while retaining
1796 both of them for 32 and 64 bit ones.
David Turner86e6a712002-08-29 23:18:56 +00001797
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001798 Some new flags have been added consequently:
David Turner86e6a712002-08-29 23:18:56 +00001799
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001800 FT_LOAD_NO_AUTOHINT :: Disable the use of the auto-hinter
1801 (but not native format hinters).
David Turner86e6a712002-08-29 23:18:56 +00001802
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001803 FT_LOAD_TARGET_NORMAL :: Hint and render for normal
1804 anti-aliased displays.
David Turner86e6a712002-08-29 23:18:56 +00001805
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001806 FT_LOAD_TARGET_MONO :: Hint and render for 1-bit displays.
David Turner86e6a712002-08-29 23:18:56 +00001807
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001808 FT_LOAD_TARGET_LCD :: Hint and render for horizontal RGB or
1809 BGR sub-pixel displays (like LCD
1810 screens). THIS IS STILL
1811 EXPERIMENTAL!
David Turner86e6a712002-08-29 23:18:56 +00001812
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001813 FT_LOAD_TARGET_LCD_V :: Same as FT_LOAD_TARGET_LCD, for
1814 vertical sub-pixel displays (like
1815 rotated LCD screens). THIS IS STILL
1816 EXPERIMENTAL!
David Turner86e6a712002-08-29 23:18:56 +00001817
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001818 FT_LOAD_MONOCHROME is still supported, but only affects
1819 rendering, not the hinting.
David Turner86e6a712002-08-29 23:18:56 +00001820
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001821 Note that the `ftview' demo program available in the `ft2demos'
1822 package has been updated to support LCD-optimized display on
1823 non-paletted displays (under Win32 and X11).
David Turnerb0b8df62002-09-25 00:10:27 +00001824
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001825 - The PFR driver now supports embedded bitmaps (all formats
1826 supported), and returns correct kerning metrics for all glyphs.
David Turner072f7f82002-10-05 15:00:36 +00001827
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001828 - The TrueType charmap loader now supports certain `broken' fonts
1829 that load under Windows without problems.
David Turnerb0b8df62002-09-25 00:10:27 +00001830
Werner Lembergcfd5dec2002-09-27 18:17:17 +00001831 - The cache API has been slightly modified (it's still a beta!):
David Turnerb0b8df62002-09-25 00:10:27 +00001832
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001833 - The type FTC_ImageDesc has been removed; it is now replaced
1834 by FTC_ImageTypeRec. Note that one of its fields is a
1835 `load_flag' parameter for FT_Load_Glyph.
David Turnerb0b8df62002-09-25 00:10:27 +00001836
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001837 - The field `num_grays' of FT_SBitRec has been changed to
1838 `max_grays' in order to fit within a single byte. Its
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001839 maximum value is thus 255 (instead of 256 as previously).
David Turnerb0b8df62002-09-25 00:10:27 +00001840
1841
1842 III. MISCELLANEOUS
1843
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001844 - Added support for the DESTDIR variable during `make install'.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001845 This simplifies packaging of FreeType.
David Turnerb0b8df62002-09-25 00:10:27 +00001846
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001847 - Included modified copies of the ZLib sources in `src/gzip' in
1848 order to support gzip-compressed PCF fonts. We do not use the
1849 system-provided zlib for now, though this is a probable
1850 enhancement for future releases.
David Turner6048e3d2002-11-13 23:28:08 +00001851
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001852 - The DocMaker tool used to generate the on-line API reference has
1853 been completely rewritten. It is now located in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001854 `src/tools/docmaker/docmaker.py'. Features:
David Turnerb0b8df62002-09-25 00:10:27 +00001855
1856 - better cross-referenced output
1857 - more polished output
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001858 - uses Python regular expressions (though it didn't speed the
David Turnerb0b8df62002-09-25 00:10:27 +00001859 program)
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001860 - much more modular structure, which allows for different
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001861 `backends' in order to generate HTML, XML, or whatever
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001862 format.
David Turnerb0b8df62002-09-25 00:10:27 +00001863
1864 One can regenerate the API reference by calling:
1865
1866 python src/tools/docmaker/docmaker.py \
1867 --prefix=ft2 \
1868 --title=FreeType-2.1.3 \
1869 --output=<outputdirectory>
1870 include/freetype/*.h \
1871 include/freetype/config/*.h \
1872 include/freetype/cache/*.h
1873
1874 - A new, experimental, support for incremental font loading (i.e.,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001875 loading of fonts where the glyphs are not in the font file
1876 itself, but provided by an external component, like a Postscript
1877 interpreter) has been added by Graham Asher. This is still work
1878 in progress, however.
David Turnerb0b8df62002-09-25 00:10:27 +00001879
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001880 - A new, EXPERIMENTAL, path stroker has been added. It doesn't
1881 suffer from severe rounding errors and treat bezier arcs
1882 directly. Still work in progress (i.e. not part of the official
1883 API). See the file <freetype/ftstroker.h> for some of the
1884 details.
David Turnerb0b8df62002-09-25 00:10:27 +00001885
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001886 - The massive re-formatting of sources and internal re-design is
1887 still under-way. Many internal functions, constants, and types
1888 have been renamed.
David Turnerb0b8df62002-09-25 00:10:27 +00001889
David Turner86e6a712002-08-29 23:18:56 +00001890
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001891======================================================================
David Turner86e6a712002-08-29 23:18:56 +00001892
Werner Lemberg94168f02006-05-11 07:07:09 +00001893CHANGES BETWEEN 2.1.2 and 2.1.1
David Turnerd490e372002-05-28 23:40:37 +00001894
1895 I. IMPORTANT BUG FIXES
1896
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001897 - Many font drivers didn't select a Unicode charmap by default
1898 when a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS
1899 options enabled), causing many applications to not be able to
1900 display text correctly with the 2.1.x releases.
David Turner86e6a712002-08-29 23:18:56 +00001901
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001902 - The PFR driver had a bug in its composite loading code that
1903 produces incorrectly placed accents with many fonts.
David Turner86e6a712002-08-29 23:18:56 +00001904
Werner Lemberg9cbb1662002-06-22 13:35:41 +00001905 - The Type42 driver crashed sometimes due to a nasty bug.
David Turner86e6a712002-08-29 23:18:56 +00001906
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001907 - The Type 1 custom encoding charmap didn't handle the case where
1908 the first glyph index wasn't 0.
David Turner38f8e892002-06-21 07:33:23 +00001909
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001910 - A serious typo in the TrueType composite loader produced
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001911 incorrectly placed glyphs in fonts like `Wingdings' and a few
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001912 others.
David Turner38f8e892002-06-21 07:33:23 +00001913
1914
1915 II. MISCELLANEOUS
1916
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001917 - The Win32 Visual C++ project file has been updated to include
1918 the PFR driver as well.
David Turner38f8e892002-06-21 07:33:23 +00001919
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001920 - `freetype.m4' is now installed by default by `make install' on
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001921 Unix systems.
David Turner38f8e892002-06-21 07:33:23 +00001922
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001923 - The function FT_Get_PS_Font_Info now works with CID and Type42
1924 fonts as well.
Werner Lemberg9cbb1662002-06-22 13:35:41 +00001925
David Turnera0d8abf2002-06-21 07:42:50 +00001926
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001927======================================================================
Werner Lemberg9cbb1662002-06-22 13:35:41 +00001928
Werner Lemberg94168f02006-05-11 07:07:09 +00001929CHANGES BETWEEN 2.1.1 and 2.1.0
David Turner38f8e892002-06-21 07:33:23 +00001930
1931 I. IMPORTANT BUG FIXES
1932
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001933 - The `version_info' returned by `freetype-config' in 2.1.0
1934 returned an invalid value. It now returns 9:1:3 (2.0.9 returned
1935 9:0:3).
David Turnerd490e372002-05-28 23:40:37 +00001936
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001937 - Version 2.1.0 couldn't be linked against applications on Win32
1938 and Amiga systems due to a new debug function that wasn't
1939 properly propagated to the system-specific directory in
1940 `builds'.
David Turnerd490e372002-05-28 23:40:37 +00001941
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001942 - Various MacOS and Mac OS X specific fixes.
David Turnerd490e372002-05-28 23:40:37 +00001943
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001944 - Fixed a bug in the TrueType charmap validation routines that
1945 made version 2.1.0 too restrictive -- many popular fonts have
1946 been rejected.
David Turnerd490e372002-05-28 23:40:37 +00001947
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001948 - There was still a very small difference between the monochrome
1949 glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the
1950 bytecode interpreter enabled. This was caused by an invalid
1951 flag setting in the TrueType glyph loader, making the rasterizer
Werner Lembergb4142d52007-01-17 12:45:26 +00001952 change its drop-out control mode. Now the results should
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001953 _really_ be completely identical.
David Turnerd490e372002-05-28 23:40:37 +00001954
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001955 - The TrueType name table loader has been improved to support many
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001956 popular though buggy Asian fonts. It now ignores empty name
1957 entries, invalid pointer offsets and a few other incorrect
1958 subtleties. Moreover, name strings are now loaded on demand,
1959 which reduces the memory load of many faces (e.g. the ARIAL.TTF
1960 font file contains a 10kByte name table with 70 names).
David Turnerd490e372002-05-28 23:40:37 +00001961
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001962 - Fixed a bug in the Postscript hinter that prevented family blues
David Turnerd490e372002-05-28 23:40:37 +00001963 substitution to happen correctly.
1964
1965
1966 II. NEW FEATURES
1967
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001968 - Three new font drivers in this release:
David Turnerd490e372002-05-28 23:40:37 +00001969
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001970 * A BDF font driver, contributed by Franco Zappa Nardelli,
1971 heavily modified by Werner Lemberg. It also supports
1972 anti-aliased bitmaps (using a slightly extended BDF format).
David Turnerd490e372002-05-28 23:40:37 +00001973
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001974 * A Type42 font driver, contributed by Roberto Alameda. It is
David Turnerb1d8f732002-06-10 22:41:57 +00001975 still experimental but seems to work relatively well.
David Turnerd490e372002-05-28 23:40:37 +00001976
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001977 * A PFR font driver, contributed by David Turner himself. It
1978 doesn't support PFR hinting -- note that BitStream has at
1979 least two patents on this format!
David Turnerd490e372002-05-28 23:40:37 +00001980
1981
David Turnerb1d8f732002-06-10 22:41:57 +00001982 III. MISCELLANEOUS
1983
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001984 - The cache sub-system has been optimized in important ways.
1985 Cache hits are now significantly faster. For example, using the
1986 CMap cache is about twice faster than calling FT_Get_Char_Index
1987 on most platforms. Similarly, using an SBit cache is about five
1988 times faster than loading the bitmaps from a bitmap file, and
1989 300 to 500 times faster than generating them from a scalable
1990 format.
David Turnerb1d8f732002-06-10 22:41:57 +00001991
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001992 Note that you should recompile your sources if you designed a
1993 custom cache class for the FT2 Cache subsystem, since the
1994 changes performed are source, but not binary, compatible.
David Turnerb1d8f732002-06-10 22:41:57 +00001995
1996
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001997======================================================================
David Turnerd490e372002-05-28 23:40:37 +00001998
Werner Lemberg94168f02006-05-11 07:07:09 +00001999CHANGES BETWEEN 2.1.0 and 2.0.9
David Turner498eed22002-04-15 12:01:10 +00002000
2001 I. IMPORTANT BUG FIXES
2002
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002003 - The TrueType bytecode interpreter has been fixed to produce
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002004 _exactly_ the same output as FreeType 1.x. Previous differences
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002005 were due to slightly distinct fixed-point computation routines
David Turner498eed22002-04-15 12:01:10 +00002006 used to perform dot products and vector length measurements.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002007
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002008 It seems that native TrueType hinting is _extremely_ sensitive
2009 to rounding errors. The required vector computation routines
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002010 have been optimized and placed within the `ttinterp.c' file.
David Turner498eed22002-04-15 12:01:10 +00002011
Werner Lemberg6e188b42002-04-17 22:42:13 +00002012 - Fixed the parsing of accelerator tables in the PCF font driver.
David Turnerd490e372002-05-28 23:40:37 +00002013
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002014 - Fixed the Type1 glyph loader routine used to compute the font's
David Turner11cfdd02002-04-17 09:37:59 +00002015 maximum advance width.
David Turner498eed22002-04-15 12:01:10 +00002016
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002017
David Turner498eed22002-04-15 12:01:10 +00002018 II. NEW FEATURES
2019
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002020 - The `configure' script used on Unix systems has been modified to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002021 check that GNU Make is being used to build the library.
2022 Otherwise, it will display a message proposing to use the
2023 GNUMAKE environment variable to name it.
David Turner498eed22002-04-15 12:01:10 +00002024
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002025 The Unix-specific file README.UNX has been modified accordingly.
2026
2027
David Turner498eed22002-04-15 12:01:10 +00002028 III. MISCELLANEOUS
2029
Werner Lemberg56c368c2005-06-04 23:00:25 +00002030 - The FreeType License in `docs/FTL.TXT' has been updated to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002031 include a proposed preferred disclaimer. If you are using
2032 FreeType in your products, you are encouraged (but not mandated)
2033 to use the following text in your documentation:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002034
2035 """
Werner Lemberg110246c2006-09-26 21:55:44 +00002036 Portions of this software are copyright © 1996-2002 The
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002037 FreeType Project (www.freetype.org). All rights reserved.
David Turner498eed22002-04-15 12:01:10 +00002038 """
2039
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002040 - The default size of the render pool has been reduced to 16kByte.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002041 This shouldn't result in any noticeable performance penalty,
2042 unless you are using the engine as-is to render very large and
2043 complex glyphs.
David Turner498eed22002-04-15 12:01:10 +00002044
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002045 - The FreeType 2 redesign has begun. More information can be
2046 found at this URL:
David Turner498eed22002-04-15 12:01:10 +00002047
David Turner498eed22002-04-15 12:01:10 +00002048 http://www.freetype.org/freetype2/redesign.html
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002049
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002050 The following internal changes have been performed within the
2051 sources of this release:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002052
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002053 - Many internal types have been renamed to increase
2054 consistency. The following should be true, except for
2055 public types:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002056
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002057 * All structure types have a name ending in `Rec' (short
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002058 for `record').
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002059
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002060 * A pointer-to-structure type has the same name as the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002061 structure, _without_ the `Rec' suffix.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002062
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002063 Example:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002064
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002065 typedef struct FooRec_
2066 {
2067 ...
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002068
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002069 } FooRec, *Foo;
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002070
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002071 - Many internal macros have been renamed to increase
2072 consistency. The following should be true:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002073
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002074 * All macros have a name beginning with `FT_'. This
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002075 required a few changes like
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002076
2077 ALLOC => FT_ALLOC
2078 FREE => FT_FREE
2079 REALLOC => FT_REALLOC
2080
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002081 * All macros are completely UPPERCASE. This required a
2082 few changes like:
David Turner498eed22002-04-15 12:01:10 +00002083
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002084 READ_Short => FT_READ_SHORT
2085 NEXT_Short => FT_NEXT_SHORT
2086 GET_ULongLE => FT_GET_ULONG_LE
2087 MEM_Set => FT_MEM_SET
2088 MEM_Copy => FT_MEM_COPY
2089 etc.
David Turner498eed22002-04-15 12:01:10 +00002090
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002091 * Whenever possible, all macro names follow the
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002092 FT_<OBJECT>_<METHOD> pattern. For example
David Turner498eed22002-04-15 12:01:10 +00002093
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002094 ACCESS_Frame => FT_FRAME_ENTER
2095 FORGET_Frame => FT_FRAME_EXIT
2096 EXTRACT_Frame => FT_FRAME_EXTRACT
2097 RELEASE_Frame => FT_FRAME_RELEASE
David Turner498eed22002-04-15 12:01:10 +00002098
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002099 FILE_Pos => FT_STREAM_POS
2100 FILE_Seek => FT_STREAM_SEEK
2101 FILE_Read => FT_STREAM_READ
2102 FILE_ReadAt => FT_STREAM_READ_AT
2103 READ_Fields => FT_STREAM_READ_FIELDS
David Turner498eed22002-04-15 12:01:10 +00002104
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002105 - Many internal functions have been renamed to follow the
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002106 FT_<Object>_<Method> pattern. For example:
David Turner498eed22002-04-15 12:01:10 +00002107
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002108 FT_Seek_Stream => FT_Stream_Seek
2109 FT_Read_Stream_At => FT_Stream_ReadAt
2110 FT_Done_Stream => FT_Stream_Close
2111 FT_New_Stream => FT_Stream_Open
2112 FT_New_Memory_Stream => FT_Stream_OpenMemory
2113 FT_Extract_Frame => FT_Stream_ExtractFrame
David Turner498eed22002-04-15 12:01:10 +00002114
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002115 Note that method names do not contain `_'.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002116
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002117 - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced
2118 with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a
2119 type as the fourth argument. Instead, the array element
2120 type size is computed automatically from the type of the
2121 target pointer used.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002122
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002123 - A new object class, FT_CMap, has been introduced. These
2124 internal objects are used to model character maps. This
2125 eases the support of additional charmap types within the
2126 engine.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002127
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002128 - A new configuration file named `ftstdlib.h' has been added
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002129 to `include/freetype/config'. It is used to define aliases
2130 for _every_ routine of the ISO C library that the font
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002131 engine uses. Each aliases has a `ft_' prefix
2132 (e.g. `ft_strlen' is an alias for `strlen').
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002133
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002134 This is used to ease the porting of FreeType 2 to exotic
2135 runtime environments where the ISO C Library isn't available
2136 (e.g. XFree86 extension modules).
David Turner498eed22002-04-15 12:01:10 +00002137
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002138 More details are available in the `ChangeLog' file.
David Turner498eed22002-04-15 12:01:10 +00002139
2140
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002141======================================================================
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002142
Werner Lemberg94168f02006-05-11 07:07:09 +00002143CHANGES BETWEEN 2.0.9 and 2.0.8
David Turner2c7558c2002-04-11 14:21:16 +00002144
2145 I. IMPORTANT BUG FIXES
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002146
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002147 - Certain fonts like `foxjump.ttf' contain broken name tables with
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002148 invalid entries and wild offsets. This caused FreeType to crash
2149 when trying to load them.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002150
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002151 The SFNT `name' table loader has been fixed to be able to
2152 support these strange fonts.
David Turner2c7558c2002-04-11 14:21:16 +00002153
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002154 Moreover, the code in charge of processing this table has been
2155 changed to always favour Windows-formatted entries over other
2156 ones. Hence, a font that works on Windows but not on the Mac
2157 will load cleanly in FreeType and report accurate values for
2158 Family & PostScript names.
David Turner2c7558c2002-04-11 14:21:16 +00002159
2160 - The CID font driver has been fixed. It unfortunately returned a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002161 Postscript Font name with a leading slash, as in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002162 `/MunhwaGothic-Regular'.
David Turner2c7558c2002-04-11 14:21:16 +00002163
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002164 - FreeType 2 should now compile fine on AIX 4.3.3 as a shared
2165 library.
David Turner2c7558c2002-04-11 14:21:16 +00002166
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002167 - A bug in the Postscript hinter has been found and fixed,
2168 removing un-even stem widths at small pixel sizes (like 14-17).
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002169
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002170 This improves the quality of a certain number of Postscript
2171 fonts.
David Turner2c7558c2002-04-11 14:21:16 +00002172
2173
Werner Lemberg0cc456a2002-04-11 19:55:58 +00002174 II. NEW FEATURES
David Turner2c7558c2002-04-11 14:21:16 +00002175
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002176 - A new function named `FT_Library_Version' has been added to
2177 return the current library's major, minor, and patch version
2178 numbers. This is important since the macros FREETYPE_MAJOR,
2179 FREETYPE_MINOR, and FREETYPE_PATCH cannot be used when the
2180 library is dynamically linked by a program.
David Turner2c7558c2002-04-11 14:21:16 +00002181
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002182 - Two new APIs have been added: `FT_Get_First_Char' and
Werner Lemberg0cc456a2002-04-11 19:55:58 +00002183 `FT_Get_Next_Char'.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002184
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002185 Together, these can be used to iterate efficiently over the
2186 currently selected charmap of a given face. Read the API
2187 reference for more details.
David Turner2c7558c2002-04-11 14:21:16 +00002188
2189
Werner Lemberg0cc456a2002-04-11 19:55:58 +00002190 III. MISCELLANEOUS
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002191
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002192 - The FreeType sources are under heavy internal re-factoring. As
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002193 a consequence, we have created a branch named `STABLE' on the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002194 CVS to hold all future releases/fixes in the 2.0.x family.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002195
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002196 The HEAD branch now contains the re-factored sources and
2197 shouldn't be used for testing or packaging new releases. In
2198 case you would like to access the 2.0.9 sources from our CVS
2199 repository, use the tag `VER-2-0-9'.
David Turner2c7558c2002-04-11 14:21:16 +00002200
2201
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002202======================================================================
David Turner2c7558c2002-04-11 14:21:16 +00002203
Werner Lemberg94168f02006-05-11 07:07:09 +00002204CHANGES BETWEEN 2.0.8 and 2.0.7
David Turner1c6af482002-02-08 14:00:20 +00002205
2206 I. IMPORTANT BUG FIXES
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002207
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002208 - There was a small but nasty bug in `freetype-config.in' which
2209 caused the `freetype-config' script to fail on Unix.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002210
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002211 This didn't prevent the installation of the library or even its
2212 execution, but caused problems when trying to compile many Unix
2213 packages that depend on it.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002214
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002215 - Some TrueType or OpenType fonts embedded in PDF documents do not
2216 have a 'cmap', 'post' and 'name' as is required by the
Werner Lemberg0cc456a2002-04-11 19:55:58 +00002217 specification. FreeType no longer refuses to load such fonts.
David Turner1c6af482002-02-08 14:00:20 +00002218
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002219 - Various fixes to the PCF font driver.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00002220
David Turner1c6af482002-02-08 14:00:20 +00002221
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002222======================================================================
David Turner1c6af482002-02-08 14:00:20 +00002223
Werner Lemberg94168f02006-05-11 07:07:09 +00002224CHANGES BETWEEN 2.0.7 and 2.0.6
David Turner944b7292002-01-31 17:42:05 +00002225
2226 I. IMPORTANT BUG FIXES
2227
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002228 - Fixed two bugs in the Type 1 font driver. The first one
2229 resulted in a memory leak in subtle cases. The other one caused
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002230 FreeType to crash when trying to load `.gsf' files (Ghostscript
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002231 so-called Postscript fonts).
David Turner944b7292002-01-31 17:42:05 +00002232
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002233 (This made _many_ KDE applications crash on certain systems.
2234 FreeType _is_ becoming a critical system component on Linux :-)
David Turner944b7292002-01-31 17:42:05 +00002235
Werner Lemberg32b53462002-02-01 01:20:11 +00002236 - Fixed a memory leak in the CFF font driver.
David Turner944b7292002-01-31 17:42:05 +00002237
Werner Lemberg32b53462002-02-01 01:20:11 +00002238 - Fixed a memory leak in the PCF font driver.
David Turner944b7292002-01-31 17:42:05 +00002239
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002240 - Fixed the Visual C++ project file
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002241 `builds/win32/visualc/freetype.dsp' since it didn't include the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002242 Postscript hinter component, causing errors at build time.
David Turner944b7292002-01-31 17:42:05 +00002243
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002244 - Fixed a small rendering bug in the anti-aliased renderer that
2245 only occurred when trying to draw thin (less than 1 pixel)
2246 strokes.
David Turner944b7292002-01-31 17:42:05 +00002247
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002248 - Fixed `builds/unix/freetype2.a4' which is used to generate a
2249 valid `freetype2.m4' for use with autoconf.
Werner Lemberg32b53462002-02-01 01:20:11 +00002250
2251 - Fixed the OpenVMS Makefiles.
David Turner944b7292002-01-31 17:42:05 +00002252
2253
2254 II. MISCELLANEOUS
2255
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002256 - Added `configure' and `install' scripts to the top-level
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002257 directory. A GNU-style installation is thus now easily possible
2258 with
Werner Lemberg32b53462002-02-01 01:20:11 +00002259
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002260 ./configure <options>
2261 make
2262 make install
David Turner944b7292002-01-31 17:42:05 +00002263
2264
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002265======================================================================
David Turner944b7292002-01-31 17:42:05 +00002266
Werner Lemberg94168f02006-05-11 07:07:09 +00002267CHANGES BETWEEN 2.0.6 and 2.0.5
David Turnerafa38542001-10-18 13:22:01 +00002268
Werner Lembergf41e71a2001-12-20 21:22:02 +00002269 I. IMPORTANT BUG FIXES
David Turner640078d2001-12-10 10:47:47 +00002270
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002271 - It wasn't possible to load embedded bitmaps when the auto-hinter
2272 was used. This is now fixed.
David Turner640078d2001-12-10 10:47:47 +00002273
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002274 - The TrueType font driver didn't load some composites properly
2275 (the sub-glyphs were slightly shifted, and this was only
2276 noticeable when using monochrome rendering).
David Turnerafa38542001-10-18 13:22:01 +00002277
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002278 - Various fixes to the auto-hinter. They merely improve the
2279 output of sans-serif fonts. Note that there are still problems
2280 with serifed fonts and composites (accented characters).
David Turnerafa38542001-10-18 13:22:01 +00002281
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002282 - All scalable font drivers erroneously returned un-fitted glyph
2283 advances when hinting was requested. This created problems for
2284 a number of layout applications. This is a very old bug that
2285 got undetected mainly because most test/demo program perform
2286 rounding explicitly or implicitly (through the cache).
Werner Lembergf41e71a2001-12-20 21:22:02 +00002287
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002288 - `FT_Glyph_To_Bitmap' did erroneously modify the source glyph in
Werner Lembergf41e71a2001-12-20 21:22:02 +00002289 certain cases.
2290
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002291 - `glnames.py' still contained a bug that made FreeType return
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002292 invalid names for certain glyphs.
David Turnerafa38542001-10-18 13:22:01 +00002293
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002294 - The library crashed when loading certain Type 1 fonts like
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002295 `sadn.pfb' (`Stalingrad Normal'), which appear to contain
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002296 pathetic font info dictionaries.
David Turner6096b5a2002-01-07 10:40:48 +00002297
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002298 - The TrueType glyph loader is now much more paranoid and checks
2299 everything when loading a given glyph image. This was necessary
2300 to avoid problems (crashes and/or memory overwrites) with broken
2301 fonts that came from a really buggy automatic font converter.
David Turner6096b5a2002-01-07 10:40:48 +00002302
2303
Werner Lembergf41e71a2001-12-20 21:22:02 +00002304 II. IMPORTANT UPDATES AND NEW FEATURES
David Turner0fcb4122001-12-20 13:33:03 +00002305
Werner Lembergf41e71a2001-12-20 21:22:02 +00002306 - Important updates to the Mac-specific parts of the library.
David Turner0fcb4122001-12-20 13:33:03 +00002307
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002308 - The caching sub-system has been completely re-designed, and its
Werner Lemberg4db32ec2006-03-24 11:54:53 +00002309 API has evolved (the old one is still supported for backward
Werner Lembergf41e71a2001-12-20 21:22:02 +00002310 compatibility).
David Turner0fcb4122001-12-20 13:33:03 +00002311
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002312 The documentation for it is not yet completed, sorry. For now,
2313 you are encouraged to continue using the old API. However, the
2314 ftview demo program in the ft2demos package has already been
2315 updated to use the new caching functions.
David Turner0fcb4122001-12-20 13:33:03 +00002316
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002317 - A new charmap cache is provided too. See `FTC_CMapCache'. This
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002318 is useful to perform character code -> glyph index translations
2319 quickly, without the need for an opened FT_Face.
David Turner0fcb4122001-12-20 13:33:03 +00002320
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002321 - A NEW POSTSCRIPT HINTER module has been added to support native
2322 hints in the following formats: PostScript Type 1, PostScript
2323 CID, and CFF/CEF.
Werner Lembergf41e71a2001-12-20 21:22:02 +00002324
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002325 Please test! Note that the auto-hinter produces better results
2326 for a number of badly-hinted fonts (mostly auto-generated ones)
2327 though.
Werner Lembergf41e71a2001-12-20 21:22:02 +00002328
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002329 - A memory debugger is now part of the standard FreeType sources.
2330 To enable it, define FT_DEBUG_MEMORY in
2331 <freetype/config/ftoption.h>, and recompile the library.
Werner Lembergf41e71a2001-12-20 21:22:02 +00002332
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002333 Additionally, define the _environment_ variable FT_DEBUG_MEMORY
2334 and run any program using FreeType. When the library is exited,
2335 a summary of memory footprints and possible leaks will be
2336 displayed.
Werner Lembergf41e71a2001-12-20 21:22:02 +00002337
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002338 This works transparently with _any_ program that uses FreeType.
2339 However, you will need a lot of memory to use this (allocated
2340 blocks are never released to the heap to detect double deletes
2341 easily).
David Turner0fcb4122001-12-20 13:33:03 +00002342
2343
Werner Lembergf41e71a2001-12-20 21:22:02 +00002344 III. MISCELLANEOUS
David Turner0fcb4122001-12-20 13:33:03 +00002345
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002346 - We are aware of subtle differences between the output of
2347 FreeType versions 1 and 2 when it comes to monochrome
2348 TrueType-hinted glyphs. These are most probably due to small
2349 differences in the monochrome rasterizers and will be worked out
2350 in an upcoming release.
David Turner0fcb4122001-12-20 13:33:03 +00002351
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002352 - We have decided to fork the sources in a `stable' branch, and an
2353 `unstable' one, since FreeType is becoming a critical component
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002354 of many Unix systems.
Werner Lemberg32b53462002-02-01 01:20:11 +00002355
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002356 The next bug-fix releases of the library will be named 2.0.7,
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002357 2.0.8, etc., while the `2.1' branch will contain a version of
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002358 the sources where we will start major reworking of the library's
2359 internals, in order to produce FreeType 2.2.0 (or even 3.0) in a
2360 more distant future.
Werner Lemberg32b53462002-02-01 01:20:11 +00002361
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002362 We also hope that this scheme will allow much more frequent
2363 releases than in the past.
David Turner6096b5a2002-01-07 10:40:48 +00002364
David Turner0fcb4122001-12-20 13:33:03 +00002365
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002366======================================================================
David Turnerafa38542001-10-18 13:22:01 +00002367
Werner Lemberg94168f02006-05-11 07:07:09 +00002368CHANGES BETWEEN 2.0.5 and 2.0.4
David Turner1cd4f852001-10-09 07:32:50 +00002369
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002370 NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER. THIS MODULE
2371 WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
David Turner1cd4f852001-10-09 07:32:50 +00002372
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002373 - Fixed a bug that made certain glyphs, like `Cacute', `cacute' and
2374 `lslash' unavailable from Unicode charmaps of Postscript fonts.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002375 This prevented the correct display of Polish text, for example.
David Turner1cd4f852001-10-09 07:32:50 +00002376
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002377 - The kerning table of Type 1 fonts was loaded by FreeType, when its
2378 AFM file was attached to its face, but the
2379 FT_FACE_FLAG_HAS_KERNING bit flags was not set correctly,
2380 preventing FT_Get_Kerning to return meaningful values.
David Turner1cd4f852001-10-09 07:32:50 +00002381
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002382 - Improved SFNT (TrueType & OpenType) charmap support. Slightly
2383 better performance, as well as support for the new formats defined
2384 by the OpenType 1.3 specification (8, 10, and 12)
David Turner1cd4f852001-10-09 07:32:50 +00002385
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002386 - Fixed a serious typo in `src/base/ftcalc.c' which caused invalid
Werner Lemberg80b8d772001-10-10 19:56:42 +00002387 computations in certain rare cases, producing ugly artefacts.
2388
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002389 - The size of the EM square is computed with a more accurate
2390 algorithm for Postscript fonts. The old one caused slight errors
2391 with embedded fonts found in PDF documents.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002392
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002393 - Fixed a bug in the cache manager that prevented normal LRU
2394 behaviour within the cache manager, causing unnecessary reloads
2395 (for FT_Face and FT_Size objects only).
Werner Lemberg80b8d772001-10-10 19:56:42 +00002396
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002397 - Added a new function named `FT_Get_Name_Index' to retrieve the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002398 glyph index of a given glyph name, when found in a face.
David Turner1cd4f852001-10-09 07:32:50 +00002399
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002400 - Added a new function named `FT_Get_Postscript_Name' to retrieve
2401 the `unique' Postscript font name of a given face.
David Turner034a1932001-10-17 13:57:02 +00002402
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002403 - Added a new public header size named FT_SIZES_H (or
2404 <freetype/ftsizes.h>) providing new FT_Size-management functions:
Werner Lembergf41e71a2001-12-20 21:22:02 +00002405 FT_New_Size, FT_Activate_Size, FT_Done_Size.
David Turner034a1932001-10-17 13:57:02 +00002406
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002407 - Fixed a reallocation bug that generated a dangling pointer (and
2408 possibly memory leaks) with Postscript fonts (in
2409 src/psaux/psobjs.c).
David Turner1cd4f852001-10-09 07:32:50 +00002410
Werner Lemberg80b8d772001-10-10 19:56:42 +00002411 - Many fixes for 16-bit correctness.
David Turner1cd4f852001-10-09 07:32:50 +00002412
Werner Lemberg80b8d772001-10-10 19:56:42 +00002413 - Removed many pedantic compiler warnings from the sources.
2414
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002415 - Added an Amiga build directory in `builds/amiga'.
David Turner1cd4f852001-10-09 07:32:50 +00002416
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002417
2418======================================================================
David Turner1cd4f852001-10-09 07:32:50 +00002419
Werner Lemberg94168f02006-05-11 07:07:09 +00002420CHANGES BETWEEN 2.0.4 and 2.0.3
David Turner995ff202001-06-22 08:45:31 +00002421
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002422 - Fixed a rather annoying bug that was introduced in 2.0.3. Namely,
2423 the font transformation set through FT_Set_Transform was applied
2424 twice to auto-hinted glyphs, resulting in incorrectly rotated text
2425 output.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002426
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002427 - Fixed _many_ compiler warnings. FT2 should now compile cleanly
2428 with Visual C++'s most pedantic warning level (/W4). It already
2429 compiled fine with GCC and a few other compilers.
David Turner995ff202001-06-22 08:45:31 +00002430
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002431 - Fixed a bug that prevented the linear advance width of composite
Werner Lemberg80b8d772001-10-10 19:56:42 +00002432 TrueType glyphs to be correctly returned.
David Turner21939452001-10-05 14:23:03 +00002433
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002434 - Fixed the Visual C++ project files located in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002435 `builds/win32/visualc' (previous versions used older names of the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002436 library).
Werner Lemberg80b8d772001-10-10 19:56:42 +00002437
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002438 - Many 32-bit constants have an `L' appended to their value, in
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002439 order to improve the 16-bitness of the code. Someone is actually
2440 trying to use FT2 on an Atari ST machine!
David Turner995ff202001-06-22 08:45:31 +00002441
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002442 - Updated the `builds/detect.mk' file in order to automatically
2443 build FT2 on AIX systems. AIX uses `/usr/sbin/init' instead of
2444 `/sbin/init' and wasn't previously detected as a Unix platform by
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002445 the FreeType build system.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002446
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002447 - Updated the Unix-specific portions of the build system (new
2448 libtool version, etc.).
David Turner995ff202001-06-22 08:45:31 +00002449
Werner Lembergb4142d52007-01-17 12:45:26 +00002450 - The SFNT kerning loader now ensures that the table is sorted
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002451 (since some problem fonts do not meet this requirement).
David Turnerc40f3862001-06-27 12:42:10 +00002452
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002453
2454=======================================================================
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002455
Werner Lemberg94168f02006-05-11 07:07:09 +00002456CHANGES BETWEEN 2.0.3 and 2.0.2
David Turner4312f422001-05-24 15:00:19 +00002457
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002458 I. CHANGES TO THE MODULES / FONT DRIVERS
Werner Lemberg80b8d772001-10-10 19:56:42 +00002459
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002460 - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix
2461 several annoying artefacts, mainly:
Werner Lemberg80b8d772001-10-10 19:56:42 +00002462
Werner Lembergb4142d52007-01-17 12:45:26 +00002463 - Blue zone alignment of horizontal stems wasn't performed
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002464 correctly, resulting in artefacts like the `d' being placed
2465 one pixel below the `b' in some fonts like Time New Roman.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002466
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002467 - Overshoot thresholding wasn't performed correctly, creating
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002468 unpleasant artefacts at large character pixel sizes.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002469
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002470 - Composite glyph loading has been simplified. This gets rid
2471 of various artefacts where the components of a composite
2472 glyphs were not correctly spaced.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002473
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002474 These are the last changes to the current auto-hinting module.
2475 A new hinting sub-system is currently in the work in order to
2476 support native hints in Type 1 / CFF / OpenType fonts, as well
2477 as globally improve rendering.
David Turner4312f422001-05-24 15:00:19 +00002478
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002479 - The PCF driver has been fixed. It reported invalid glyph
2480 dimensions for the fonts available on Solaris.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002481
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002482 - The Type 1, CID and CFF drivers have been modified to fix the
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002483 computation of the EM size.
David Turner4312f422001-05-24 15:00:19 +00002484
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002485 - The Type 1 driver has been fixed to avoid a dangerous bug that
2486 crashed the library with non-conforming fonts (i.e. ones that do
2487 not place the .notdef glyph at position 0).
David Turner4312f422001-05-24 15:00:19 +00002488
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002489 - The TrueType driver had a rather subtle bug (dangling pointer
2490 when loading composite glyphs) that could crash the library in
2491 rare occasions!
David Turner4312f422001-05-24 15:00:19 +00002492
2493
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002494 II. HIGH-LEVEL API CHANGES
Werner Lemberg80b8d772001-10-10 19:56:42 +00002495
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002496 - The error code enumeration values have been changed. An error
2497 value is decomposed in a generic error code, and a module
2498 number. see <freetype/fterrors.h> for details.
David Turner4312f422001-05-24 15:00:19 +00002499
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002500 - A new public header file has been introduced, named
Alexei Podtelezhnikovb4ac30b2013-01-02 22:21:37 -05002501 FT_TRIGONOMETRY_H (include/freetype/fttrigon.h), providing
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002502 trigonometric functions to compute sines, cosines, arctangents,
2503 etc. with 16.16 fixed precision. The implementation is based on
2504 the CORDIC algorithm and is very fast while being sufficiently
2505 accurate.
David Turner4312f422001-05-24 15:00:19 +00002506
2507
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002508 III. INTERNALS
Werner Lemberg80b8d772001-10-10 19:56:42 +00002509
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002510 - Added BeOS-specific files in the old build sub-system. Note
2511 that no changes were required to compile the library with Jam.
David Turner4312f422001-05-24 15:00:19 +00002512
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002513 - The configuration is now capable of automatically detecting
2514 64-bit integers on a set of predefined compilers (GCC, Visual
2515 C++, Borland C++) and will use them by default. This provides a
2516 small performance boost.
David Turner4312f422001-05-24 15:00:19 +00002517
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002518 - A small memory leak that happened when opening 0-sized files
2519 (duh!) have been fixed.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002520
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002521 - Fixed bezier stack depth bug in the routines provided by the
2522 FT_BBOX_H header file. Also fixed similar bugs in the
2523 rasterizers.
David Turner4312f422001-05-24 15:00:19 +00002524
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002525 - The outline bounding box code has been rewritten to use direct
2526 computations, instead of bezier sub-division, to compute the
2527 exact bounding box of glyphs. This is slightly slower but more
2528 accurate.
David Turner4312f422001-05-24 15:00:19 +00002529
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002530 - The build system has been improved and fixed, mainly to support
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002531 `make' on Windows 2000 correctly, avoid problems with `make
2532 distclean' on non Unix systems, etc.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002533
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002534 - Hexadecimal constants have been suffixed with `U' to avoid
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002535 problems with certain compilers on 64-bit platforms.
David Turner4312f422001-05-24 15:00:19 +00002536
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002537 - A new directory named `src/tools' has been created. It contains
David Turner4312f422001-05-24 15:00:19 +00002538 Python scripts and simple unit test programs used to develop the
2539 library.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002540
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002541 - The DocMaker tool has been moved from `docs' to `src/tools' and
David Turner4312f422001-05-24 15:00:19 +00002542 has been updated with the following:
Werner Lemberg80b8d772001-10-10 19:56:42 +00002543
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002544 - Now accepts the `--title=XXXX' or `-t XXXX' option from the
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002545 command line to set the project's name in the generated API
2546 reference.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002547
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002548 - Now accepts the `--output=DIR' or `-o DIR' option from the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002549 command line to set the output directory for all generated
2550 HTML files.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002551
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002552 - Now accepts the `--prefix=XXXX' or `-p XXX' option from the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002553 command line to set the file prefix to use for all
2554 generated HTML files.
David Turner4312f422001-05-24 15:00:19 +00002555
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002556 - Now generates the current time/data on each generated page
David Turner4312f422001-05-24 15:00:19 +00002557 in order to distinguish between versions.
2558
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002559 DocMaker can be used with other projects now, not only FT2
2560 (e.g. MLib, FTLayout, etc.).
Werner Lemberg80b8d772001-10-10 19:56:42 +00002561
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002562
2563======================================================================
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002564
Werner Lemberg94168f02006-05-11 07:07:09 +00002565CHANGES BETWEEN 2.0.2 and 2.0.1
David Turnerd3c8e062000-12-04 22:53:55 +00002566
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002567 I. CHANGES TO THE MODULES / FONT DRIVERS
David Turnera0f89552001-03-23 12:28:59 +00002568
2569 - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
Werner Lembergab6d1072001-04-02 21:30:06 +00002570 avoid legal problems with the Apple patents. It seems that we
2571 mistakenly turned this option on in previous releases of the
2572 build.
David Turnera0f89552001-03-23 12:28:59 +00002573
Werner Lembergab6d1072001-04-02 21:30:06 +00002574 Note that if you want to use the bytecode interpreter in order
2575 to get high-quality TrueType rendering, you will need to toggle
2576 by hand the definition of the
2577 TT_CONFIG_OPTION_BYTECODE_INTERPRETER macro in the file
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002578 `include/freetype/config/ftoption.h'.
Werner Lembergab6d1072001-04-02 21:30:06 +00002579
2580 - The CFF driver has been improved by Tom Kacvinsky and Sander van
2581 der Wal:
2582
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002583 * Support for `seac' emulation.
2584 * Support for `dotsection'.
Werner Lembergab6d1072001-04-02 21:30:06 +00002585 * Support for retrieving glyph names through
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002586 `FT_Get_Glyph_Name'.
David Turnera0f89552001-03-23 12:28:59 +00002587
2588 The first two items are necessary to correctly a large number of
Werner Lembergab6d1072001-04-02 21:30:06 +00002589 Type 1 fonts converted to the CFF formats by Adobe Acrobat.
David Turnera0f89552001-03-23 12:28:59 +00002590
Werner Lembergab6d1072001-04-02 21:30:06 +00002591 - The Type 1 driver was also improved by Tom & others:
David Turnera0f89552001-03-23 12:28:59 +00002592
Werner Lembergab6d1072001-04-02 21:30:06 +00002593 * Better EM size computation.
2594 * Better support for synthetic (transformed) fonts.
2595 * The Type 1 driver returns the charstrings corresponding to
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002596 each glyph in the `glyph->control_data' field after a call to
2597 `FT_Load_Glyph' (thanks Ha Shao).
David Turnera0f89552001-03-23 12:28:59 +00002598
Werner Lembergab6d1072001-04-02 21:30:06 +00002599 - Various other bugfixes, including the following:
David Turnera0f89552001-03-23 12:28:59 +00002600
Werner Lembergab6d1072001-04-02 21:30:06 +00002601 * Fixed a nasty memory leak in the Type 1 driver.
2602 * The autohinter and the pcf driver used static writable data
2603 when they shouldn't.
2604 * Many casts were added to make the code more 64-bits safe. It
2605 also now compiles on Windows XP 64-bits without warnings.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002606 * Some incorrect writable statics were removed in the `autohint'
2607 and `pcf' drivers. FreeType 2 now compiles on Epoc again.
David Turnera0f89552001-03-23 12:28:59 +00002608
2609
2610 II. CHANGES TO THE HIGH-LEVEL API
David Turnera0f89552001-03-23 12:28:59 +00002611
Werner Lembergab6d1072001-04-02 21:30:06 +00002612 - The library header files inclusion scheme has been changed. The
2613 old scheme looked like:
2614
2615 #include <freetype/freetype.h>
2616 #include <freetype/ftglyph.h>
2617 #include <freetype/ftcache.h>
2618 #include <freetype/cache/ftimage.h>
2619
2620 Now you should use:
2621
2622 #include <ft2build.h>
2623 #include FT_FREETYPE_H
2624 #include FT_GLYPH_H
2625 #include FT_CACHE_H
2626 #include FT_CACHE_IMAGE_H
2627
2628 NOTE THAT THE OLD INCLUSION SCHEME WILL STILL WORK WITH THIS
2629 RELEASE. HOWEVER, WE DO NOT GUARANTEE THAT THIS WILL STILL BE
2630 TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1).
2631
2632 The file <ft2build.h> is used to define the header filename
2633 macros. The complete and commented list of macros is available
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002634 in the API reference under the section name `Header File Macros'
Werner Lembergab6d1072001-04-02 21:30:06 +00002635 in Chapter I.
David Turnera0f89552001-03-23 12:28:59 +00002636
David Turnerf876b242001-03-23 18:09:09 +00002637 For more information, see section I of the following document:
David Turnerf876b242001-03-23 18:09:09 +00002638
Werner Lembergab6d1072001-04-02 21:30:06 +00002639 http://www.freetype.org/
2640 freetype2/docs/tutorial/step1.html
David Turnerf876b242001-03-23 18:09:09 +00002641
Werner Lembergab6d1072001-04-02 21:30:06 +00002642 or
David Turnera0f89552001-03-23 12:28:59 +00002643
Werner Lembergab6d1072001-04-02 21:30:06 +00002644 http://freetype.sourceforge.net/
2645 freetype2/docs/tutorial/step1.html
2646
2647 - Many, many comments have been added to the public source file in
2648 order to automatically generate the API Reference through the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002649 `docmaker.py' Python script.
Werner Lembergab6d1072001-04-02 21:30:06 +00002650
2651 The latter has been updated to support the grouping of sections
2652 in chapters and better index sort. See:
2653
2654 http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
David Turnera0f89552001-03-23 12:28:59 +00002655
2656
2657 III. CHANGES TO THE BUILD PROCESS
David Turnerb8f56fa2001-03-20 15:04:30 +00002658
Werner Lembergab6d1072001-04-02 21:30:06 +00002659 - If you are not building FreeType 2 with its own build system
2660 (but with your own Makefiles or project files), you will need to
2661 be aware that the build process has changed a little bit.
David Turnera0f89552001-03-23 12:28:59 +00002662
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002663 You don't need to put the `src' directory in the include path
Werner Lembergab6d1072001-04-02 21:30:06 +00002664 when compiling any FT2 component. Instead, simply put the
2665 component's directory in the current include path.
2666
2667 So, if you were doing something like:
2668
2669 cc -c -Iinclude -Isrc src/base/ftbase.c
2670
2671 change the line to:
2672
2673 cc -c -Iinclude -Isrc/base src/base/ftbase.c
2674
2675 If you were doing something like:
2676
2677 cd src/base
2678 cc -c -I../../include -I.. ftbase.c
2679
2680 change it to:
2681
2682 cd src/base
2683 cc -c -I../../include ftbase.c
2684
2685
2686======================================================================
2687
Werner Lemberg94168f02006-05-11 07:07:09 +00002688CHANGES BETWEEN 2.0.1 and 2.0
Werner Lembergab6d1072001-04-02 21:30:06 +00002689
David Turneraaac8132000-12-01 18:55:22 +00002690 2.0.1 introduces a few changes:
2691
Werner Lembergab6d1072001-04-02 21:30:06 +00002692 - Fixed many bugs related to the support of CFF / OpenType fonts.
2693 These formats are now much better supported though there is
2694 still work planned to deal with charset tables and PDF-embedded
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002695 CFF files that use the old `seac' command.
Werner Lembergab6d1072001-04-02 21:30:06 +00002696
2697 - The library could not be compiled in debug mode with a very
2698 small number of C compilers whose pre-processors didn't
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002699 implement the `##' directive correctly (i.e. per se the ANSI C
Werner Lembergab6d1072001-04-02 21:30:06 +00002700 specification!) An elegant fix was found.
2701
2702 - Added support for the free Borland command-line C++ Builder
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002703 compiler. Use `make setup bcc32'. Also fixed a few source
Werner Lembergab6d1072001-04-02 21:30:06 +00002704 lines that generated new warnings with BCC32.
2705
2706 - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
Werner Lemberg2e82c932000-12-01 21:56:47 +00002707 a conic Bezier arc.
David Turneraaac8132000-12-01 18:55:22 +00002708
Werner Lembergab6d1072001-04-02 21:30:06 +00002709 - Updated the INSTALL file to add IDE compilation.
David Turneraaac8132000-12-01 18:55:22 +00002710
Werner Lembergab6d1072001-04-02 21:30:06 +00002711 - Other minor bug fixes, from invalid Type 1 style flags to
2712 correct support of synthetic (obliqued) fonts in the
2713 auto-hinter, better support for embedded bitmaps in a SFNT font.
David Turneraaac8132000-12-01 18:55:22 +00002714
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002715 - Fixed some problems with `freetype-config'.
David Turneraaac8132000-12-01 18:55:22 +00002716
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002717 Finally, the `standard' scheme for including FreeType headers is now
Werner Lembergab6d1072001-04-02 21:30:06 +00002718 gradually changing, but this will be explained in a later release
2719 (probably 2.0.2).
David Turneraaac8132000-12-01 18:55:22 +00002720
Werner Lembergab6d1072001-04-02 21:30:06 +00002721 And very special thanks to Tom Kacvinsky and YAMANO-UCHI Hidetoshi
2722 for their contributions!
David Turneraaac8132000-12-01 18:55:22 +00002723
Werner Lembergab6d1072001-04-02 21:30:06 +00002724
2725======================================================================
2726
David Turneraaac8132000-12-01 18:55:22 +00002727CHANGES BETWEEN beta8 and 2.0
David Turnerf9b8dec2000-06-16 19:34:52 +00002728
Werner Lembergab6d1072001-04-02 21:30:06 +00002729 - Changed the default installation path for public headers from
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002730 `include/freetype' to `include/freetype2'.
David Turner27c88272000-11-09 19:10:22 +00002731
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002732 Also added a new `freetype-config' that is automatically generated
Werner Lembergab6d1072001-04-02 21:30:06 +00002733 and installed on Unix and Cygwin systems. The script itself is
2734 used to retrieve the current install path, C compilation flags as
2735 well as linker flags.
David Turner27c88272000-11-09 19:10:22 +00002736
Werner Lembergab6d1072001-04-02 21:30:06 +00002737 - Fixed several small bugs:
David Turner27c88272000-11-09 19:10:22 +00002738
Werner Lembergab6d1072001-04-02 21:30:06 +00002739 * Incorrect max advance width for fixed-pitch Type 1 fonts.
2740 * Incorrect glyph names for certain TrueType fonts.
2741 * The glyph advance was not copied when FT_Glyph_To_Bitmap was
2742 called.
Werner Lembergb4142d52007-01-17 12:45:26 +00002743 * The linearHoriAdvance and linearVertAdvance fields were not
Werner Lembergab6d1072001-04-02 21:30:06 +00002744 correctly returned for glyphs processed by the auto-hinter.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002745 * `type1z' renamed back to `type1'; the old `type1' module has
Werner Lembergab6d1072001-04-02 21:30:06 +00002746 been removed.
David Turner27c88272000-11-09 19:10:22 +00002747
Werner Lembergab6d1072001-04-02 21:30:06 +00002748 - Revamped the build system to make it a lot more generic. This
2749 will allow us to re-use nearly un-modified in lots of other
2750 projects (including FreeType Layout).
David Turner27c88272000-11-09 19:10:22 +00002751
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002752 - Changed `cid' to use `psaux' too.
David Turner27c88272000-11-09 19:10:22 +00002753
Werner Lembergab6d1072001-04-02 21:30:06 +00002754 - Added the cache sub-system. See <freetype/ftcache.h> as well as
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002755 the sources in `src/cache'. Note that it compiles but is still
Werner Lembergab6d1072001-04-02 21:30:06 +00002756 untested for now.
David Turner27c88272000-11-09 19:10:22 +00002757
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002758 - Updated `docs/docmaker.py', a draft API reference is available at
Werner Lembergab6d1072001-04-02 21:30:06 +00002759 http://www.freetype.org/ft2api.html.
Werner Lembergb5084e12000-10-28 17:10:06 +00002760
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002761 - Changed `type1' to use `psaux'.
David Turner046f7a02000-09-15 22:42:06 +00002762
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002763 - Created a new module named `psaux' to hold the Type 1 & Type 2
2764 parsing routines. It should be used by `type1', `cid', and `cff'
Werner Lembergab6d1072001-04-02 21:30:06 +00002765 in the future.
David Turner34f1c2f2000-08-23 22:47:44 +00002766
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002767 - Fixed an important bug in `FT_Glyph_Get_CBox'.
David Turner3b2c50e2000-08-23 21:11:13 +00002768
Werner Lembergab6d1072001-04-02 21:30:06 +00002769 - Fixed some compiler warnings that happened since the TrueType
2770 bytecode decoder was deactivated by default.
David Turnera39acf52000-08-23 02:47:57 +00002771
Werner Lembergab6d1072001-04-02 21:30:06 +00002772 - Fixed two memory leaks:
David Turnera39acf52000-08-23 02:47:57 +00002773
Werner Lembergab6d1072001-04-02 21:30:06 +00002774 * The memory manager (16 bytes) isn't released in
2775 FT_Done_FreeType!
2776 * Using custom input streams, the copy of the original stream was
2777 never released.
David Turnera39acf52000-08-23 02:47:57 +00002778
Werner Lembergab6d1072001-04-02 21:30:06 +00002779 - Fixed the auto-hinter by performing automatic computation of the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002780 `filling direction' of each glyph. This is done through a simple
Werner Lembergab6d1072001-04-02 21:30:06 +00002781 and fast approximation, and seems to work (problems spotted by
2782 Werner though). The Arphic fonts are a lot nicer though there are
2783 still a lot of things to do to handle Asian fonts correctly.
David Turnera39acf52000-08-23 02:47:57 +00002784
David Turnerb1693412000-07-27 21:48:48 +00002785
Werner Lembergab6d1072001-04-02 21:30:06 +00002786======================================================================
Werner Lemberge4b32a52000-10-31 20:42:18 +00002787
David Turnerc5cdf8b2000-07-27 21:40:22 +00002788BETA-8 (RELEASE CANDIDATE) CHANGES
2789
Werner Lembergab6d1072001-04-02 21:30:06 +00002790 - Deactivated the TrueType bytecode interpreter by default.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002791
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002792 - Deactivated the `src/type1' font driver. Now `src/type1z' is used
Werner Lembergab6d1072001-04-02 21:30:06 +00002793 by default.
David Turner5f5b4462000-07-26 19:13:51 +00002794
Werner Lembergab6d1072001-04-02 21:30:06 +00002795 - Updates to the build system. We now compile the library correctly
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002796 under Unix system through `configure' which is automatically
2797 called on the first `make' invocation.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002798
Werner Lembergab6d1072001-04-02 21:30:06 +00002799 - Added the auto-hinting module! Fixing some bugs here and there.
David Turner5fe4c002000-07-26 19:04:08 +00002800
Werner Lembergab6d1072001-04-02 21:30:06 +00002801 - Found some bugs in the composite loader (seac) of the Type1-based
2802 font drivers.
David Turner49bd4f02000-07-12 16:57:37 +00002803
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002804 - Renamed the directory `freetype2/config' to `freetype2/builds' and
Werner Lembergab6d1072001-04-02 21:30:06 +00002805 updated all relevant files.
David Turner1ca6f2d2000-07-08 00:49:43 +00002806
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002807 - Found a memory leak in the `type1' driver.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002808
Werner Lembergab6d1072001-04-02 21:30:06 +00002809 - Incorporated Tom's patches to support flex operators correctly in
2810 OpenType/CFF fonts. Now all I need is to support pure CFF and CEF
2811 fonts to be done with this driver :-)
David Turner9b3d1c72000-07-07 19:47:34 +00002812
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002813 - Added the Windows FNT/FON driver in `src/winfonts'. For now, it
2814 always `simulates' a Unicode charmap, so it shouldn't be
Werner Lembergab6d1072001-04-02 21:30:06 +00002815 considered completed right now.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002816
Werner Lembergab6d1072001-04-02 21:30:06 +00002817 It is there to be more a proof of concept than anything else
2818 anyway. The driver is a single C source file, that compiles to 3
2819 Kb of code.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002820
Werner Lembergab6d1072001-04-02 21:30:06 +00002821 I'm still working on the PCF/BDF drivers, but I'm too lazy to
2822 finish them now.
David Turner9b3d1c72000-07-07 19:47:34 +00002823
David Turnerc06aba22000-06-30 23:38:23 +00002824 - CHANGES TO THE HIGH-LEVEL API
Werner Lemberge4b32a52000-10-31 20:42:18 +00002825
Werner Lembergab6d1072001-04-02 21:30:06 +00002826 * FT_Get_Kerning has a new parameter that allows you to select the
2827 coordinates of the kerning vector (font units, scaled, scaled +
2828 grid-fitted).
2829 * The outline functions are now in <freetype/ftoutln.h> and not
2830 part of <freetype/freetype.h> anymore.
2831 * <freetype/ftmodule.h> now contains declarations for
2832 FT_New_Library, FT_Done_Library, FT_Add_Default_Modules.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002833 * The so-called convenience functions have moved from `ftoutln.c'
2834 to `ftglyph.c', and are thus available with this optional
Werner Lembergab6d1072001-04-02 21:30:06 +00002835 component of the library. They are declared in
2836 <freetype/ftglyph.h> now.
2837 * Anti-aliased rendering is now the default for FT_Render_Glyph
David Turnerc06aba22000-06-30 23:38:23 +00002838 (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
2839 To generate a monochrome bitmap, use ft_render_mode_mono, or the
Werner Lembergab6d1072001-04-02 21:30:06 +00002840 FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char.
David Turnerc06aba22000-06-30 23:38:23 +00002841 FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
Werner Lembergab6d1072001-04-02 21:30:06 +00002842 * <freetype/freetype.h> now include <freetype/config/ftconfig.h>,
David Turnerc06aba22000-06-30 23:38:23 +00002843 solving a few headaches :-)
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002844 * The type FT_GlyphSlotRec has now a `library' field.
David Turnerc06aba22000-06-30 23:38:23 +00002845
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002846 - CHANGES TO THE `ftglyph.h' API
Werner Lemberge4b32a52000-10-31 20:42:18 +00002847
Werner Lembergab6d1072001-04-02 21:30:06 +00002848 This API has been severely modified in order to make it simpler,
2849 clearer, and more efficient. It certainly now looks like a real
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002850 `glyph factory' object, and allows client applications to manage
Werner Lembergab6d1072001-04-02 21:30:06 +00002851 (i.e. transform, bbox and render) glyph images without ever
2852 knowing their original format.
David Turnerc06aba22000-06-30 23:38:23 +00002853
Werner Lembergab6d1072001-04-02 21:30:06 +00002854 - Added support for CID-keyed fonts to the CFF driver. Maybe
2855 support for pure CFF + CEF fonts should come in?
David Turner9d636b62000-06-27 23:32:27 +00002856
Werner Lembergab6d1072001-04-02 21:30:06 +00002857 - Cleaned up source code in order to avoid two functions with the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002858 same name. Also changed the names of the files in `type1z' from
2859 `t1XXXX' to `z1XXXX' in order to avoid any conflicts.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002860
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002861 `make multi' now works well :-)
Werner Lemberge4b32a52000-10-31 20:42:18 +00002862
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002863 Also removed the use of `cidafm' for now, even if the source files
Werner Lembergab6d1072001-04-02 21:30:06 +00002864 are still there. This functionality will certainly go into a
2865 specific module.
David Turnerc06aba22000-06-30 23:38:23 +00002866
Werner Lemberge4b32a52000-10-31 20:42:18 +00002867 - ADDED SUPPORT FOR THE AUTO-HINTER
2868
Werner Lembergab6d1072001-04-02 21:30:06 +00002869 It works :-) I have a demo program which simply is a copy of
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002870 `ftview' that does a `FT_Add_Module(library,
Werner Lembergab6d1072001-04-02 21:30:06 +00002871 &autohinter_module_class)' after library initialization, and Type
2872 1 & OpenType/CFF fonts are now hinted.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002873
Werner Lembergab6d1072001-04-02 21:30:06 +00002874 CID fonts are not hinted, as they include no charmap and the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002875 auto-hinter doesn't include `generic' global metrics computations
Werner Lembergab6d1072001-04-02 21:30:06 +00002876 yet.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002877
Werner Lembergab6d1072001-04-02 21:30:06 +00002878 Now, I need to release this thing to the FreeType 2 source.
David Turner9d636b62000-06-27 23:32:27 +00002879
2880 - CHANGES TO THE RENDERER MODULES
Werner Lemberge4b32a52000-10-31 20:42:18 +00002881
Werner Lembergab6d1072001-04-02 21:30:06 +00002882 The monochrome and smooth renderers are now in two distinct
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002883 directories, namely `src/raster1' and `src/smooth'. Note that the
2884 old `src/renderer' is now gone.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002885
Werner Lembergab6d1072001-04-02 21:30:06 +00002886 I ditched the 5-gray-levels renderers. Basically, it involved a
2887 simple #define toggle in 'src/raster1/ftraster.c'.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002888
Werner Lembergab6d1072001-04-02 21:30:06 +00002889 FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now
2890 select the best renderer available, depending on render mode. If
2891 the current renderer for a given glyph image format isn't capable
2892 of supporting the render mode, another one will be found in the
2893 library's list. This means that client applications do not need
2894 to switch or set the renderers themselves (as in the latest
2895 change), they'll get what they want automatically. At last.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002896
Werner Lembergab6d1072001-04-02 21:30:06 +00002897 Changed the demo programs accordingly.
David Turner9d636b62000-06-27 23:32:27 +00002898
David Turnerf0df85b2000-06-22 00:17:42 +00002899 - MAJOR INTERNAL REDESIGN:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002900
Werner Lembergab6d1072001-04-02 21:30:06 +00002901 A lot of internal modifications have been performed lately on the
David Turnerf0df85b2000-06-22 00:17:42 +00002902 source in order to provide the following enhancements:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002903
Werner Lembergab6d1072001-04-02 21:30:06 +00002904 * More generic module support:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002905
Werner Lembergab6d1072001-04-02 21:30:06 +00002906 The FT_Module type is now defined to represent a handle to a
2907 given module. The file <freetype/ftmodule.h> contains the
2908 FT_Module_Class definition, as well as the module-loading public
2909 API.
David Turnerf0df85b2000-06-22 00:17:42 +00002910
Werner Lembergab6d1072001-04-02 21:30:06 +00002911 The FT_Driver type is still defined, and still represents a
2912 pointer to a font driver. Note that FT_Add_Driver is replaced
2913 by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc.
2914
2915 * Support for generic glyph image types:
2916
2917 The FT_Renderer type is a pointer to a module used to perform
2918 various operations on glyph image.
2919
2920 Each renderer is capable of handling images in a single format
2921 (e.g. ft_glyph_format_outline). Its functions are used to:
2922
2923 - transform an glyph image
2924 - render a glyph image into a bitmap
2925 - return the control box (dimensions) of a given glyph image
2926
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002927 The scan converters `ftraster.c' and `ftgrays.c' have been moved
2928 to the new directory `src/renderer', and are used to provide two
Werner Lembergab6d1072001-04-02 21:30:06 +00002929 default renderer modules.
2930
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002931 One corresponds to the `standard' scan-converter, the other to
2932 the `smooth' one.
Werner Lembergab6d1072001-04-02 21:30:06 +00002933
2934 he current renderer can be set through the new function
2935 FT_Set_Renderer.
2936
2937 The old raster-related function FT_Set_Raster, FT_Get_Raster and
2938 FT_Set_Raster_Mode have now disappeared, in favor of the new:
2939
2940 FT_Get_Renderer
2941 FT_Set_Renderer
2942
2943 See the file <freetype/ftrender.h> for more details.
2944
2945 These changes were necessary to properly support different
2946 scalable formats in the future, like bi-color glyphs, etc.
2947
2948 * Glyph loader object:
2949
2950 A new internal object, called a 'glyph loader' has been
2951 introduced in the base layer. It is used by all scalable format
2952 font drivers to load glyphs and composites.
2953
2954 This object has been created to reduce the code size of each
2955 driver, as each one of them basically re-implemented its
2956 functionality.
2957
2958 See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
2959 more information.
2960
2961 * FT_GlyphSlot has new fields:
2962
2963 In order to support extended features (see below), the
2964 FT_GlyphSlot structure has a few new fields:
2965
2966 linearHoriAdvance:
2967
2968 This field gives the linearly scaled (i.e. scaled but
2969 unhinted) advance width for the glyph, expressed as a 16.16
2970 fixed pixel value. This is useful to perform WYSIWYG text.
2971
2972 linearVertAdvance:
2973 This field gives the linearly scaled advance height for the
2974 glyph (relevant in vertical glyph layouts only). This is
2975 useful to perform WYSIWYG text.
2976
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002977 Note that the two above field replace the removed `metrics2'
Werner Lembergab6d1072001-04-02 21:30:06 +00002978 field in the glyph slot.
2979
2980 advance:
2981 This field is a vector that gives the transformed advance for
2982 the glyph. By default, it corresponds to the advance width,
2983 unless FT_LOAD_VERTICAL_LAYOUT was specified when calling
2984 FT_Load_Glyph or FT_Load_Char.
2985
2986 bitmap_left:
2987 This field gives the distance in integer pixels from the
2988 current pen position to the left-most pixel of a glyph image
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002989 IF IT IS A BITMAP. It is only valid when the `format' field
2990 is set to `ft_glyph_format_bitmap', for example, after calling
Werner Lembergab6d1072001-04-02 21:30:06 +00002991 the new function FT_Render_Glyph.
2992
2993 bitmap_top:
2994 This field gives the distance in integer pixels from the
2995 current pen position (located on the baseline) to the top-most
2996 pixel of the glyph image IF IT IS A BITMAP. Positive values
2997 correspond to upwards Y.
2998
2999 loader:
3000 This is a new private field for the glyph slot. Client
3001 applications should not touch it.
David Turnerf0df85b2000-06-22 00:17:42 +00003002
3003
Werner Lembergab6d1072001-04-02 21:30:06 +00003004 * Support for transforms and direct rendering in FT_Load_Glyph:
David Turnerf0df85b2000-06-22 00:17:42 +00003005
Werner Lembergab6d1072001-04-02 21:30:06 +00003006 Most of the functionality found in <freetype/ftglyph.h> has been
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003007 moved to the core library. Hence, the following:
Werner Lemberge4b32a52000-10-31 20:42:18 +00003008
Werner Lembergab6d1072001-04-02 21:30:06 +00003009 - A transform can be specified for a face through
3010 FT_Set_Transform. this transform is applied by FT_Load_Glyph
3011 to scalable glyph images (i.e. NOT TO BITMAPS) before the
3012 function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM
3013 was set in the load flags.
Werner Lemberge4b32a52000-10-31 20:42:18 +00003014
Werner Lembergab6d1072001-04-02 21:30:06 +00003015 - Once a glyph image has been loaded, it can be directly
3016 converted to a bitmap by using the new FT_Render_Glyph
3017 function. Note that this function takes the glyph image from
3018 the glyph slot, and converts it to a bitmap whose properties
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003019 are returned in `face.glyph.bitmap', `face.glyph.bitmap_left'
3020 and `face.glyph.bitmap_top'. The original native image might
Werner Lembergab6d1072001-04-02 21:30:06 +00003021 be lost after the conversion.
3022
3023 - When using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph
3024 and FT_Load_Char functions will call FT_Render_Glyph
3025 automatically when needed.
3026
3027 - Reformatted all modules source code in order to get rid of the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003028 basic data types redifinitions (i.e. `TT_Int' instead of `FT_Int',
3029 `T1_Fixed' instead of `FT_Fixed'). Hence the format-specific
3030 prefixes like `TT_', `T1_', `T2_' and `CID_' are only used for
Werner Lembergab6d1072001-04-02 21:30:06 +00003031 relevant structures.
David Turnerf0df85b2000-06-22 00:17:42 +00003032
3033
Werner Lembergab6d1072001-04-02 21:30:06 +00003034======================================================================
Werner Lemberge4b32a52000-10-31 20:42:18 +00003035
David Turnerf9b8dec2000-06-16 19:34:52 +00003036OLD CHANGES FOR BETA 7
David Turner3475e7f2000-05-17 20:56:01 +00003037
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003038 - bug-fixed the OpenType/CFF parser. It now loads and displays my
Werner Lembergab6d1072001-04-02 21:30:06 +00003039 two fonts nicely, but I'm pretty certain that more testing is
3040 needed :-)
Werner Lemberge4b32a52000-10-31 20:42:18 +00003041
David Turner2b9be992000-06-07 23:41:17 +00003042 - fixed the crummy Type 1 hinter, it now handles accented characters
Werner Lembergab6d1072001-04-02 21:30:06 +00003043 correctly (well, the accent is not always well placed, but that's
David Turner2b9be992000-06-07 23:41:17 +00003044 another problem..)
3045
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003046 - added the CID-keyed Type 1 driver in `src/cid'. Works pretty well
Werner Lembergab6d1072001-04-02 21:30:06 +00003047 for only 13 Kb of code ;-) Doesn't read AFM files though, nor the
3048 really useful CMAP files..
David Turner04aa8002000-06-01 03:27:48 +00003049
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003050 - fixed two bugs in the smooth renderer (src/base/ftgrays.c).
3051 Thanks to Boris Letocha for spotting them and providing a fix.
David Turner04aa8002000-06-01 03:27:48 +00003052
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003053 - fixed potential `divide by zero' bugs in ftcalc.c.
David Turner4f99c3c2000-05-29 20:55:13 +00003054
Werner Lembergab6d1072001-04-02 21:30:06 +00003055 - added source code for the OpenType/CFF driver (still incomplete
3056 though..)
David Turner4f99c3c2000-05-29 20:55:13 +00003057
Werner Lembergab6d1072001-04-02 21:30:06 +00003058 - modified the SFNT driver slightly to perform more robust header
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003059 checks in TT_Load_SFNT_Header. This prevents certain font files
Werner Lembergab6d1072001-04-02 21:30:06 +00003060 (e.g. some Type 1 Multiple Masters) from being incorrectly
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003061 `recognized' as TrueType font files..
David Turner4f99c3c2000-05-29 20:55:13 +00003062
Werner Lembergab6d1072001-04-02 21:30:06 +00003063 - moved a lot of stuff from the TrueType driver to the SFNT module,
3064 this allows greater code re-use between font drivers
3065 (e.g. TrueType, OpenType, Compact-TrueType, etc..)
David Turner2e421312000-05-26 22:13:17 +00003066
3067 - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
3068 to minimally speed it up..
3069
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003070 - added support for Multiple Master fonts in `type1z'. There is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003071 also a new file named <freetype/ftmm.h> which defines functions to
David Turner11187202000-05-26 17:13:23 +00003072 manage them from client applications.
Werner Lemberge4b32a52000-10-31 20:42:18 +00003073
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003074 The new file `src/base/ftmm.c' is also optional to the engine..
David Turner11187202000-05-26 17:13:23 +00003075
Werner Lembergab6d1072001-04-02 21:30:06 +00003076 - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) +
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003077 small bug fixes in FT_Load_Glyph, the `type1' driver, etc..
David Turner11187202000-05-26 17:13:23 +00003078
David Turnerf5dcdd52000-05-23 22:16:27 +00003079 - a minor fix to the Type 1 driver to let them apply the font matrix
3080 correctly (used for many oblique fonts..)
3081
David Turner51179f02000-05-18 16:18:05 +00003082 - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003083 to use %p instead of %lx). Thanks to Karl Robillard.
David Turner51179f02000-05-18 16:18:05 +00003084
Werner Lembergab6d1072001-04-02 21:30:06 +00003085 - fixed some bugs in the sbit loader (src/base/sfnt/ttsbit.c) +
3086 added a new flag, FT_LOAD_CROP_BITMAP to query that bitmaps be
3087 cropped when loaded from a file (maybe I should move the bitmap
3088 cropper to the base layer ??).
David Turner109fcf62000-05-17 23:35:37 +00003089
Werner Lembergab6d1072001-04-02 21:30:06 +00003090 - changed the default number of gray levels of the smooth renderer
3091 to 256 (instead of the previous 128). Of course, the human eye
3092 can't see any difference ;-)
David Turner3475e7f2000-05-17 20:56:01 +00003093
Werner Lembergab6d1072001-04-02 21:30:06 +00003094 - removed TT_MAX_SUBGLYPHS, there is no static limit on the number
3095 of subglyphs in a TrueType font now..
David Turner3475e7f2000-05-17 20:56:01 +00003096
Werner Lembergab6d1072001-04-02 21:30:06 +00003097
3098======================================================================
3099
David Turner3475e7f2000-05-17 20:56:01 +00003100OLD CHANGES 16 May 2000
David Turnerefce08d2000-05-11 18:23:52 +00003101
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003102 - tagged `BETA-6' in the CVS tree. This one is a serious release
Werner Lembergab6d1072001-04-02 21:30:06 +00003103 candidate even though it doesn't incorporate the auto-hinter yet..
David Turner968f0c32000-05-16 23:26:01 +00003104
3105 - various obsolete files were removed, and copyright header updated
3106
Werner Lembergab6d1072001-04-02 21:30:06 +00003107 - finally updated the standard raster to fix the monochrome
3108 rendering bug + re-enable support for 5-gray levels anti-aliasing
3109 (suck, suck..)
David Turner968f0c32000-05-16 23:26:01 +00003110
3111 - created new header files, and modified sources accordingly:
David Turnere49ab252000-05-16 23:44:38 +00003112
Werner Lembergab6d1072001-04-02 21:30:06 +00003113 <freetype/fttypes.h>
3114 - simple FreeType types, without the API
3115 <freetype/internal/ftmemory.h>
3116 - definition of memory-management macros
David Turner968f0c32000-05-16 23:26:01 +00003117
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003118 - added the `DSIG' (OpenType Digital Signature) tag to
Werner Lembergab6d1072001-04-02 21:30:06 +00003119 <freetype/tttags.h>
David Turner968f0c32000-05-16 23:26:01 +00003120
Werner Lembergab6d1072001-04-02 21:30:06 +00003121 - light update/cleaning of the build system + changes to the sources
3122 in order to get rid of _all_ compiler warnings with three
3123 compilers, i.e:
David Turnerc30aea92000-05-12 15:01:18 +00003124
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003125 gcc with `-ansi -pedantic -Wall -W', Visual C++ with `/W3 /WX' and
Werner Lembergab6d1072001-04-02 21:30:06 +00003126 LCC
David Turnerc30aea92000-05-12 15:01:18 +00003127
Werner Lembergab6d1072001-04-02 21:30:06 +00003128 IMPORTANT NOTE FOR WIN32-LCC USERS:
3129 |
3130 | It seems the C pre-processor that comes with LCC is broken, it
3131 | doesn't recognize the ANSI standard directives # and ##
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003132 | correctly when one of the argument is a macro. Also,
3133 | something like:
Werner Lembergab6d1072001-04-02 21:30:06 +00003134 |
3135 | #define F(x) print##x
3136 |
3137 | F(("hello"))
3138 |
3139 | will get incorrectly translated to:
3140 |
3141 | print "hello")
3142 |
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003143 | by its pre-processor. For this reason, you simply cannot build
Werner Lembergab6d1072001-04-02 21:30:06 +00003144 | FreeType 2 in debug mode with this compiler..
David Turnerc30aea92000-05-12 15:01:18 +00003145
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003146 - yet another massive grunt work. I've changed the definition of
3147 the EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These
3148 now take an argument, which is the function's return value type.
David Turnere49ab252000-05-16 23:44:38 +00003149
Werner Lembergab6d1072001-04-02 21:30:06 +00003150 This is necessary to compile FreeType as a DLL on Windows and
3151 OS/2. Depending on the compiler used, a compiler-specific keyword
3152 like __export or __system must be placed before (VisualC++) or
3153 after (BorlandC++) the type..
David Turnere49ab252000-05-16 23:44:38 +00003154
David Turnerbfe2f982000-05-12 12:17:15 +00003155 Of course, this needed a lot of changes throughout the source code
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003156 to make it compile again... All cleaned up now, apparently..
David Turnerbfe2f982000-05-12 12:17:15 +00003157
Werner Lembergab6d1072001-04-02 21:30:06 +00003158 Note also that there is a new EXPORT_VAR macro defined to allow
3159 the _declaration_ of an exportable public (constant)
3160 variable. This is the case of the raster interfaces (see
3161 ftraster.h and ftgrays.h), as well as each module's interface (see
3162 sfdriver.h, psdriver.h, etc..)
David Turnerbfe2f982000-05-12 12:17:15 +00003163
Werner Lembergab6d1072001-04-02 21:30:06 +00003164 - new feature: it is now possible to pass extra parameters to font
3165 drivers when creating a new face object. For now,
3166 this capability is unused. It could however prove to
3167 be useful in a near future..
David Turnerbfe2f982000-05-12 12:17:15 +00003168
Werner Lembergab6d1072001-04-02 21:30:06 +00003169 the FT_Open_Args structure was changes, as well as the internal
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003170 driver interface (the specific `init_face' module function has
Werner Lembergab6d1072001-04-02 21:30:06 +00003171 now a different signature).
David Turnerbfe2f982000-05-12 12:17:15 +00003172
3173 - updated the tutorial (not finished though).
Werner Lembergab6d1072001-04-02 21:30:06 +00003174
David Turnerc30aea92000-05-12 15:01:18 +00003175 - updated the top-level BUILD document
David Turnerbfe2f982000-05-12 12:17:15 +00003176
Werner Lembergab6d1072001-04-02 21:30:06 +00003177 - fixed a potential memory leak that could occur when loading
3178 embedded bitmaps.
David Turnerc60c61c2000-05-12 15:26:58 +00003179
Werner Lembergab6d1072001-04-02 21:30:06 +00003180 - added the declaration of FT_New_Memory_Face in
3181 <freetype/freetype.h>, as it was missing from the public header
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003182 (the implementation was already in `ftobjs.c').
David Turnerbfe2f982000-05-12 12:17:15 +00003183
Werner Lembergab6d1072001-04-02 21:30:06 +00003184 - the file <freetype/fterrors.h> has been seriously updated in order
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003185 to allow the automatic generation of error message tables. See
3186 the comments within it for more information.
David Turnerbfe2f982000-05-12 12:17:15 +00003187
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003188 - major directory hierarchy re-organisation. This was done for two
Werner Lembergab6d1072001-04-02 21:30:06 +00003189 things:
David Turnere49ab252000-05-16 23:44:38 +00003190
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003191 * first, to ease the `manual' compilation of the library by
Werner Lembergab6d1072001-04-02 21:30:06 +00003192 requiring at lot less include paths :-)
David Turnerbfe2f982000-05-12 12:17:15 +00003193
Werner Lembergab6d1072001-04-02 21:30:06 +00003194 * second, to allow external programs to effectively access
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003195 internal data fields. For example, this can be extremely
Werner Lembergab6d1072001-04-02 21:30:06 +00003196 useful if someone wants to write a font producer or a font
3197 manager on top of FreeType.
David Turnera9c251c2000-05-11 18:36:19 +00003198
Werner Lembergab6d1072001-04-02 21:30:06 +00003199 Basically, you should now use the 'freetype/' prefix for header
3200 inclusion, as in:
David Turnere49ab252000-05-16 23:44:38 +00003201
David Turnera9c251c2000-05-11 18:36:19 +00003202 #include <freetype/freetype.h>
3203 #include <freetype/ftglyph.h>
3204
3205 Some new include sub-directories are available:
David Turnere49ab252000-05-16 23:44:38 +00003206
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003207 a. the `freetype/config' directory, contains two files used to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003208 configure the build of the library. Client applications
3209 should not need to look at these normally, but they can if
3210 they want.
David Turnere49ab252000-05-16 23:44:38 +00003211
David Turnera9c251c2000-05-11 18:36:19 +00003212 #include <freetype/config/ftoption.h>
3213 #include <freetype/config/ftconfig.h>
David Turnere49ab252000-05-16 23:44:38 +00003214
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003215 b. the `freetype/internal' directory, contains header files that
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003216 describes library internals. These are the header files that
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003217 were previously found in the `src/base' and `src/shared'
Werner Lembergab6d1072001-04-02 21:30:06 +00003218 directories.
David Turnera9c251c2000-05-11 18:36:19 +00003219
3220
Werner Lembergab6d1072001-04-02 21:30:06 +00003221 As usual, the build system and the demos have been updated to
3222 reflect the change..
David Turnere49ab252000-05-16 23:44:38 +00003223
David Turnera9c251c2000-05-11 18:36:19 +00003224 Here's a layout of the new directory hierarchy:
David Turnere49ab252000-05-16 23:44:38 +00003225
Werner Lemberg89df58f2002-06-14 08:09:25 +00003226 TOP_DIR
David Turnera9c251c2000-05-11 18:36:19 +00003227 include/
3228 freetype/
3229 freetype.h
3230 ...
3231 config/
3232 ftoption.h
3233 ftconfig.h
3234 ftmodule.h
David Turnere49ab252000-05-16 23:44:38 +00003235
David Turnera9c251c2000-05-11 18:36:19 +00003236 internal/
3237 ftobjs.h
3238 ftstream.h
3239 ftcalc.h
3240 ...
David Turnere49ab252000-05-16 23:44:38 +00003241
David Turnera9c251c2000-05-11 18:36:19 +00003242 src/
3243 base/
3244 ...
David Turnere49ab252000-05-16 23:44:38 +00003245
David Turnera9c251c2000-05-11 18:36:19 +00003246 sfnt/
3247 psnames/
3248 truetype/
3249 type1/
3250 type1z/
3251
3252
Werner Lembergab6d1072001-04-02 21:30:06 +00003253 Compiling a module is now much easier, for example, the following
Werner Lemberg89df58f2002-06-14 08:09:25 +00003254 should work when in the TOP_DIR directory on an ANSI build:
David Turnere49ab252000-05-16 23:44:38 +00003255
David Turnera9c251c2000-05-11 18:36:19 +00003256 gcc -c -I./include -I./src/base src/base/ftbase.c
3257 gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
3258 etc..
3259
3260 (of course, using -Iconfig/<system> if you provide system-specific
3261 configuration files).
David Turnerefce08d2000-05-11 18:23:52 +00003262
Werner Lembergab6d1072001-04-02 21:30:06 +00003263 - updated the structure of FT_Outline_Funcs in order to allow direct
3264 coordinate scaling within the outline decomposition routine (this
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003265 is important for virtual `on' points with TrueType outlines) +
Werner Lembergab6d1072001-04-02 21:30:06 +00003266 updates to the rasters to support this..
David Turnerefce08d2000-05-11 18:23:52 +00003267
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003268 - updated the OS/2 table loading code in `src/sfnt/ttload.c' in
Werner Lembergab6d1072001-04-02 21:30:06 +00003269 order to support version 2 of the table (see OpenType 1.2 spec)
David Turnerefce08d2000-05-11 18:23:52 +00003270
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003271 - created `include/tttables.h' and `include/t1tables.h' to allow
Werner Lembergab6d1072001-04-02 21:30:06 +00003272 client applications to access some of the SFNT and T1 tables of a
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003273 face with a procedural interface (see `FT_Get_Sfnt_Table') +
Werner Lembergab6d1072001-04-02 21:30:06 +00003274 updates to internal source files to reflect the change..
David Turnerefce08d2000-05-11 18:23:52 +00003275
Werner Lembergab6d1072001-04-02 21:30:06 +00003276 - some cleanups in the source code to get rid of warnings when
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003277 compiling with the `-Wall -W -ansi -pedantic' options in gcc.
David Turnerefce08d2000-05-11 18:23:52 +00003278
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003279 - debugged and moved the smooth renderer to `src/base/ftgrays.c' and
3280 its header to `include/ftgrays.h'
David Turnerefce08d2000-05-11 18:23:52 +00003281
Werner Lembergab6d1072001-04-02 21:30:06 +00003282 - updated TT_MAX_SUBGLYPHS to 96 as some CJK fonts have composites
3283 with up to 80 sub-glyphs !! Thanks to Werner
David Turnerefce08d2000-05-11 18:23:52 +00003284
Werner Lembergab6d1072001-04-02 21:30:06 +00003285
3286======================================================================
3287
David Turnerefce08d2000-05-11 18:23:52 +00003288OLD CHANGES - 14-apr-2000
David Turner77054f22000-04-14 20:49:52 +00003289
Werner Lembergab6d1072001-04-02 21:30:06 +00003290 - fixed a bug in the TrueType glyph loader that prevented the
3291 correct loading of some CJK glyphs in mingli.ttf
David Turnere49ab252000-05-16 23:44:38 +00003292
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003293 - improved the standard Type 1 hinter in `src/type1'
David Turnere49ab252000-05-16 23:44:38 +00003294
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003295 - fixed two bugs in the experimental Type 1 driver in `src/type1z'
David Turner77054f22000-04-14 20:49:52 +00003296 to handle the new XFree86 4.0 fonts (and a few other ones..)
3297
Werner Lembergab6d1072001-04-02 21:30:06 +00003298 - the smooth renderer is now complete and supports sub-banding to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003299 render large glyphs at high speed. However, it is still located
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003300 in `demos/src/ftgrays.c' and should move to the library itself in
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003301 the next beta. NOTE: The smooth renderer doesn't compile in
David Turner77054f22000-04-14 20:49:52 +00003302 stand-alone mode anymore, but this should be fixed RSN..
David Turnere49ab252000-05-16 23:44:38 +00003303
Werner Lembergab6d1072001-04-02 21:30:06 +00003304 - introduced convenience functions to more easily deal with glyph
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003305 images, see `include/ftglyph.h' for more details, as well as the
3306 new demo program named `demos/src/ftstring.c' that demonstrates
David Turner77054f22000-04-14 20:49:52 +00003307 its use
3308
Werner Lembergab6d1072001-04-02 21:30:06 +00003309 - implemented FT_LOAD_NO_RECURSE in both the TrueType and Type 1
3310 drivers (this is required by the auto-hinter to improve its
3311 results).
David Turner77054f22000-04-14 20:49:52 +00003312
Werner Lembergab6d1072001-04-02 21:30:06 +00003313 - changed the raster interface, in order to allow client
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003314 applications to provide their own span-drawing callbacks.
3315 However, only the smooth renderer supports this. See
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003316 `FT_Raster_Params' in the file `include/ftimage.h'.
David Turner77054f22000-04-14 20:49:52 +00003317
Werner Lembergab6d1072001-04-02 21:30:06 +00003318 - fixed a small bug in FT_MulFix that caused incorrect transform
3319 computation!
David Turner77054f22000-04-14 20:49:52 +00003320
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003321 - Note: The tutorial is out-of-date.
David Turner77054f22000-04-14 20:49:52 +00003322
Werner Lembergab6d1072001-04-02 21:30:06 +00003323
3324======================================================================
3325
David Turner77054f22000-04-14 20:49:52 +00003326OLD CHANGES - 12-mar-2000
David Turnerc3c7e7f2000-03-13 14:19:31 +00003327
Werner Lembergab6d1072001-04-02 21:30:06 +00003328 - changed the layout of configuration files : now, all ANSI
3329 configuration files are located in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003330 `freetype2/config'. System-specific over-rides can be placed in
3331 `freetype2/config/<system>'.
David Turnere49ab252000-05-16 23:44:38 +00003332
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003333 - moved all configuration macros to `config/ftoption.h'
David Turnere49ab252000-05-16 23:44:38 +00003334
David Turnerc3c7e7f2000-03-13 14:19:31 +00003335 - improvements in the Type 1 driver with AFM support
David Turnere49ab252000-05-16 23:44:38 +00003336
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003337 - changed the fields in the FT_Outline structure : the old `flags'
3338 array is re-named `tags', while all ancient flags are encoded into
3339 a single unsigned int named `flags'.
David Turnerc3c7e7f2000-03-13 14:19:31 +00003340
Werner Lembergab6d1072001-04-02 21:30:06 +00003341 - introduced new flags in FT_Outline.flags (see
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003342 ft_outline_.... enums in `ftimage.h').
David Turnerc3c7e7f2000-03-13 14:19:31 +00003343
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003344 - changed outline functions to `FT_Outline_<action>' syntax
David Turnerc3c7e7f2000-03-13 14:19:31 +00003345
3346 - added a smooth anti-alias renderer to the demonstration programs
Werner Lembergab6d1072001-04-02 21:30:06 +00003347
David Turnerc3c7e7f2000-03-13 14:19:31 +00003348 - added Mac graphics driver (thanks Just)
David Turnere49ab252000-05-16 23:44:38 +00003349
Werner Lembergab6d1072001-04-02 21:30:06 +00003350 - FT_Open_Face changed in order to received a pointer to a
3351 FT_Open_Args descriptor..
David Turnere49ab252000-05-16 23:44:38 +00003352
Werner Lembergab6d1072001-04-02 21:30:06 +00003353 - various cleanups, a few more API functions implemented (see
3354 FT_Attach_File)
David Turnerc3c7e7f2000-03-13 14:19:31 +00003355
3356 - updated some docs
3357
Werner Lembergab6d1072001-04-02 21:30:06 +00003358
3359======================================================================
3360
David Turnerc3c7e7f2000-03-13 14:19:31 +00003361OLD CHANGES - 22-feb-2000
David Turner58c10b52000-02-22 14:31:42 +00003362
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003363 - introduced the `psnames' module. It is used to:
David Turner58c10b52000-02-22 14:31:42 +00003364
Werner Lembergab6d1072001-04-02 21:30:06 +00003365 o convert a Postscript glyph name into the equivalent Unicode
Werner Lembergb4142d52007-01-17 12:45:26 +00003366 character code (used by the Type 1 driver(s) to synthesize on
Werner Lembergab6d1072001-04-02 21:30:06 +00003367 the fly a Unicode charmap).
David Turner58c10b52000-02-22 14:31:42 +00003368
Werner Lembergab6d1072001-04-02 21:30:06 +00003369 o provide an interface to retrieve the Postscript names of the
3370 Macintosh, Adobe Standard & Adobe Expert character codes.
3371 (the Macintosh names are used by the SFNT-module postscript
3372 names support routines, while the other two tables are used by
3373 the Type 1 driver(s)).
David Turner58c10b52000-02-22 14:31:42 +00003374
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003375 - introduced the `type1z' alternate Type 1 driver. This is a (still
Werner Lembergab6d1072001-04-02 21:30:06 +00003376 experimental) driver for the Type 1 format that will ultimately
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003377 replace the one in `src/type1'. It uses pattern matching to load
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003378 data from the font, instead of a finite state analyzer. It works
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003379 much better than the `old' driver with `broken' fonts. It is also
David Turner58c10b52000-02-22 14:31:42 +00003380 much smaller (under 15 Kb).
3381
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003382 - the Type 1 drivers (both in `src/type1' and `src/type1z') are
Werner Lembergab6d1072001-04-02 21:30:06 +00003383 nearly complete. They both provide automatic Unicode charmap
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003384 synthesis through the `psnames' module. No re-encoding vector is
Werner Lembergab6d1072001-04-02 21:30:06 +00003385 needed. (note that they still leak memory due to some code
David Turner58c10b52000-02-22 14:31:42 +00003386 missing, and I'm getting lazy).
3387
Werner Lembergab6d1072001-04-02 21:30:06 +00003388 Trivial AFM support has been added to read kerning information but
3389 wasn't exactly tested as it should ;-)
David Turner58c10b52000-02-22 14:31:42 +00003390
Werner Lembergab6d1072001-04-02 21:30:06 +00003391 - The TrueType glyph loader has been seriously rewritten (see the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003392 file `src/truetype/ttgload.c'. It is now much, much simpler as
Werner Lembergab6d1072001-04-02 21:30:06 +00003393 well as easier to read, maintain and understand :-) Preliminary
3394 versions introduced a memory leak that has been reported by Jack
David Turner58c10b52000-02-22 14:31:42 +00003395 Davis, and is now fixed..
3396
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003397 - introduced the new `ft_glyph_format_plotter', used to represent
3398 stroked outlines like Windows `Vector' fonts, and certain Type 1
3399 fonts like `Hershey'. The corresponding raster will be written
David Turner58c10b52000-02-22 14:31:42 +00003400 soon.
3401
Werner Lembergab6d1072001-04-02 21:30:06 +00003402 - FT_New_Memory_Face is gone. Likewise, FT_Open_Face has a new
3403 interface that uses a structure to describe the input stream, the
3404 driver (if required), etc..
3405
David Turner58c10b52000-02-22 14:31:42 +00003406
3407TODO
Werner Lembergab6d1072001-04-02 21:30:06 +00003408
David Turner58c10b52000-02-22 14:31:42 +00003409 - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
3410
Werner Lembergb4142d52007-01-17 12:45:26 +00003411 - Add a function like FT_Load_Character(face, char_code, load_flags)
3412 that would really embed a call to FT_Get_Char_Index then
Werner Lembergab6d1072001-04-02 21:30:06 +00003413 FT_Load_Glyph to ease developer's work.
David Turner58c10b52000-02-22 14:31:42 +00003414
Werner Lembergab6d1072001-04-02 21:30:06 +00003415 - Update the tutorial!
3416
3417 - consider adding support for Multiple Master fonts in the Type 1
David Turner58c10b52000-02-22 14:31:42 +00003418 drivers.
3419
Werner Lembergab6d1072001-04-02 21:30:06 +00003420 - Test the AFM routines of the Type 1 drivers to check that kerning
David Turner58c10b52000-02-22 14:31:42 +00003421 information is returned correctly.
3422
Werner Lembergab6d1072001-04-02 21:30:06 +00003423 - write a decent auto-gridding component !! We need this to release
David Turner58c10b52000-02-22 14:31:42 +00003424 FreeType 2.0 gold !
3425
3426
Werner Lembergab6d1072001-04-02 21:30:06 +00003427less urgent needs:
3428
David Turner58c10b52000-02-22 14:31:42 +00003429 - add a CFF/Type2 driver
3430 - add a BDF driver
3431 - add a FNT/PCF/HBF driver
3432 - add a Speedo driver from the X11 sources
3433
3434
Werner Lembergab6d1072001-04-02 21:30:06 +00003435======================================================================
3436
David Turner58c10b52000-02-22 14:31:42 +00003437OLDER CHANGES - 27-jan-2000
David Turner633da992000-01-27 14:07:33 +00003438
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003439 - updated the `sfnt' module interface to allow several SFNT-based
David Turner633da992000-01-27 14:07:33 +00003440 drivers to co-exist peacefully
David Turnere49ab252000-05-16 23:44:38 +00003441
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003442 - updated the `T1_Face' type to better separate Postscript font
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003443 content from the rest of the FT_Face structure. Might be used
Werner Lembergab6d1072001-04-02 21:30:06 +00003444 later by the CFF/Type2 driver..
David Turnere49ab252000-05-16 23:44:38 +00003445
David Turner633da992000-01-27 14:07:33 +00003446 - added an experimental replacement Type 1 driver featuring advanced
3447 (and speedy) pattern matching to retrieve the data from postscript
3448 fonts.
3449
Werner Lembergab6d1072001-04-02 21:30:06 +00003450 - very minor changes in the implementation of FT_Set_Char_Size and
Werner Lembergb4142d52007-01-17 12:45:26 +00003451 FT_Set_Pixel_Sizes (they now implement default to lighten the font
Werner Lembergab6d1072001-04-02 21:30:06 +00003452 driver's code).
David Turner633da992000-01-27 14:07:33 +00003453
3454
Werner Lembergab6d1072001-04-02 21:30:06 +00003455======================================================================
3456
David Turner633da992000-01-27 14:07:33 +00003457OLD MESSAGE
3458
Werner Lembergb4142d52007-01-17 12:45:26 +00003459This file summarizes the changes that occurred since the last `beta'
3460of FreeType 2. Because the list is important, it has been divided into
Werner Lembergab6d1072001-04-02 21:30:06 +00003461separate sections:
David Turnerd2b1f351999-12-16 23:11:37 +00003462
David Turner5951ce91999-12-29 00:53:44 +00003463Table Of Contents:
3464
3465 I High-Level Interface (easier !)
3466 II Directory Structure
3467 III Glyph Image Formats
3468 IV Build System
3469 V Portability
3470 VI Font Drivers
David Turnerd2b1f351999-12-16 23:11:37 +00003471
David Turnerd2b1f351999-12-16 23:11:37 +00003472
Werner Lembergab6d1072001-04-02 21:30:06 +00003473----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00003474
Werner Lembergab6d1072001-04-02 21:30:06 +00003475High-Level Interface:
David Turnere49ab252000-05-16 23:44:38 +00003476
Werner Lembergab6d1072001-04-02 21:30:06 +00003477 The high-level API has been considerably simplified. Here is how:
David Turnere49ab252000-05-16 23:44:38 +00003478
Werner Lembergab6d1072001-04-02 21:30:06 +00003479 - resource objects have disappeared. this means that face objects
3480 can now be created with a single function call (see FT_New_Face
3481 and FT_Open_Face)
David Turnere49ab252000-05-16 23:44:38 +00003482
Werner Lembergab6d1072001-04-02 21:30:06 +00003483 - when calling either FT_New_Face & FT_Open_Face, a size object
3484 and a glyph slot object are automatically created for the face,
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003485 and can be accessed through `face->glyph' and `face->size' if
Werner Lembergab6d1072001-04-02 21:30:06 +00003486 one really needs to. In most cases, there's no need to call
3487 FT_New_Size or FT_New_Glyph.
3488
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003489 - similarly, FT_Load_Glyph now only takes a `face' argument
Werner Lemberg4b2e83d2007-02-01 07:58:02 +00003490 (instead of a glyph slot and a size). Also, its `result'
Werner Lembergab6d1072001-04-02 21:30:06 +00003491 parameter is gone, as the glyph image type is returned in the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003492 field `face->glyph.format'
Werner Lembergab6d1072001-04-02 21:30:06 +00003493
3494 - the list of available charmaps is directly accessible through
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003495 `face->charmaps', counting `face->num_charmaps' elements. Each
Werner Lembergab6d1072001-04-02 21:30:06 +00003496 charmap has an 'encoding' field which specifies which known
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003497 encoding it deals with. Valid values are, for example:
David Turnere49ab252000-05-16 23:44:38 +00003498
David Turnerd2b1f351999-12-16 23:11:37 +00003499 ft_encoding_unicode (for ASCII, Latin-1 and Unicode)
3500 ft_encoding_apple_roman
3501 ft_encoding_sjis
3502 ft_encoding_adobe_standard
David Turner5951ce91999-12-29 00:53:44 +00003503 ft_encoding_adobe_expert
David Turnere49ab252000-05-16 23:44:38 +00003504
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003505 other values may be added in the future. Each charmap still
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003506 holds its `platform_id' and `encoding_id' values in case the
Werner Lembergab6d1072001-04-02 21:30:06 +00003507 encoding is too exotic for the current library
David Turnerd2b1f351999-12-16 23:11:37 +00003508
3509
Werner Lembergab6d1072001-04-02 21:30:06 +00003510----------------------------------------------------------------------
3511
David Turnerd2b1f351999-12-16 23:11:37 +00003512Directory Structure:
3513
3514 Should seem obvious to most of you:
3515
3516 freetype/
3517 config/ -- configuration sub-makefiles
3518 ansi/
David Turner5951ce91999-12-29 00:53:44 +00003519 unix/ -- platform-specific configuration files
David Turnerd2b1f351999-12-16 23:11:37 +00003520 win32/
3521 os2/
3522 msdos/
3523
Werner Lembergab6d1072001-04-02 21:30:06 +00003524 include/ -- public header files, those to be included
3525 directly by client apps
David Turnerd2b1f351999-12-16 23:11:37 +00003526
3527 src/ -- sources of the library
3528 base/ -- the base layer
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003529 sfnt/ -- the sfnt `driver' (see the drivers section
Werner Lembergab6d1072001-04-02 21:30:06 +00003530 below)
David Turnerd2b1f351999-12-16 23:11:37 +00003531 truetype/ -- the truetype driver
3532 type1/ -- the type1 driver
3533 shared/ -- some header files shared between drivers
3534
3535 demos/ -- demos/tools
3536
3537 docs/ -- documentation (a bit empty for now)
3538
David Turnerd2b1f351999-12-16 23:11:37 +00003539
Werner Lembergab6d1072001-04-02 21:30:06 +00003540----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00003541
Werner Lembergab6d1072001-04-02 21:30:06 +00003542Glyph Image Formats:
David Turnerd2b1f351999-12-16 23:11:37 +00003543
Werner Lembergab6d1072001-04-02 21:30:06 +00003544 Drivers are now able to register new glyph image formats within the
3545 library. For now, the base layer supports of course bitmaps and
3546 vector outlines, but one could imagine something different like
Werner Lembergb4142d52007-01-17 12:45:26 +00003547 colored bitmaps, bi-color vectors or whatever else (Metafonts anyone
Werner Lembergab6d1072001-04-02 21:30:06 +00003548 ??).
David Turnerd2b1f351999-12-16 23:11:37 +00003549
Werner Lembergab6d1072001-04-02 21:30:06 +00003550 See the file `include/ftimage.h'. Note also that the type
3551 FT_Raster_Map is gone, and is now replaced by FT_Bitmap, which
3552 should encompass all known bitmap types.
3553
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003554 Each new image format must provide at least one `raster', i.e. a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003555 module capable of transforming the glyph image into a bitmap. It's
Werner Lembergab6d1072001-04-02 21:30:06 +00003556 also possible to change the default raster used for a given glyph
3557 image format.
3558
3559 The default outline scan-converter now uses 128 levels of grays by
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003560 default, which tends to smooth many things. Note that the demo
Werner Lembergab6d1072001-04-02 21:30:06 +00003561 programs have been updated significantly in order to display these..
David Turnerd2b1f351999-12-16 23:11:37 +00003562
3563
Werner Lembergab6d1072001-04-02 21:30:06 +00003564----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00003565
Werner Lembergab6d1072001-04-02 21:30:06 +00003566Build system:
David Turnerd2b1f351999-12-16 23:11:37 +00003567
Werner Lembergab6d1072001-04-02 21:30:06 +00003568 You still need GNU Make to build the library. The build system has
3569 been very seriously re-vamped in order to provide things like :
3570
3571 - automatic host platform detection (reverting to 'config/ansi' if
3572 it is not detected, with pseudo-standard compilation flags)
David Turnerd2b1f351999-12-16 23:11:37 +00003573
3574 - the ability to compile from the Makefiles with very different and
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003575 exotic compilers. Note that linking the library can be difficult
Werner Lembergab6d1072001-04-02 21:30:06 +00003576 for some platforms.
David Turnerd2b1f351999-12-16 23:11:37 +00003577
3578 For example, the file `config/win32/lcclib.bat' is invoked by the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003579 build system to create the `.lib' file with LCC-Win32 because its
Werner Lembergab6d1072001-04-02 21:30:06 +00003580 librarian has too many flaws to be invoked directly from the
3581 Makefile.
David Turnerd2b1f351999-12-16 23:11:37 +00003582
Werner Lembergab6d1072001-04-02 21:30:06 +00003583 Here's how it works:
David Turnerd2b1f351999-12-16 23:11:37 +00003584
Werner Lembergab6d1072001-04-02 21:30:06 +00003585 - the first time you type `make', the build system runs a series of
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003586 sub-makefiles in order to detect your host platform. It then
3587 dumps what it found, and creates a file called `config.mk' in the
3588 current directory. This is a sub-Makefile used to define many
Werner Lembergab6d1072001-04-02 21:30:06 +00003589 important Make variables used to build the library.
David Turnerd2b1f351999-12-16 23:11:37 +00003590
Werner Lembergab6d1072001-04-02 21:30:06 +00003591 - the second time, the build system detects the `config.mk' then use
3592 it to build the library. All object files go into 'obj' by
3593 default, as well as the library file, but this can easily be
3594 changed.
David Turnerd2b1f351999-12-16 23:11:37 +00003595
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003596 Note that you can run `make setup' to force another host platform
Werner Lembergab6d1072001-04-02 21:30:06 +00003597 detection even if a `config.mk' is present in the current
3598 directory. Another solution is simply to delete the file, then
3599 re-run make.
David Turnerd2b1f351999-12-16 23:11:37 +00003600
Werner Lembergab6d1072001-04-02 21:30:06 +00003601 Finally, the default compiler for all platforms is gcc (for now,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003602 this will hopefully changed in the future). You can however specify
Werner Lembergab6d1072001-04-02 21:30:06 +00003603 a different compiler by specifying it after the 'setup' target as
3604 in:
David Turnerd2b1f351999-12-16 23:11:37 +00003605
3606 gnumake setup lcc on Win32 to use the LCC compiler
3607 gnumake setup visualc on Win32 to use Visual C++
3608
Werner Lembergab6d1072001-04-02 21:30:06 +00003609 See the file `config/<system>/detect.mk' for a list of supported
3610 compilers for your platforms.
David Turnerd2b1f351999-12-16 23:11:37 +00003611
Werner Lembergab6d1072001-04-02 21:30:06 +00003612 It should be relatively easy to write new detection rules files and
David Turnerd2b1f351999-12-16 23:11:37 +00003613 config.mk..
3614
Werner Lembergab6d1072001-04-02 21:30:06 +00003615 Finally, to build the demo programs, go to `demos' and launch GNU
3616 Make, it will use the `config.mk' in the top directory to build the
3617 test programs..
David Turnerd2b1f351999-12-16 23:11:37 +00003618
David Turnerd2b1f351999-12-16 23:11:37 +00003619
Werner Lembergab6d1072001-04-02 21:30:06 +00003620----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00003621
Werner Lembergab6d1072001-04-02 21:30:06 +00003622Portability:
David Turnerd2b1f351999-12-16 23:11:37 +00003623
Werner Lembergab6d1072001-04-02 21:30:06 +00003624 In the previous beta, a single FT_System object was used to
3625 encompass all low-level operations like thread synchronisation,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003626 memory management and i/o access. This has been greatly simplified:
Werner Lembergab6d1072001-04-02 21:30:06 +00003627
3628 - thread synchronisation has been dropped, for the simple reason
3629 that the library is already re-entrant, and that if you really
3630 need two threads accessing the same FT_Library, you should
3631 really synchronize access to it yourself with a simple mutex.
3632
3633 - memory management is performed through a very simple object
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003634 called `FT_Memory', which really is a table containing a table
Werner Lembergab6d1072001-04-02 21:30:06 +00003635 of pointers to functions like malloc, realloc and free as well
3636 as some user data (closure).
David Turnerd2b1f351999-12-16 23:11:37 +00003637
3638 - resources have disappeared (they created more problems than they
Werner Lembergab6d1072001-04-02 21:30:06 +00003639 solved), and i/o management have been simplified greatly as a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003640 result. Streams are defined through FT_Stream objects, which
3641 can be either memory-based or disk-based.
David Turnerd2b1f351999-12-16 23:11:37 +00003642
Werner Lembergab6d1072001-04-02 21:30:06 +00003643 Note that each face has its own stream, which is closed only
3644 when the face object is destroyed. Hence, a function like
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003645 TT_Flush_Face in 1.x cannot be directly supported. However, if
Werner Lembergab6d1072001-04-02 21:30:06 +00003646 you really need something like this, you can easily tailor your
3647 own streams to achieve the same feature at a lower level (and
3648 use FT_Open_Face instead of FT_New_Face to create the face).
David Turnerd2b1f351999-12-16 23:11:37 +00003649
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003650 See the file `include/ftsystem.h' for more details, as well as the
3651 implementations found in `config/unix' and `config/ansi'.
David Turnerd2b1f351999-12-16 23:11:37 +00003652
3653
Werner Lembergab6d1072001-04-02 21:30:06 +00003654----------------------------------------------------------------------
David Turnere49ab252000-05-16 23:44:38 +00003655
Werner Lembergab6d1072001-04-02 21:30:06 +00003656Font Drivers:
David Turner5951ce91999-12-29 00:53:44 +00003657
Werner Lembergab6d1072001-04-02 21:30:06 +00003658 The Font Driver interface has been modified in order to support
David Turner5951ce91999-12-29 00:53:44 +00003659 extensions & versioning.
3660
3661
Werner Lembergab6d1072001-04-02 21:30:06 +00003662 The list of the font drivers that are statically linked to the
3663 library at compile time is managed through a new configuration file
David Turner5951ce91999-12-29 00:53:44 +00003664 called `config/<platform>/ftmodule.h'.
3665
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003666 This file is autogenerated when invoking `make modules'. This
3667 target will parse all sub-directories of 'src', looking for a
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003668 `module.mk' rules file, used to describe the driver to the build
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003669 system.
David Turner5951ce91999-12-29 00:53:44 +00003670
Werner Lembergab6d1072001-04-02 21:30:06 +00003671 Hence, one should call `make modules' each time a font driver is
3672 added or removed from the `src' directory.
David Turner5951ce91999-12-29 00:53:44 +00003673
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003674 Finally, this version provides a `pseudo-driver' in `src/sfnt'.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003675 This driver doesn't support font files directly, but provides
3676 services used by all TrueType-like font drivers. Hence, its code is
3677 shared between the TrueType & OpenType font formats, and possibly
3678 more formats to come if we're lucky..
David Turnerd2b1f351999-12-16 23:11:37 +00003679
Werner Lembergab6d1072001-04-02 21:30:06 +00003680
3681----------------------------------------------------------------------
3682
3683Extensions support:
David Turner5951ce91999-12-29 00:53:44 +00003684
3685 The extensions support is inspired by the one found in 1.x.
3686
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003687 Now, each font driver has its own `extension registry', which lists
Werner Lembergab6d1072001-04-02 21:30:06 +00003688 which extensions are available for the font faces managed by the
3689 driver.
David Turner5951ce91999-12-29 00:53:44 +00003690
Werner Lembergab6d1072001-04-02 21:30:06 +00003691 Extension ids are now strings, rather than 4-byte tags, as this is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003692 usually more readable.
David Turner5951ce91999-12-29 00:53:44 +00003693
3694 Each extension has:
3695 - some data, associated to each face object
3696 - an interface (table of function pointers)
3697
Werner Lembergab6d1072001-04-02 21:30:06 +00003698 An extension that is format-specific should simply register itself
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003699 to the correct font driver. Here is some example code:
David Turner5951ce91999-12-29 00:53:44 +00003700
3701 // Registering an extensions
3702 //
3703 FT_Error FT_Init_XXXX_Extension( FT_Library library )
3704 {
3705 FT_DriverInterface* tt_driver;
3706
3707 driver = FT_Get_Driver( library, "truetype" );
3708 if (!driver) return FT_Err_Unimplemented_Feature;
3709
David Turnere49ab252000-05-16 23:44:38 +00003710 return FT_Register_Extension( driver, &extension_class );
David Turner5951ce91999-12-29 00:53:44 +00003711 }
3712
David Turnere49ab252000-05-16 23:44:38 +00003713
David Turner5951ce91999-12-29 00:53:44 +00003714 // Implementing the extensions
3715 //
3716 FT_Error FT_Proceed_Extension_XXX( FT_Face face )
3717 {
3718 FT_XXX_Extension ext;
3719 FT_XXX_Extension_Interface ext_interface;
3720
3721 ext = FT_Get_Extension( face, "extensionid", &ext_interface );
3722 if (!ext) return error;
3723
3724 return ext_interface->do_it(ext);
3725 }
David Turnerd2b1f351999-12-16 23:11:37 +00003726
Werner Lemberg56c368c2005-06-04 23:00:25 +00003727------------------------------------------------------------------------
3728
Werner Lembergbd633342012-02-26 08:46:05 +01003729Copyright 2000-2012 by
Werner Lemberg56c368c2005-06-04 23:00:25 +00003730David Turner, Robert Wilhelm, and Werner Lemberg.
3731
3732This file is part of the FreeType project, and may only be used,
3733modified, and distributed under the terms of the FreeType project
3734license, LICENSE.TXT. By continuing to use, modify, or distribute this
3735file you indicate that you have read the license and understand and
3736accept it fully.
3737
3738
Werner Lemberg110246c2006-09-26 21:55:44 +00003739Local Variables:
3740version-control: never
3741coding: utf-8
3742End:
3743
Werner Lembergab6d1072001-04-02 21:30:06 +00003744--- end of CHANGES ---