blob: 56ed7ad9a15ec435a8ac24fe22adb7e41f2e47ec [file] [log] [blame]
Werner Lembergfe3433c2010-07-18 18:41:47 +02001CHANGES BETWEEN 2.4.1 and 2.4.2
2
suzuki toshiya018f5c22010-08-06 14:12:54 +09003 I. IMPORTANT BUG FIXES
4
5 - A stack overflow in CFF Type2 CharStrings interpreter is fixed.
6
Werner Lemberg6a8691e2010-08-06 22:00:38 +02007 - Handling Type 42 font deallocation was broken; additionally, the
8 library is now more robust against malformed Type 42 fonts.
9
10
suzuki toshiya018f5c22010-08-06 14:12:54 +090011 II. MISCELLANEOUS
Werner Lembergfe3433c2010-07-18 18:41:47 +020012
13 - Two new functions, `FT_Reference_Library' (in FT_MODULE_H) and
14 `FT_Reference_Face' (in FT_FREETYPE_H), have been added to
15 simplify life-cycle management. A counter gets initialized to 1
16 at the time an FT_Library (or FT_Face) structure is created.
17 The two new functions increment the respective counter.
18 `FT_Done_Library' and `FT_Done_Face' then only destroy a library
19 or face if the counter is 1, otherwise they simply decrement the
20 counter.
21
22
23======================================================================
Werner Lembergb69c6ac2010-07-18 06:20:09 +020024
25CHANGES BETWEEN 2.4.0 and 2.4.1
26
27 I. IMPORTANT CHANGES
28
29 - A serious bug in the CFF font module prevented display of many
30 glyphs in CFF fonts like `MinionPro-Regular.otf'.
31
32
33======================================================================
34
Werner Lemberg6bbbbc12010-07-04 07:37:56 +020035CHANGES BETWEEN 2.3.12 and 2.4.0
Werner Lemberg460d23f2010-04-05 08:46:26 +020036
37 I. IMPORTANT CHANGES
38
Werner Lemberg15ffc352010-07-12 22:07:16 +020039 - Since May 2010, all patents regarding the TrueType bytecode
Werner Lemberg6bbbbc12010-07-04 07:37:56 +020040 interpreter have expired worldwide. Consequently, we now define
Werner Lemberg15ffc352010-07-12 22:07:16 +020041 TT_CONFIG_OPTION_BYTECODE_INTERPRETER by default (and undefine
Werner Lemberg6bbbbc12010-07-04 07:37:56 +020042 TT_CONFIG_OPTION_UNPATENTED_HINTING).
43
Werner Lemberg460d23f2010-04-05 08:46:26 +020044 - A new function `FT_Library_SetLcdFilterWeights' is available to
45 adjust the filter weights set by `FT_Library_SetLcdFilter'.
46
Werner Lemberg15ffc352010-07-12 22:07:16 +020047
Werner Lemberg6bbbbc12010-07-04 07:37:56 +020048 II. MISCELLANEOUS
49
50 - Thanks to many reports from Robert Święcki, FreeType's stability
Werner Lemberg15ffc352010-07-12 22:07:16 +020051 in handling broken or damaged fonts is much improved.
52
53 - Support for LCD filter control has been added to the demo
54 programs `ftdiff' and `ftview'.
Werner Lemberg6bbbbc12010-07-04 07:37:56 +020055
Werner Lemberg460d23f2010-04-05 08:46:26 +020056
57======================================================================
58
Werner Lembergb36d4192010-02-13 07:57:56 +010059CHANGES BETWEEN 2.3.11 and 2.3.12
60
61 I. IMPORTANT CHANGES
62
63 - For `FT_Open_Face', new parameters are available to ignore
64 preferred family names: FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY and
65 FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY.
66
Werner Lemberg6bbbbc12010-07-04 07:37:56 +020067
Werner Lembergb36d4192010-02-13 07:57:56 +010068 II. MISCELLANEOUS
69
70 - Support for incremental font loading (controlled with the
71 FT_CONFIG_OPTION_INCREMENTAL macro) is now active by default.
72
73 - Better support for vertical metrics.
74
75 - Various minor bug fixes.
76
77
78======================================================================
79
Werner Lemberg3c4e6ba2009-10-10 20:15:49 +020080CHANGES BETWEEN 2.3.10 and 2.3.11
81
82 I. IMPORTANT BUG FIXES
83
84 - Version 2.3.10 broke PCF support.
85
86
87======================================================================
88
Werner Lembergca98f8c2009-04-04 07:42:38 +020089CHANGES BETWEEN 2.3.10 and 2.3.9
90
Werner Lemberg8b84c9d2009-04-27 19:40:35 +020091 I. IMPORTANT BUG FIXES
92
Werner Lemberg7daf8012009-04-30 20:00:22 +020093 - If all ASCII digits in a font have the same (unscaled) width,
Werner Lemberg8b84c9d2009-04-27 19:40:35 +020094 the autohinter respects this and won't change it.
95
Werner Lemberg2cd790d2009-07-19 11:18:00 +020096 - TrueType fonts are now rasterized correctly if the horizontal
97 and vertical resolution differ.
98
99 - Type 1 fonts are now handled with increased precision internally
100 to avoid serious rounding issues if non-integral coordinates are
101 encountered.
102
Werner Lembergd77cd8c2009-08-27 00:10:56 +0200103 - Horizontally condensed CFF fonts (using the font matrix) were
104 rendered incorrectly. This bug has been introduced after
105 release 2.3.5.
106
Werner Lemberg8b84c9d2009-04-27 19:40:35 +0200107
108 II. IMPORTANT CHANGES
Werner Lembergca98f8c2009-04-04 07:42:38 +0200109
110 - Support for the SFNT cmap 13 table format (as defined by the new
111 OpenType 1.6 specification) has been added.
112
Werner Lemberg140a6942009-06-18 16:07:11 +0200113 - B/W rasterization of well-hinted TrueType fonts at small sizes
114 has been greatly improved.
115
Werner Lemberge2184502009-09-23 09:28:48 +0200116 - Calculation of vertical metrics in OpenType fonts has been
117 improved.
Werner Lemberg2cd790d2009-07-19 11:18:00 +0200118
Werner Lembergbcdde602009-10-06 11:14:19 +0200119
Werner Lemberg7daf8012009-04-30 20:00:22 +0200120 III. MISCELLANEOUS
121
122 - It is now possible to change the emboldening factor in the
123 `ftview' demo program with keys `e' and `E'.
124
125 - It is now possible to change the slant value in the `ftview'
126 demo program with keys `s' and `S'.
127
Werner Lemberge2184502009-09-23 09:28:48 +0200128 - The 5-levels grayscale mode of the `ftraster' module (which
129 FreeType doesn't use by default) was broken since version 2.3.0.
130
131 - Compilation of the `ftgrays' and `ftraster' modules was broken
132 in stand-alone mode.
133
134 - Various fixes for compilation on 64bit and 16bit architectures.
Werner Lembergca98f8c2009-04-04 07:42:38 +0200135
Werner Lembergbcdde602009-10-06 11:14:19 +0200136
Werner Lembergca98f8c2009-04-04 07:42:38 +0200137======================================================================
138
Werner Lemberg59e2c8d2009-01-18 06:42:59 +0000139CHANGES BETWEEN 2.3.9 and 2.3.8
140
141 I. IMPORTANT BUG FIXES
142
Werner Lemberg15b60bb2009-03-03 21:35:32 +0000143 - Very unfortunately, FreeType 2.3.8 contained a change that broke
144 its official ABI. The end result is that programs compiled
David Turnercda6f492009-03-03 20:49:32 +0000145 against previous versions of the library, but dynamically linked
Werner Lemberg15b60bb2009-03-03 21:35:32 +0000146 to 2.3.8 can experience memory corruption if they call the
147 `FT_Get_PS_Font_Info' function.
David Turnercda6f492009-03-03 20:49:32 +0000148
Werner Lemberg15b60bb2009-03-03 21:35:32 +0000149 We recommend all users to upgrade to 2.3.9 as soon as possible,
150 or to downgrade to a previous release of the library if this is
David Turnercda6f492009-03-03 20:49:32 +0000151 not an option.
152
Werner Lemberg15b60bb2009-03-03 21:35:32 +0000153 The origin of the bug is that a new field was added to the
154 publicly defined `PS_FontInfoRec' structure. Unfortunately,
155 objects of this type can be stack or heap allocated by callers
156 of `FT_Get_PS_Font_Info', resulting in a memory buffer
157 overwrite with its implementation in 2.3.8.
David Turnercda6f492009-03-03 20:49:32 +0000158
Werner Lemberg15b60bb2009-03-03 21:35:32 +0000159 If you want to know whether your code is vulnerable to this
160 issue, simply search for the substrings `PS_FontInfo' and
161 `PS_Font_Info' in your source code. If none is found, your code
162 is safe and is not affected.
David Turnercda6f492009-03-03 20:49:32 +0000163
164 The FreeType team apologizes for the problem.
165
Suzuki, Toshiya (鈴木俊哉)5a009092009-01-22 03:50:37 +0000166 - The POSIX support of MacOS resource-fork fonts (Suitcase fonts
167 and LaserWriter Type1 PostScript fonts) was broken in 2.3.8. If
168 FreeType2 is built without Carbon framework, these fonts are not
Werner Lemberg5e83ce42009-01-22 05:53:35 +0000169 handled correctly. Version 2.3.7 didn't have this bug.
170
Werner Lemberg14de1112009-02-24 21:34:51 +0000171 - `FT_Get_Advance' (and `FT_Get_Advances') returned bad values for
172 almost all font formats except TrueType fonts.
173
Werner Lemberg42f5c712009-03-03 23:34:49 +0000174 - Fix a bug in the SFNT kerning table loader/parser which could
175 crash the engine if certain malformed tables were encountered.
Werner Lemberg59e2c8d2009-01-18 06:42:59 +0000176
Werner Lemberg21dab912009-03-09 18:06:28 +0000177 - Composite SFNT bitmaps are now handled correctly.
Werner Lemberg59e2c8d2009-01-18 06:42:59 +0000178
179
Werner Lemberg07e81812009-03-11 21:29:54 +0000180 II. IMPORTANT CHANGES
181
182 - The new functions `FT_Get_CID_Is_Internally_CID_keyed' and
183 `FT_Get_CID_From_Glyph_Index' can be used to access CID-keyed
184 CFF fonts via CID values. This code has been contributed by
185 Michael Toftdal.
186
187
188 III. MISCELLANEOUS
Werner Lemberg59e2c8d2009-01-18 06:42:59 +0000189
190 - `FT_Outline_Get_InsideBorder' returns FT_STROKER_BORDER_RIGHT
191 for empty outlines. This was incorrectly documented.
192
Werner Lemberg1e54a652009-03-11 07:10:26 +0000193 - The `ftview' demo program now supports UTF-8 encoded strings.
194
Werner Lemberg5e83ce42009-01-22 05:53:35 +0000195
Werner Lemberg59e2c8d2009-01-18 06:42:59 +0000196======================================================================
197
Werner Lemberg3d2f06f2008-07-16 06:13:34 +0000198CHANGES BETWEEN 2.3.8 and 2.3.7
199
200 I. IMPORTANT BUG FIXES
201
Werner Lemberg22e970a2008-09-20 12:20:21 +0000202 - CID-keyed fonts in an SFNT wrapper were not handled correctly.
203
Werner Lemberg70f4cff2008-09-20 16:12:05 +0000204 - The smooth renderer produced truncated images (on the right) for
205 outline parts with negative horizontal values. Most fonts don't
206 contain outlines left to the y coordinate axis, but the effect
207 was very noticeable for outlines processed with FT_Glyph_Stroke,
208 using thick strokes.
209
Werner Lembergb972a2a2008-12-11 08:55:48 +0000210 - `FT_Get_TrueType_Engine_Type' returned a wrong value if both
211 configuration macros TT_CONFIG_OPTION_BYTECODE_INTERPRETER and
212 TT_CONFIG_OPTION_UNPATENTED_HINTING were defined.
Werner Lembergc321b9b2008-11-05 14:34:29 +0000213
Werner Lemberg1ad384d2008-12-25 23:52:00 +0000214 - The `face_index' field in the `FT_Face' structure wasn't
215 initialized properly after calling FT_Open_Face and friends with
216 a positive face index for CFFs, WinFNTs, and, most importantly,
217 for TrueType Collections (TTCs).
218
Werner Lemberg22e970a2008-09-20 12:20:21 +0000219
220 II. IMPORTANT CHANGES
221
222 - Rudimentary support for Type 1 fonts and CID-keyed Type 1 fonts
223 in an SFNT wrapper has been added -- such fonts are used on the
224 Mac. The core SFNT tables `TYP1' and `CID ' are passed to the
225 PS Type 1 and CID-keyed PS font drivers; other tables (`ALMX',
226 `BBOX', etc.) are not supported yet.
Werner Lemberg3d2f06f2008-07-16 06:13:34 +0000227
Werner Lemberg174b8de2008-10-12 11:47:29 +0000228 - A new interface to extract advance values of glyphs without
229 loading their outlines has been added. The functions are called
230 `FT_Get_Advance' and `FT_Get_Advances'; they are defined in file
231 `ftadvanc.h' (to be accessed as FT_ADVANCES_H).
232
Werner Lemberg05bf6872008-12-18 06:32:10 +0000233 - A new function `FT_Get_FSType_Flags' (in FT_FREETYPE_H) has been
234 contributed by David Bevan to access the embedding and
235 subsetting restriction information of fonts.
236
Werner Lemberg174b8de2008-10-12 11:47:29 +0000237
238 III. MISCELLANEOUS
239
240 - FT_MulFix is now an inlined function; by default, assembler code
241 is provided for x86 and ARM. See FT_CONFIG_OPTION_INLINE_MULFIX
242 and FT_CONFIG_OPTION_NO_ASSEMBLER (in ftoption.h) for more.
243
Werner Lembergb972a2a2008-12-11 08:55:48 +0000244 - The handling of `tricky' fonts (this is, fonts which don't work
245 with the autohinter, needing the font format's hinting engine)
246 has been generalized and changed slightly:
247
248 . A new face flag FT_FACE_FLAG_TRICKY indicates that the font
249 format's hinting engine is necessary for correct rendering.
250 The macro FT_IS_TRICKY can be used to check this flag.
251
252 . FT_LOAD_NO_HINTING is now ignored for tricky fonts. To really
253 force raw loading of such fonts (without hinting), both
254 FT_LOAD_NO_HINTING and FT_LOAD_NO_AUTOHINT must be used --
255 this is something which you probably never want to do.
256
257 . Tricky TrueType fonts always use the bytecode interpreter,
258 either the patented or unpatented version.
259
Werner Lembergc8c4cc82008-12-17 10:50:31 +0000260 - The function `FT_GlyphSlot_Own_Bitmap' has been moved from
261 FT_SYNTHESIS_H to FT_BITMAP_H; it is now part of the `official'
262 API. (The functions in FT_SYNTHESIS_H are still subject to
263 change, however.)
264
Werner Lemberga79de112009-01-07 08:27:37 +0000265 - In the `ftdiff' demo program you can now toggle the use of
266 FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH with key `a'.
267
Werner Lemberg3d2f06f2008-07-16 06:13:34 +0000268
269======================================================================
270
Werner Lembergad83e052008-06-15 11:06:12 +0000271CHANGES BETWEEN 2.3.7 and 2.3.6
272
273 I. IMPORTANT BUG FIXES
274
275 - If the library was compiled on an i386 platform using gcc, and
276 compiler option -O3 was given, `FT_MulFix' sometimes returned
277 incorrect results which could have caused problems with
278 `FT_Request_Metrics' and `FT_Select_Metrics', returning an
279 incorrect descender size.
280
Werner Lemberg5b631d82008-06-19 16:23:43 +0000281 - Pure CFFs without subfonts were scaled incorrectly if the font
282 matrix was non-standard. This bug has been introduced in
283 version 2.3.6.
284
Werner Lembergd57a5e92008-06-18 06:16:39 +0000285 - The `style_name' field in the `FT_FaceRec' structure often
286 contained a wrong value for Type 1 fonts. This misbehaviour
287 has been introduced in version 2.3.6 while trying to fix
288 another problem. [Note, however, that this value is
289 informative only since the used algorithm to extract it is
290 very simplistic.]
291
Werner Lembergad83e052008-06-15 11:06:12 +0000292
Werner Lemberg745a4f42008-06-22 22:41:24 +0000293 II. IMPORTANT CHANGES
294
295 - Two new macros, FT_OUTLINE_SMART_DROPOUTS and
296 FT_OUTLINE_EXCLUDE_STUBS, have been introduced. Together with
Werner Lemberg959cb8e2008-06-25 20:58:33 +0000297 FT_OUTLINE_IGNORE_DROPOUTS (which was ignored previously) it is
Werner Lemberg745a4f42008-06-22 22:41:24 +0000298 now possible to control the dropout mode of the `raster' module
299 (for B&W rasterization), using the `flags' field in the
300 `FT_Outline' structure.
301
302 - The TrueType bytecode interpreter now passes the dropout mode to
303 the B&W rasterizer. This greatly increases the output for small
Werner Lembergbe54a682008-06-29 07:43:41 +0000304 ppem values of many fonts like `pala.ttf'.
Werner Lemberg745a4f42008-06-22 22:41:24 +0000305
306
Werner Lembergad83e052008-06-15 11:06:12 +0000307======================================================================
Werner Lembergdf49e692007-05-04 06:30:05 +0000308
Werner Lembergef915c32007-07-16 20:46:05 +0000309CHANGES BETWEEN 2.3.6 and 2.3.5
310
Werner Lemberg9a966b72007-10-15 17:21:32 +0000311 I. IMPORTANT BUG FIXES
312
Werner Lemberg6174e172008-06-10 05:58:25 +0000313 - A bunch of potential security problems have been found. All
314 users should update.
315
Werner Lemberg9a966b72007-10-15 17:21:32 +0000316 - Microsoft Unicode cmaps in TrueType fonts are now always
317 preferred over Apple cmaps. This is not a bug per se, but there
318 exist some buggy fonts created for MS which have broken Apple
319 cmaps. This affects only the automatic selection of FreeType;
320 it's always possible to manually select an Apple Unicode cmap if
321 desired.
322
Werner Lemberg7cb9ec02008-06-09 20:49:29 +0000323 - Many bug fixes to the TrueType bytecode interpreter.
324
Werner Lemberg5057e362008-02-29 07:23:02 +0000325 - Improved Mac support.
326
Werner Lemberg210d6182008-04-01 05:55:48 +0000327 - Subsetted CID-keyed CFFs are now supported correctly.
328
Werner Lemberge6e6ead2008-05-14 23:05:38 +0000329 - CID-keyed CFFs with subfonts which are scaled in a non-standard
330 way are now handled correctly.
331
Werner Lembergfb572282008-05-13 12:10:04 +0000332 - A call to FT_Open_Face with `face_index' < 0 crashed FreeType if
333 the font was a Windows (bitmap) FNT/FON.
Werner Lemberg9a966b72007-10-15 17:21:32 +0000334
Werner Lemberg16dc51f2008-05-18 17:36:15 +0000335
Werner Lembergef915c32007-07-16 20:46:05 +0000336 II. IMPORTANT CHANGES
337
338 - The new function `FT_Get_CID_Registry_Ordering_Supplement' gives
339 access to those fields in a CID-keyed font. The code has been
340 contributed by Derek Clegg.
341
Werner Lembergd76fe5a2007-08-08 06:38:06 +0000342 - George Williams contributed code to validate the new `MATH'
343 OpenType table (within the `otvalid' module). The `ftvalid'
344 demo program has been extended accordingly.
Werner Lembergef915c32007-07-16 20:46:05 +0000345
Werner Lemberg9a966b72007-10-15 17:21:32 +0000346 - An API for cmap 14 support (for Unicode Variant Selectors, UVS)
347 has been contributed by George Williams.
348
Werner Lemberg210d6182008-04-01 05:55:48 +0000349 - A new face flag FT_FACE_FLAG_CID_KEYED has been added, together
350 with a macro FT_IS_CID_KEYED which evaluates to 1 if the font is
351 CID-keyed.
352
Werner Lemberg5057e362008-02-29 07:23:02 +0000353
Werner Lemberg85751172008-03-21 07:16:00 +0000354 III. MISCELLANEOUS
Werner Lemberg5057e362008-02-29 07:23:02 +0000355
356 - Build support for symbian has been contributed.
357
Werner Lemberga2f17cc2008-05-17 10:01:45 +0000358 - Better WGL4 glyph name support, contributed by Sergey Tolstov.
359
Werner Lemberg16dc51f2008-05-18 17:36:15 +0000360 - Debugging output of the various FT_TRACEX macros is now sent to
361 stderr.
362
Werner Lemberg6174e172008-06-10 05:58:25 +0000363 - The `ftview' demo program now provides artificial slanting too.
364
365 - The `ftvalid' demo program has a new option `-f' to select the
366 font index.
367
Werner Lemberg5057e362008-02-29 07:23:02 +0000368
Werner Lembergef915c32007-07-16 20:46:05 +0000369======================================================================
370
Werner Lembergdf49e692007-05-04 06:30:05 +0000371CHANGES BETWEEN 2.3.5 and 2.3.4
372
Werner Lembergc1d22572007-05-19 07:24:55 +0000373 I. IMPORTANT BUG FIXES
374
375 - Some subglyphs in TrueType fonts were handled incorrectly due to
376 a missing graphics state reinitialization.
377
Werner Lemberg1c8980e2007-05-25 07:11:12 +0000378 - Large .Z files (as distributed with some X11 packages) weren't
379 handled correctly, making FreeType increase the heap stack in an
380 endless loop.
381
Werner Lembergaa52eab2007-07-02 15:14:50 +0000382 - A large number of bugs have been fixed to avoid crashes and
383 endless loops with invalid fonts.
384
Werner Lembergc1d22572007-05-19 07:24:55 +0000385
386 II. IMPORTANT CHANGES
387
Werner Lemberg1c8980e2007-05-25 07:11:12 +0000388 - The two new cache functions `FTC_ImageCache_LookupScaler' and
389 `FTC_SBit_Cache_LookupScaler' have been added to allow lookup of
390 glyphs using an `FTC_Scaler' object; this makes it possible to
Werner Lemberg99e0c182007-05-29 07:00:23 +0000391 use fractional pixel sizes in the cache. The demo programs have
392 been updated accordingly to use this feature.
Werner Lemberg1c8980e2007-05-25 07:11:12 +0000393
Werner Lemberg99e0c182007-05-29 07:00:23 +0000394 - A new API `FT_Get_CMap_Format' has been added to get the cmap
Werner Lemberg79944112007-05-19 14:10:06 +0000395 format of a TrueType font. This is useful in handling PDF
Werner Lembergc1d22572007-05-19 07:24:55 +0000396 files. The code has been contributed by Derek Clegg.
397
Werner Lemberg99e0c182007-05-29 07:00:23 +0000398 - The auto-hinter now produces better output by default for
399 non-Latin scripts like Indic. This was done by using the CJK
400 hinting module as the default instead of the Latin one. Thanks
401 to Rahul Bhalerao for this suggestion.
402
Werner Lembergf6c120f2007-06-11 04:55:58 +0000403 - A new API `FT_Face_CheckTrueTypePatents' has been added to find
404 out whether a given TrueType font uses patented bytecode
Werner Lemberge9f47992007-06-16 09:32:31 +0000405 instructions. The `ft2demos' bundle contains a new program
406 called `ftpatchk' which demonstrates its usage.
Werner Lembergf6c120f2007-06-11 04:55:58 +0000407
Werner Lembergaa52eab2007-07-02 15:14:50 +0000408 - A new API `FT_Face_SetUnpatentedHinting' has been added to
409 enable or disable the unpatented hinter.
410
Werner Lembergab1604b2007-06-16 07:59:39 +0000411 - Support for Windows FON files in PE format has been contributed
412 by Dmitry Timoshkov.
413
Werner Lembergc1d22572007-05-19 07:24:55 +0000414
415 III. MISCELLANEOUS
Werner Lembergdf49e692007-05-04 06:30:05 +0000416
417 - Vincent Richomme contributed Visual C++ project files for Pocket
418 PCs.
419
420
421======================================================================
422
Werner Lemberg14bf82e2007-04-10 04:09:49 +0000423CHANGES BETWEEN 2.3.4 and 2.3.3
424
425 I. IMPORTANT BUG FIXES
426
427 - A serious bug in the handling of bitmap fonts (and bitmap
428 strikes of outline fonts) has been introduced in 2.3.3.
429
430
431======================================================================
432
David Turner23553d62007-03-26 13:37:17 +0000433CHANGES BETWEEN 2.3.3 and 2.3.2
434
435 I. IMPORTANT BUG FIXES
436
437 - Remove a serious regression in the TrueType bytecode interpreter
Werner Lemberg644b1ad2007-03-28 21:17:11 +0000438 that was introduced in version 2.3.2. Note that this does not
Werner Lemberg79944112007-05-19 14:10:06 +0000439 disable the improvements introduced to the interpreter in
440 version 2.3.2, only some ill cases that occurred with certain
441 fonts (though a few popular ones).
David Turner23553d62007-03-26 13:37:17 +0000442
Werner Lemberg644b1ad2007-03-28 21:17:11 +0000443 - The auto-hinter now ignores single-point contours for computing
444 blue zones. This bug created `wavy' baselines when rendering
445 text with various fonts that use these contours to model
446 mark-attach points (these are points that are never rasterized
447 and are placed outside of the glyph's real outline).
David Turner23553d62007-03-26 13:37:17 +0000448
Werner Lemberg79944112007-05-19 14:10:06 +0000449 - The `rsb_delta' and `lsb_delta' glyph slot fields are now set to
Werner Lemberg99e0c182007-05-29 07:00:23 +0000450 zero for mono-spaced fonts. Otherwise code that uses them would
David Turner23553d62007-03-26 13:37:17 +0000451 essentially ruin the fixed-advance property.
452
Werner Lemberg79944112007-05-19 14:10:06 +0000453 - Fix CVE-2007-1351 which can cause an integer overflow while
454 parsing BDF fonts, leading to a potentially exploitable heap
Werner Lemberg9f83e052007-04-05 02:28:23 +0000455 overflow condition.
456
Werner Lemberg99e0c182007-05-29 07:00:23 +0000457
Werner Lemberg644b1ad2007-03-28 21:17:11 +0000458 II. MISCELLANEOUS
459
460 - Fixed compilation issues on some 64-bit platforms (see ChangeLog
461 for details).
462
463 - A new demo program `ftdiff' has been added to compare TrueType
464 hinting, FreeType's auto hinting, and rendering without hinting
465 in three columns.
466
467
David Turner23553d62007-03-26 13:37:17 +0000468======================================================================
Werner Lemberg644b1ad2007-03-28 21:17:11 +0000469
David Turner121cad52007-03-08 16:43:50 +0000470CHANGES BETWEEN 2.3.2 and 2.3.1
471
472 I. IMPORTANT BUG FIXES
473
Werner Lemberg25d592a2007-03-09 07:59:35 +0000474 - FreeType returned incorrect kerning information from TrueType
475 fonts when the bytecode interpreter was enabled. This happened
476 due to a typo introduced in version 2.3.0.
David Turner121cad52007-03-08 16:43:50 +0000477
Werner Lemberg25d592a2007-03-09 07:59:35 +0000478 - Negative kerning values from PFM files are now reported
479 correctly (they were read as 16-bit unsigned values from the
480 file).
David Turner121cad52007-03-08 16:43:50 +0000481
Werner Lemberg25d592a2007-03-09 07:59:35 +0000482 - Fixed a small memory leak when `FT_Init_FreeType' failed for
483 some reason.
David Turner121cad52007-03-08 16:43:50 +0000484
Werner Lemberg25d592a2007-03-09 07:59:35 +0000485 - The Postscript hinter placed and sized very thin and ghost stems
486 incorrectly.
David Turner121cad52007-03-08 16:43:50 +0000487
Werner Lemberg25d592a2007-03-09 07:59:35 +0000488 - The TrueType bytecode interpreter has been fixed to get rid of
489 most of the rare differences seen in comparison to the Windows
490 font loader.
491
David Turner121cad52007-03-08 16:43:50 +0000492
493 II. IMPORTANT CHANGES
494
Werner Lemberg25d592a2007-03-09 07:59:35 +0000495 - The auto-hinter now better deals with serifs and corner cases
496 (e.g., glyph '9' in Arial at 9pt, 96dpi). It also improves
497 spacing adjustments and doesn't change widths for non-spacing
498 glyphs.
David Turner121cad52007-03-08 16:43:50 +0000499
Werner Lemberg25d592a2007-03-09 07:59:35 +0000500 - Many Mac-specific functions are deprecated (but still
501 available); modern replacements have been provided for them.
502 See the documentation in file `ftmac.h'.
503
David Turner121cad52007-03-08 16:43:50 +0000504
505======================================================================
506
Werner Lemberg53935932007-01-31 08:53:02 +0000507CHANGES BETWEEN 2.3.1 and 2.3.0
Werner Lemberg555258f2007-01-21 09:46:37 +0000508
509 I. IMPORTANT BUG FIXES
510
511 - The TrueType interpreter sometimes returned incorrect horizontal
512 metrics due to a bug in the handling of the SHZ instruction.
513
Werner Lembergb1be9e82007-01-25 11:50:00 +0000514 - A typo in a security check introduced after version 2.2.1
515 prevented FreeType to render some glyphs in CFF fonts.
516
Werner Lembergd7855662007-01-25 13:53:56 +0000517
Werner Lemberg555258f2007-01-21 09:46:37 +0000518======================================================================
519
Werner Lemberg17432b52007-01-12 09:28:44 +0000520CHANGES BETWEEN 2.3.0 and 2.2.1
David Turnere3d6e942006-09-26 16:58:21 +0000521
522 I. IMPORTANT BUG FIXES
523
Werner Lemberg110246c2006-09-26 21:55:44 +0000524 - The PCF font loader is now much more robust while loading
525 malformed font files.
David Turnere3d6e942006-09-26 16:58:21 +0000526
Werner Lemberg110246c2006-09-26 21:55:44 +0000527 - Various memory leaks have been found and fixed.
528
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000529 - The TrueType name loader now deals properly with some fonts that
530 encode their names in UTF-16 (the specification was vague, and
531 the code incorrectly assumed UCS-4).
David Turnere3d6e942006-09-26 16:58:21 +0000532
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000533 - Fixed the TrueType bytecode loader to deal properly with subtle
534 monochrome/gray issues when scaling the CVT. Some fonts
535 exhibited bad rendering artifacts otherwise.
David Turner4f7496e2007-01-09 09:21:16 +0000536
Werner Lembergb4142d52007-01-17 12:45:26 +0000537 - `FT_GlyphSlot_Embolden' now supports vertical layouts correctly
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000538 (it mangled the vertical advance height).
539
Werner Lembergb4142d52007-01-17 12:45:26 +0000540 - Fixed byte endian issues of `ftmac.c' to support Mac OS X on
541 i386.
542
543 - The PFR font loader no longer erroneously tags font files
544 without any outlines as FT_FACE_FLAG_SCALABLE.
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000545
David Turner4f7496e2007-01-09 09:21:16 +0000546
547 II. NEW API FUNCTIONS
548
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000549 - `FT_Library_SetLcdFilter' allows you to select a special filter
550 to be applied to the bitmaps generated by `FT_Render_Glyph' if
551 one of the FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V modes has
552 been selected. This filter is used to reduce color fringes;
553 several settings are available through the FT_LCD_FILTER_XXX
554 enumeration.
David Turner4f7496e2007-01-09 09:21:16 +0000555
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000556 Its declaration and documentation can be found in file
557 `include/freetype/ftlcdfil.h' (to be accessed with macro
558 FT_LCD_FILTER_H).
David Turner4f7496e2007-01-09 09:21:16 +0000559
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000560 *IMPORTANT*: This function returns an error
561 (FT_Err_Unimplemented_Feature) in default builds of the library
562 for patent reasons. See below.
David Turner4f7496e2007-01-09 09:21:16 +0000563
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000564 - `FT_Get_Gasp' allows you to query the flags of the TrueType
565 `gasp' table for a given character pixel size. This is useful
Werner Lembergb4142d52007-01-17 12:45:26 +0000566 to duplicate the text rendering of MS Windows when the native
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000567 bytecode interpreter is enabled (which isn't the default for
568 other patent reasons).
David Turner4f7496e2007-01-09 09:21:16 +0000569
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000570 Its declaration and documentation can be found in file
571 `include/freetype/ftgasp.h' (to be accessed with macro
572 FT_GASP_H).
David Turner4f7496e2007-01-09 09:21:16 +0000573
574
575 III. IMPORTANT CHANGES
576
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000577 - The auto-hinter has been tuned a lot to improve its results with
578 serif fonts, resulting in much better font rendering of many web
579 pages.
David Turnere3d6e942006-09-26 16:58:21 +0000580
Werner Lemberg110246c2006-09-26 21:55:44 +0000581 - The unpatented hinter is now part of the default build of the
582 library; we have added code to automatically support `tricky'
David Turnere3d6e942006-09-26 16:58:21 +0000583 fonts that need it.
584
Werner Lemberg110246c2006-09-26 21:55:44 +0000585 This means that FreeType should `just work' with certain Asian
586 fonts, like MingLiU, which cannot properly be loaded without a
587 bytecode interpreter, but which fortunately do not use any of
588 the patented bytecode opcodes. We detect these fonts by name,
589 so please report any font file that doesn't seem to work with
590 FreeType, and we shall do what we can to support it in a next
591 release.
David Turnere3d6e942006-09-26 16:58:21 +0000592
Werner Lemberg110246c2006-09-26 21:55:44 +0000593 Note that the API hasn't changed, so you can still force
Werner Lembergb4142d52007-01-17 12:45:26 +0000594 unpatented hinting with a special parameter to `FT_Open_Face' as
Werner Lemberg110246c2006-09-26 21:55:44 +0000595 well. This might be useful in same cases; for example, a PDF
596 reader might present a user option to activate it to deal with
597 certain `tricky' embedded fonts which cannot be clearly
598 identified.
David Turnere3d6e942006-09-26 16:58:21 +0000599
Werner Lemberg110246c2006-09-26 21:55:44 +0000600 If you are a developer for embedded systems, you might want to
601 *disable* the feature to save code space by undefining
Werner Lembergb4142d52007-01-17 12:45:26 +0000602 TT_CONFIG_OPTION_UNPATENTED_HINTING in file `ftoption.h'.
David Turnere3d6e942006-09-26 16:58:21 +0000603
Werner Lembergb4142d52007-01-17 12:45:26 +0000604 - LCD-optimized rendering is now *disabled* in all default builds
605 of the library, mainly due to patent issues. For more
606 information see:
David Turnere3d6e942006-09-26 16:58:21 +0000607
608 http://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html
609
Werner Lemberg110246c2006-09-26 21:55:44 +0000610 A new configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING
Werner Lembergb4142d52007-01-17 12:45:26 +0000611 has been introduced in `ftoption.h'; manually define it in this
Werner Lemberg110246c2006-09-26 21:55:44 +0000612 file if you want to re-enable the feature.
David Turnere3d6e942006-09-26 16:58:21 +0000613
Werner Lemberg110246c2006-09-26 21:55:44 +0000614 The change only affects the implementation, not the FreeType
615 API. This means that clients don't need to be modified, because
616 the library still generates LCD decimated bitmaps, but with the
617 added constraint that R=G=B on each triplet.
David Turnere3d6e942006-09-26 16:58:21 +0000618
Werner Lemberg110246c2006-09-26 21:55:44 +0000619 The displayed result should be equal to normal anti-aliased
David Turnere3d6e942006-09-26 16:58:21 +0000620 rendering.
621
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000622 Additionally, if FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
623 defined, the new `FT_Library_SetLcdFilter' function returns the
624 FT_Err_Unimplemented_Feature error code.
David Turner4f7496e2007-01-09 09:21:16 +0000625
Werner Lemberg110246c2006-09-26 21:55:44 +0000626 - Some computation bugs in the TrueType bytecode interpreter were
627 found, which allow us to get rid of very subtle and rare
628 differences we had experienced with the Windows renderer.
629
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000630 - It is now possible to cross-compile the library easily. See the
Werner Lembergb4142d52007-01-17 12:45:26 +0000631 file `docs/INSTALL.CROSS' for details.
David Turner4f7496e2007-01-09 09:21:16 +0000632
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000633 - The file `src/base/ftmac.c' now contains code for Mac OS X only;
634 its deprecated function `FT_GetFile_From_Mac_Font_Name' always
Werner Lembergb4142d52007-01-17 12:45:26 +0000635 returns an error even if the QuickDraw framework is available.
636 The previous version has been moved to `builds/mac/ftmac.c'.
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000637
638 Selecting configure option `--with-quickdraw-carbon' makes the
639 build process use the original `ftmac.c' file instead of the Mac
640 OS X-only version.
641
David Turner4f7496e2007-01-09 09:21:16 +0000642
Werner Lemberg8c4120d2007-01-15 06:42:40 +0000643 IV. MISCELLANEOUS
David Turnere3d6e942006-09-26 16:58:21 +0000644
David Turner4f7496e2007-01-09 09:21:16 +0000645 - Various performance and memory footprint optimizations have been
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000646 performed on the TrueType and CFF font loaders, sometimes with
647 very drastic benefits (e.g., the TrueType loader is now about
648 25% faster; FreeType should use less heap memory under nearly
Werner Lembergb4142d52007-01-17 12:45:26 +0000649 all conditions).
David Turnere3d6e942006-09-26 16:58:21 +0000650
Werner Lemberg110246c2006-09-26 21:55:44 +0000651 - The anti-aliased rasterizer has been optimized and is now 15% to
652 25% percent faster than in previous versions, depending on
653 content.
David Turnere3d6e942006-09-26 16:58:21 +0000654
Werner Lemberg110246c2006-09-26 21:55:44 +0000655 - The Type 1 loader has been improved; as an example, it now skips
656 top-level dictionaries properly.
657
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000658 - Better support for Mac fonts on POSIX systems, plus compilation
659 fixes for Mac OS X on ppc64 where `ftmac.c' cannot be built.
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000660
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000661 - Configuration without `--with-old-mac-fonts' does not include
662 `ftmac.c' (this was the behaviour in FreeType version 2.1.10).
Werner Lembergb0398be2007-01-13 08:52:27 +0000663
Werner Lemberg17432b52007-01-12 09:28:44 +0000664 - The TrueTypeGX validator (gxvalid) checks the order of glyph IDs
665 in the kern table.
666
David Turnere3d6e942006-09-26 16:58:21 +0000667
668======================================================================
669
Werner Lemberg94168f02006-05-11 07:07:09 +0000670CHANGES BETWEEN 2.2.1 and 2.2
Werner Lemberg1639c792006-05-06 16:44:58 +0000671
672 I. IMPORTANT BUG FIXES
673
674 - Various integer overflows have been fixed.
675
676 - PFB fonts with MacOS resource fork weren't handled correctly on
677 non-MacOS platforms.
678
679
680======================================================================
681
Werner Lemberg94168f02006-05-11 07:07:09 +0000682CHANGES BETWEEN 2.2 and 2.1.10
Werner Lemberg49f4d342005-06-16 19:07:08 +0000683
Werner Lemberg1639c792006-05-06 16:44:58 +0000684(not released officially)
685
Werner Lemberg49f4d342005-06-16 19:07:08 +0000686 I. IMPORTANT BUG FIXES
687
688 - Vertical metrics for SFNT fonts were incorrect sometimes.
689
Werner Lemberg7e25c682005-09-09 18:00:06 +0000690 - The FT_HAS_KERNING macro always returned 0.
691
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000692 - CFF OpenType fonts didn't return correct vertical metrics for
Werner Lembergcfc0cf22005-11-17 08:12:00 +0000693 glyphs with outlines.
694
Werner Lemberg6c990452005-11-18 21:10:59 +0000695 - If FreeType was compiled without hinters, all font formats based
696 on PS outlines weren't scaled correctly.
697
Werner Lemberg435046b2006-01-11 10:57:42 +0000698
Werner Lemberg49f4d342005-06-16 19:07:08 +0000699 II. IMPORTANT CHANGES
700
Werner Lemberge88d24c2006-02-28 21:49:54 +0000701 - Version 2.2 no longer exposes its internals, this is, the header
702 files located in the `include/freetype/internal' directory of
703 the source package are not copied anymore by the `make install'
704 command. Consequently, a number of rogue clients which directly
705 access FreeType's internal functions and structures won't
706 compile without modification.
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000707
Werner Lemberge88d24c2006-02-28 21:49:54 +0000708 We provide patches for most of those rogue clients. See the
709 following page for more information:
David Turnere9a47192006-02-28 09:26:58 +0000710
Werner Lemberg94168f02006-05-11 07:07:09 +0000711 http://www.freetype.org/freetype2/patches/rogue-patches.html
Werner Lemberge88d24c2006-02-28 21:49:54 +0000712
713 Note that, as a convenience to our Unix desktop users, version
714 2.2 is *binary* compatible with FreeType 2.1.7, which means that
715 installing this release on an existing distribution shall not
716 break any working desktop.
David Turnere9a47192006-02-28 09:26:58 +0000717
Werner Lemberg59939242006-01-31 20:17:42 +0000718 - FreeType's build mechanism has been redesigned. With GNU make
719 it is now sufficient in most cases to edit two files:
720 `modules.cfg', to select the library components, and the
721 configuration file `include/freetype/config/ftoption.h' (which
722 can be copied to the objects directory). Removing unused module
723 directories to prevent its compilation and editing
724 `include/freetype/config/ftmodule.h' is no longer necessary.
725
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000726 - The LIGHT hinting algorithm produces more pleasant results.
727 Also, using the FT_LOAD_TARGET_LIGHT flags within FT_Load_Glyph
Werner Lemberg40917862006-04-01 18:49:07 +0000728 always forces auto-hinting, as a special exception. This allows
729 you to experiment with it even if you have enabled the TrueType
David Turnercf603712006-04-01 16:22:06 +0000730 bytecode interpreter in your build.
731
732 - The auto hinter now employs a new algorithm for CJK fonts, based
733 on Akito Hirai's patch. Note that this only works for fonts
734 with a Unicode charmap at the moment.
David Turnere6bb9532005-12-23 13:32:06 +0000735
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000736 - The following callback function types have changed slightly (by
Werner Lemberg49f4d342005-06-16 19:07:08 +0000737 adding the `const' keyword where appropriate):
738
739 FT_Outline_MoveToFunc
740 FT_Outline_LineToFunc
741 FT_Outline_ConicToFunc
742 FT_Outline_CubicToFunc
743 FT_SpanFunc
744 FT_Raster_RenderFunc
745
746 FT_Glyph_TransformFunc
747 FT_Renderer_RenderFunc
748 FT_Renderer_TransformFunc
749
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000750 Note that this doesn't affect binary backward compatibility.
Werner Lemberg49f4d342005-06-16 19:07:08 +0000751
Werner Lemberg435046b2006-01-11 10:57:42 +0000752 - On MacOS, new APIs have been added as replacements for legacy
753 APIs: `FT_New_Face_From_FSRef' for `FT_New_Face_From_FSSpec',
754 and `FT_GetFile_From_Mac_ATS_Name' for
755 `FT_GetFile_From_Mac_Name'. Legacy APIs are still available, if
756 FreeType is built without disabling them.
757
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000758 - A new API `FT_Select_Size' has been added to select a bitmap
759 strike by its index. Code using other functions to select
760 bitmap strikes should be updated to use this function.
Wu, Chia-I (吳佳一)e33dc2e2006-01-14 05:09:30 +0000761
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000762 - A new API `FT_Get_SubGlyph_Info' has been added to retrieve
Werner Lemberg40917862006-04-01 18:49:07 +0000763 subglyph data. This can be used by rogue clients which used to
David Turnercf603712006-04-01 16:22:06 +0000764 access the internal headers to get the corresponding data.
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000765
766 - In 2.1.10, the behaviour of `FT_Set_Pixel_Sizes' was changed for
Werner Lemberge88d24c2006-02-28 21:49:54 +0000767 BDF/PCF fonts, and only for them. This causes inconsistency.
768 In this release, we undo the change. The intent of the change
Wu, Chia-I (吳佳一)e33dc2e2006-01-14 05:09:30 +0000769 in 2.1.10 is to allow size selection through real dimensions,
770 which can now be done through `FT_Request_Size'.
771
Werner Lemberge88d24c2006-02-28 21:49:54 +0000772 - Some security issues were discovered and fixed in the CFF and
773 Type 1 loader, causing crashes of FreeType by malformed font
774 files.
775
Suzuki, Toshiya (鈴木俊哉)f8d16cc2006-01-11 09:28:38 +0000776
Werner Lemberg49f4d342005-06-16 19:07:08 +0000777 III. MISCELLANEOUS
778
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000779 - The documentation for FT_LOAD_TARGET_XXX and FT_RENDER_MODE_XXX
780 values now better reflects its usage and differences: One set is
David Turnerdad2a2d2006-03-20 11:48:13 +0000781 used to specify the hinting algorithm, the other to specify the
782 pixel rendering mode.
Werner Lemberge88d24c2006-02-28 21:49:54 +0000783
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000784 - `FT_New_Face' and `FT_New_Face_From_FSSpec' in ftmac.c have been
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000785 changed to count supported scalable faces (sfnt, LWFN) only, and
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000786 to return the number of available faces via face->num_faces.
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000787 Unsupported bitmap faces (fbit, NFNT) are ignored.
Suzuki, Toshiya (鈴木俊哉)53be6e92005-12-23 12:22:46 +0000788
Werner Lemberg435046b2006-01-11 10:57:42 +0000789 - builds/unix/configure has been improved for MacOS X. It now
790 automatically checks available functions in Carbon library, and
791 prepare to use newest functions by default. Options to specify
792 the dependencies of each Carbon APIs (FSSpec, FSRef, old/new
793 QuickDraw, ATS) are available too. By manual disabling of all
794 QuickDraw functionality, FreeType can be built without
795 `deprecated function' warnings on MacOS 10.4.x, but
796 FT_GetFile_Mac_Name in ftmac.c then is changed to a dummy
797 function, and returns an `unimplemented' error. For details see
798 builds/mac/README.
Suzuki, Toshiya (鈴木俊哉)f8d16cc2006-01-11 09:28:38 +0000799
Werner Lemberge88d24c2006-02-28 21:49:54 +0000800 - SFNT cmap handling has been improved, mainly to run much faster
David Turnere9a47192006-02-28 09:26:58 +0000801 with CJK fonts.
Werner Lemberg7734a1f2005-10-05 15:18:29 +0000802
Werner Lembergf99d8462006-02-26 17:50:59 +0000803 - A new function `FT_Get_TrueType_Engine_Type (declared in
804 `FT_MODULE_H') is provided to determine the status of the
805 TrueType bytecode interpreter compiled into the library
806 (patented, unpatented, unimplemented).
Werner Lemberg6cdab922006-01-08 22:34:01 +0000807
Wu, Chia-I (吳佳一)ea1e8d32006-01-15 15:01:45 +0000808 - Vertical metrics of glyphs are synthesized if the font does not
809 provide such information. You can tell whether the metrics are
810 synthesized or not by checking the FT_FACE_FLAG_VERTICAL flag of
811 the face.
812
Werner Lemberg7b33dca2005-06-23 20:31:48 +0000813 - The demo programs `ftview' and `ftstring' have been rewritten
Werner Lemberg1639c792006-05-06 16:44:58 +0000814 for better readability. `ftview' has a new switch `-p' to test
815 FT_New_Memory_Face (instead of FT_New_Face).
Wu, Chia-I (吳佳一)87f9bfc2005-06-22 03:56:14 +0000816
Werner Lemberg2752bd12005-08-22 07:11:31 +0000817 - FreeType now honours bit 1 in the `head' table of TrueType fonts
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000818 (meaning `left sidebearing point at x=0'). This helps with some
819 buggy fonts.
Werner Lemberg2752bd12005-08-22 07:11:31 +0000820
Werner Lembergb3feb802005-09-23 07:40:28 +0000821 - Rudimentary support for Adobe's new `SING Glyphlet' format. See
822
823 http://www.adobe.com/products/indesign/sing_gaiji.html
824
825 for more information.
Werner Lemberg49f4d342005-06-16 19:07:08 +0000826
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000827 - The `ftdump' program from the `ft2demos' bundle now shows some
828 information about charmaps. It also supports a new switch `-v'
Werner Lembergb797fdb2005-11-30 08:48:32 +0000829 to increase verbosity.
830
Wu, Chia-I (吳佳一)f9a69132006-02-11 12:12:02 +0000831 - Better AFM support. This includes track kerning support.
832
Wu, Chia-I (吳佳一)f9a69132006-02-11 12:12:02 +0000833
Werner Lemberg49f4d342005-06-16 19:07:08 +0000834======================================================================
835
Werner Lemberg94168f02006-05-11 07:07:09 +0000836CHANGES BETWEEN 2.1.10 and 2.1.9
Werner Lembergd232f592004-08-02 05:38:33 +0000837
838 I. IMPORTANT BUG FIXES
839
840 - The size comparison for BDF and PCF files could fail sometimes.
841
842 - Some CFF files were still not loaded correctly. Patch from
843 Derek Noonburg.
844
845 - The stroker still had some serious bugs.
846
Werner Lemberg33febc02004-10-09 07:07:43 +0000847 - Boris Letocha fixed a bug in the TrueType interpreter: The
848 NPUSHW instruction wasn't skipped correctly in IF clauses. Some
849 fonts like `Helvetica 75 Bold' failed.
850
Werner Lemberg4d1550e2004-11-19 14:12:48 +0000851 - Another serious bug in handling TrueType hints caused many
852 distortions. It has been introduced in version 2.1.8, and it is
853 highly recommended to upgrade.
Werner Lembergb9ff4152004-11-19 10:35:52 +0000854
Werner Lembergc9114b92005-02-10 08:18:27 +0000855 - FreeType didn't properly parse empty Type 1 glyphs.
David Turnere6bb9532005-12-23 13:32:06 +0000856
Werner Lembergebf55852005-03-16 01:49:54 +0000857 - An unbound dynamic buffer growth was fixed in the PFR loader.
David Turnere6bb9532005-12-23 13:32:06 +0000858
Werner Lembergebf55852005-03-16 01:49:54 +0000859 - Several bugs have been fixed in the cache sub-system.
David Turner58609c42005-03-15 23:31:48 +0000860
Werner Lembergebf55852005-03-16 01:49:54 +0000861 - FreeType behaved incorrectly when resizing two distinct but very
862 close character pixel sizes through `FT_Set_Char_Size' (Savannah
863 bug #12263).
David Turnere6bb9532005-12-23 13:32:06 +0000864
Werner Lembergebf55852005-03-16 01:49:54 +0000865 - The auto-hinter didn't work properly for fonts without a Unicode
866 charmap -- it even refused to load the glyphs.
Werner Lembergc9114b92005-02-10 08:18:27 +0000867
Werner Lembergd232f592004-08-02 05:38:33 +0000868
869 II. IMPORTANT CHANGES
870
Werner Lembergebf55852005-03-16 01:49:54 +0000871 - Many fixes have been applied to drastically reduce the amount of
872 heap memory used by FreeType, especially when using
873 memory-mapped font files (which is the default on Unix systems
874 which support them).
David Turner58609c42005-03-15 23:31:48 +0000875
Werner Lemberga37745b2005-03-23 16:45:24 +0000876 - The auto-hinter has been replaced with a new module, called the
877 `auto-fitter'. It consumes less memory than its predecessor,
878 and it is prepared to support non-latin scripts better in next
879 releases.
David Turner58609c42005-03-15 23:31:48 +0000880
Werner Lembergd232f592004-08-02 05:38:33 +0000881 - George Williams contributed code to read kerning data from PFM
882 files.
883
884 - FreeType now uses the TT_NAME_ID_PREFERRED_FAMILY and
885 TT_NAME_ID_PREFERRED_SUBFAMILY strings (if available) for
886 setting family and style in SFNT fonts (patch from Kornfeld
887 Eliyahu Peter).
888
Werner Lemberg17439422004-08-11 05:25:37 +0000889 - A new API `FT_Sfnt_Table_Info' (in FT_TRUETYPE_TABLES_H) has
890 been added to retrieve name and size information of SFNT tables.
891
Werner Lembergee95b6f2004-09-10 14:39:00 +0000892 - A new API `FT_OpenType_Validate' (in FT_OPENTYPE_VALIDATE_H) has
893 been added to validate OpenType tables (BASE, GDEF, GPOS, GSUB,
894 JSTF). After validation it is no longer necessary to check
Werner Lemberg33febc02004-10-09 07:07:43 +0000895 for errors in those tables while accessing them.
Werner Lembergee95b6f2004-09-10 14:39:00 +0000896
Werner Lemberg82b71922005-06-02 07:12:05 +0000897 Note that this module might be moved to another library in the
898 future to avoid a tight dependency between FreeType and the
899 OpenType specification.
900
Werner Lembergf2438e12004-12-14 16:01:29 +0000901 - A new API in FT_BITMAP_H (`FT_Bitmap_New', `FT_Bitmap_Convert',
Werner Lembergafb2ba52005-05-25 05:51:01 +0000902 `FT_Bitmap_Copy', `FT_Bitmap_Embolden', `FT_Bitmap_Done') has
903 been added. Its use is to convert an FT_Bitmap structure in
904 1bpp, 2bpp, 4bpp, or 8bpp format into another 8bpp FT_Bitmap,
905 probably using a different pitch, and to further manipulate it.
906
907 - A new API `FT_Outline_Embolden' (in FT_OUTLINE_H) gives finer
908 control how outlines are embolded.
909
910 - `FT_GlyphSlot_Embolden' (in FT_SYNTHESIS_H) now handles bitmaps
911 also (code contributed by Chia I Wu). Note that this function
912 is still experimental and may be replaced with a better API.
Werner Lembergf2438e12004-12-14 16:01:29 +0000913
Werner Lemberga76108b2005-04-03 20:11:42 +0000914 - The method how BDF and PCF bitmap fonts are accessed has been
915 refined. Formerly, FT_Set_Pixel_Sizes and FT_Set_Char_Size
916 were synonyms in FreeType's BDF and PCF interface. This has
917 changed now. FT_Set_Pixel_Sizes should be used to select the
918 actual font dimensions (the `strike', which is the sum of the
919 `FONT_ASCENT' and `FONT_DESCENT' properties), while
920 FT_Set_Char_Size selects the `nominal' size (the `PIXELSIZE'
921 property). In both functions, the width parameter is ignored.
922
Werner Lembergebf55852005-03-16 01:49:54 +0000923
Werner Lembergf2438e12004-12-14 16:01:29 +0000924 III. MISCELLANEOUS
925
926 - The BDF driver no longer converts all returned bitmaps with a
927 depth of 2bpp or 4bpp to a depth of 8bpp. The documentation has
928 not mentioned this explicitly, but implementors might have
929 relied on this after looking into the source files.
930
Werner Lembergc9114b92005-02-10 08:18:27 +0000931 - A new option `--ftversion' has been added to freetype-config to
932 return the FreeType version.
933
Werner Lemberga37745b2005-03-23 16:45:24 +0000934 - The memory debugger has been updated to dump allocation
935 statistics on all allocation sources in the library. This is
936 useful to spot greedy allocations when loading and processing
937 fonts.
David Turner58609c42005-03-15 23:31:48 +0000938
Werner Lemberga37745b2005-03-23 16:45:24 +0000939 - We removed a huge array of constant pointers to constant strings
940 in the `psnames' module. The problem was that compilations in
941 PIC mode (i.e., when generating a Unix shared object/dll) put
942 the array into the non-shared writable section of the library
David Turner58609c42005-03-15 23:31:48 +0000943 since absolute pointers are not relocatable by nature.
David Turnere6bb9532005-12-23 13:32:06 +0000944
Werner Lemberga37745b2005-03-23 16:45:24 +0000945 This reduces the memory consumption by approximately 16KByte per
946 process linked to FreeType. We now also store the array in a
947 compressed form (as a trie) which saves about 20KByte of code as
948 well.
David Turnerdb3faff2003-09-11 19:58:19 +0000949
Werner Lemberge623bfa2005-05-19 13:51:26 +0000950 - Kirill Smelkov provided patches to make src/raster/ftraster.c
Werner Lembergf9fccbe2005-05-19 07:20:24 +0000951 compile stand-alone again.
952
Werner Lembergebf55852005-03-16 01:49:54 +0000953
954======================================================================
955
Werner Lemberg94168f02006-05-11 07:07:09 +0000956CHANGES BETWEEN 2.1.9 and 2.1.8
Werner Lemberge95365b2004-04-24 14:43:37 +0000957
958 I. IMPORTANT BUG FIXES
959
960 - The function `FT_Get_CharMap_Index' was only declared, without
961 any real code. For consistency, it has been renamed to
962 `FT_Get_Charmap_Index'. (This function is needed to implement
963 cmap caches.)
964
Werner Lemberg7d62f522004-06-04 22:30:10 +0000965 - `FT_Outline_Get_BBox' sometimes returned incorrect values for
Werner Lemberg8ef41832004-06-22 12:28:17 +0000966 conic outlines (e.g., for TrueType fonts).
Werner Lemberg7d62f522004-06-04 22:30:10 +0000967
968 - Handling of `bhed' table has been fixed.
Werner Lemberge95365b2004-04-24 14:43:37 +0000969
Werner Lemberg11785f52004-06-21 23:32:31 +0000970 - The TrueType driver with enabled byte code interpreter sometimes
971 returned artifacts due to incorrect rounding. This bug has been
972 introduced after version 2.1.4.
973
Werner Lemberg8ef41832004-06-22 12:28:17 +0000974 - The BDF driver dropped the last glyph in the font.
975
976 - The BDF driver now uses the DEFAULT_CHAR property (if available)
977 to select a glyph shape for the undefined glyph.
978
Werner Lemberg43f0e262004-07-17 16:45:21 +0000979 - The stroker failed for closed outlines and single points.
980
Werner Lemberg11785f52004-06-21 23:32:31 +0000981
Werner Lembergcdb6e702004-04-26 08:09:30 +0000982 II. IMPORTANT CHANGES
983
984 - George Williams contributed code to handle Apple's font
985 distortion technology found in GX fonts (`avar', `cvar', `fvar',
986 and `gvar' tables; the Multiple Masters API has been slightly
Werner Lemberg7d62f522004-06-04 22:30:10 +0000987 extended to cope with the new functionality).
988
Werner Lembergfefd8742004-06-12 13:21:20 +0000989 - The `FT_GlyphSlotRec' structure has been extended: The elements
Werner Lemberg7d62f522004-06-04 22:30:10 +0000990 `lsb_delta' and `rsb_delta' give the difference between hinted
991 and unhinted left and right side bearings if autohinting is
992 active. Using those values can improve the inter-letter spacing
Werner Lembergfefd8742004-06-12 13:21:20 +0000993 considerably. See the documentation of `FT_GlyphSlotRec' and
Werner Lemberg7d62f522004-06-04 22:30:10 +0000994 the `ftstring' demo program how to use it.
Werner Lembergcdb6e702004-04-26 08:09:30 +0000995
Werner Lemberg43f0e262004-07-17 16:45:21 +0000996 - Loading TrueType and Type 1 fonts has been made much faster.
997
998 - The stroker is no longer experimental (but the cache subsystem
999 still is).
1000
Werner Lembergcdb6e702004-04-26 08:09:30 +00001001
Werner Lembergeab92f12004-04-29 05:59:49 +00001002 III. MISCELLANEOUS
1003
1004 - A new documentation file `formats.txt' describes various font
1005 formats supported (and not supported) by FreeType.
1006
1007
Werner Lemberge95365b2004-04-24 14:43:37 +00001008======================================================================
1009
Werner Lemberg94168f02006-05-11 07:07:09 +00001010CHANGES BETWEEN 2.1.8 and 2.1.7
Werner Lemberg51ecb692003-11-13 10:19:27 +00001011
1012 I. IMPORTANT BUG FIXES
1013
Werner Lemberg4ff243d2003-11-25 09:30:57 +00001014 - The native TrueType hinter contained some bugs which prevented
1015 some fonts to be rendered correctly, most notably Legendum.otf.
1016
Werner Lembergba80d612004-04-16 09:56:30 +00001017 - The PostScript hinter now produces improved results.
Werner Lemberg460355a2004-02-24 07:52:45 +00001018
Werner Lemberg4ff243d2003-11-25 09:30:57 +00001019 - The linear advance width and height values were incorrectly
1020 rounded, making them virtually unusable if not loaded with
1021 FT_LOAD_LINEAR_DESIGN.
1022
Werner Lemberg80cfbd72003-12-26 07:26:08 +00001023 - Indexing CID-keyed CFF fonts is now working: The glyph index is
1024 correctly treated as a CID, similar to FreeType's CID driver
Werner Lemberg460355a2004-02-24 07:52:45 +00001025 module. Note that CID CMap support is still missing.
Werner Lembergb36d4a52003-12-12 15:38:39 +00001026
Werner Lembergc78df1e2004-04-21 07:36:38 +00001027 - The FT_FACE_FLAGS_GLYPH_NAMES flag is now set correctly for all
1028 font formats.
Werner Lemberg7f1458a2003-12-17 21:57:56 +00001029
Werner Lemberg80cfbd72003-12-26 07:26:08 +00001030 - Some subsetted Type 1 fonts weren't parsed correctly. This bug
Werner Lemberg9cef4792004-02-08 09:07:08 +00001031 has been introduced in 2.1.7. In summary, the Type 1 parser has
1032 become more robust.
Werner Lemberg48b6ddb2003-12-22 23:01:20 +00001033
Werner Lembergc78df1e2004-04-21 07:36:38 +00001034 - Non-decimal numbers weren't parsed correctly in PS fonts.
1035
Werner Lemberg48b6ddb2003-12-22 23:01:20 +00001036 - The WinFNT driver now correctly reports FT_ENCODING_NONE for all
Werner Lemberg80cfbd72003-12-26 07:26:08 +00001037 but one encoding. Use the new FT_WinFNT_ID_XXX values together
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001038 with `FT_Get_WinFNT_Header' to get the WinFNT charset ID.
Werner Lemberg48b6ddb2003-12-22 23:01:20 +00001039
Werner Lemberg9914b972004-01-02 16:33:04 +00001040 - The descender metrics (face->size->metrics.descender) for WinFNT
1041 bitmap fonts had the wrong sign.
1042
Werner Lembergc78df1e2004-04-21 07:36:38 +00001043 - The (emulated) `seac' support for CFF fonts was broken.
Werner Lemberg5972e9a2004-02-01 00:49:56 +00001044
Werner Lembergc78df1e2004-04-21 07:36:38 +00001045 - The `flex' operator didn't work for CFF fonts.
Werner Lemberg5972e9a2004-02-01 00:49:56 +00001046
Werner Lemberg460355a2004-02-24 07:52:45 +00001047 - PS glyphs which use the `hintmask' operator haven't been
1048 rendered correctly in some cases.
Werner Lemberga5724ef2004-02-21 16:47:20 +00001049
Werner Lemberge0c50442004-02-08 16:30:37 +00001050 - Metrics for BDF and PCF bitmap font formats have been fixed.
1051
Werner Lembergba80d612004-04-16 09:56:30 +00001052 - Autohinting is now disabled for glyphs which are vertically
1053 distorted or mirrored (using a transformation matrix). This
1054 fixes a bug which produced zero-height glyphs.
1055
Werner Lemberg53a1edd2004-02-08 22:45:48 +00001056 - The `freetype-config' script now handles --prefix and
1057 --exec-prefix correctly; it also returns the proper --rpath (or
1058 -R) value if FreeType has been built as a shared library.
1059
Werner Lemberg51ecb692003-11-13 10:19:27 +00001060
1061 II. IMPORTANT CHANGES
1062
1063 - Both PCF and BDF drivers now handle the SETWIDTH_NAME and
1064 ADD_STYLE_NAME properties. Values are appended to
1065 face->style_name; example: `Bold SemiCondensed'.
1066
Werner Lembergdfa46192004-03-05 09:26:24 +00001067 - The PCF driver now handles bitmap fonts compressed with the LZW
1068 algorithm (extension .pcf.Z, compressed with `compress').
1069
Werner Lemberg7f1458a2003-12-17 21:57:56 +00001070 - A new API function `FT_Get_CMap_Language_ID' (declared in
1071 `tttables.h') is available to get the language ID of a
1072 TrueType/SFNT cmap.
1073
Werner Lembergef512e32004-01-23 19:52:40 +00001074 - The hexadecimal format of data after the `StartData' command in
1075 CID-keyed Type 1 fonts is now supported. While this can't occur
1076 in file-based fonts, it can happen in document-embedded
1077 resources of PostScript documents.
1078
Werner Lembergdfa46192004-03-05 09:26:24 +00001079 - Embedded bitmaps in SFNT-based CFF fonts are now supported.
1080
Werner Lemberg460355a2004-02-24 07:52:45 +00001081 - A simple API is now available to control FreeType's tracing
1082 mechanism if compiled with FT_DEBUG_LEVEL_TRACE. See the file
1083 `ftdebug.h' for more details.
1084
Werner Lemberg675431b2004-02-25 21:17:49 +00001085 - YAMATO Masatake contributed improved handling of MacOS resource
1086 forks on non-MacOS platforms (for example, Linux can mount MacOS
1087 file systems).
1088
Werner Lemberge2455ba2004-02-26 21:56:27 +00001089 - Support for MacOS has been improved; there is now a new function
1090 `FT_New_Face_From_FSSpec' similar to `FT_New_Face' except that
1091 it accepts an FSSpec instead of a path.
1092
Werner Lemberg80cfbd72003-12-26 07:26:08 +00001093 - The cache sub-system has been rewritten.
1094
1095 - There is now support for deinstallation of faces.
1096
1097 - A new API function `FTC_Manager_RemoveFaceID' has been added
1098 to delete all `idle' nodes that correspond to a given
1099 FTC_FaceID. All `locked' nodes (i.e., those with a reference
1100 count > 0), will be modified to prevent them from appearing in
1101 further lookups (they will be cleaned normally when their
1102 reference count reaches 0).
1103
1104 - There is now support for point scaling (i.e., providing
1105 character sizes in points + dpis, instead of pixels).
1106
1107 - Three abstract cache classes are now available:
1108
1109 FTC_GCache: Used to store one glyph item per cache node,
1110 with the ability to group common attributes into
1111 `families'. This replaces the old
1112 FTC_GlyphCache class.
1113
1114 FTC_ICache: Used to store one FT_Glyph per cache node. This
1115 extends FTC_GCache. Family definition, family
1116 comparison, and glyph loading are however left
1117 to sub-classes.
1118
1119 FTC_SCache: Used to store up to 16 small bitmaps per cache
1120 node. This extends FTC_GCache. Family
1121 definition, family comparison and glyph loading
1122 are however left to sub-classes.
1123
1124 - The file `src/cache/ftcbasic.c' implements:
1125
1126 FTC_ImageCache: Extends FTC_ICache; implements family
1127 definitions and glyph loading similar to the
1128 old API.
1129
1130 FTC_SBitCache: Extends FTC_SCache, implements family
1131 definitions and glyph loading similar to the
1132 old API
1133
1134 Client applications should be able to extend FTC_GCache,
1135 FTC_ICache, or FTC_SCache much more easily (i.e., less code to
1136 write, and less callbacks). For example, one could envision
1137 caches that are capable of storing transformed (obliqued),
1138 stroked, emboldened, or colored glyph images. Use
1139 `ftcbasic.c' as an example.
1140
1141 - All public APIs are now in `include/freetype/ftcache.h', (to
1142 be accessed as `FT_CACHE_H'). The contents of
1143 `include/freetype/cache/' is only needed by applications that
1144 wish to implement their own caches.
1145
1146 - There were some major performance improvements through the use
1147 of various programming tricks. Cache hits are up to 70%
1148 faster than in the old code.
1149
Werner Lembergb4142d52007-01-17 12:45:26 +00001150 - The FTC_CMapCache has been simplified. Charmaps can only be
Werner Lemberg80cfbd72003-12-26 07:26:08 +00001151 accessed by index right now. There is also a new API named
1152 `FT_Charmap_GetIndex' for this purpose.
1153
1154 - The demo programs have been updated to the new code. The
1155 previous versions will not work with the current one.
1156
Werner Lemberg2630e542004-03-20 14:26:38 +00001157 - Using an invalid face index in FT_Open_Face and friends now
1158 causes an error even if the font contains a single face only.
1159
Werner Lemberg51ecb692003-11-13 10:19:27 +00001160
Werner Lemberge1075142003-12-16 06:04:44 +00001161 III. MISCELLANEOUS
1162
Werner Lemberg110246c2006-09-26 21:55:44 +00001163 - Wolfgang Domröse contributed support files for building FreeType
Werner Lembergb066c152003-12-16 06:42:11 +00001164 on the Atari using the PureC compiler. Note that the Atari is a
1165 16bit platform.
Werner Lemberge1075142003-12-16 06:04:44 +00001166
Werner Lemberg9cef4792004-02-08 09:07:08 +00001167 - Vitaliy Pasternak contributed project files for VS.NET 2003.
1168
Werner Lemberge1075142003-12-16 06:04:44 +00001169
Werner Lemberg51ecb692003-11-13 10:19:27 +00001170======================================================================
1171
Werner Lemberg94168f02006-05-11 07:07:09 +00001172CHANGES BETWEEN 2.1.7 and 2.1.6
Werner Lemberge42dbce2003-11-09 08:37:14 +00001173
1174 I. IMPORTANT BUG FIXES
1175
1176 - Updated to newest libtool version, fixing build problems on
1177 various platforms.
1178
1179 - On Unix platforms, `make install' didn't copy the correct
1180 `ftconfig.h' file.
1181
1182 Note that version 2.1.7 contains the same library C source code as
1183 version 2.1.6.
1184
1185
1186======================================================================
1187
Werner Lemberg94168f02006-05-11 07:07:09 +00001188CHANGES BETWEEN 2.1.6 and 2.1.5
David Turnerdb3faff2003-09-11 19:58:19 +00001189
1190 I. IMPORTANT BUG FIXES
1191
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001192 - The PFR font driver didn't load kerning tables correctly, and
1193 the functions in FT_PFR_H didn't work at all.
David Turnerdb3faff2003-09-11 19:58:19 +00001194
Werner Lemberg99ee4992003-09-20 17:23:36 +00001195 - Type 1 font files in binary format (PFB) with an end-of-file
1196 indicator weren't accepted by the FreeType engine.
1197
Werner Lemberg4795b362003-10-23 16:24:10 +00001198 - Fonts which contain /PaintType and /StrokeWidth no longer cause
1199 a segfault. This bug has been introduced in version 2.1.5.
1200
1201 - Fonts loaded with FT_LOAD_RENDER no longer cause strange
1202 results. This bug has been introduced in version 2.1.5.
1203
1204 - Some Windows (bitmap) FNT/FON files couldn't be handled
1205 correctly.
1206
Werner Lemberge42dbce2003-11-09 08:37:14 +00001207
David Turnerdb3faff2003-09-11 19:58:19 +00001208 II. IMPORTANT CHANGES
1209
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001210 - The internal module API has been heavily changed in favor of
1211 massive simplifications within the font engine. This also means
1212 that authors of third-party modules must adapt their code to the
Werner Lemberge42dbce2003-11-09 08:37:14 +00001213 new scheme.
1214
1215 NOTE: THE NEW SCHEME IS NOT COMPLETED YET. PLEASE WAIT UNTIL A
1216 FINAL ANNOUNCEMENT!
David Turnerdb3faff2003-09-11 19:58:19 +00001217
Werner Lemberg4795b362003-10-23 16:24:10 +00001218 - The PostScript parser has been enhanced to handle comments and
1219 strings correctly. Additionally, more syntax forms are
1220 recognized.
1221
Werner Lemberge42dbce2003-11-09 08:37:14 +00001222 - Added the optional unpatented hinting system for TrueType. It
1223 allows typefaces which need hinting to produce correct glyph
1224 forms (e.g., Chinese typefaces from Dynalab) to work acceptably
1225 without infringing Apple patents. This system is compiled only
1226 if TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING is defined in
1227 ftoption.h (activated by default).
David Turnerdb3faff2003-09-11 19:58:19 +00001228
Werner Lemberge42dbce2003-11-09 08:37:14 +00001229
1230 III. MISCELLANEOUS
1231
1232 - There is now a guard in the public header files to protect
1233 against inclusion of freetype.h from FreeType 1.
1234
1235 - Direct inclusion of freetype.h and other public header files no
1236 longer works. You have to use the documented scheme
1237
1238 #include <ft2build.h>
1239 #include FT_FREETYPE_H
1240
1241 to load freetype.h with a symbolic name. This protects against
1242 renaming of public header files (which shouldn't happen but
1243 actually has, avoiding two public header files with the same
1244 name).
1245
1246
1247======================================================================
David Turner7543f392003-09-01 21:18:03 +00001248
Werner Lemberg94168f02006-05-11 07:07:09 +00001249CHANGES BETWEEN 2.1.5 and 2.1.4
Werner Lembergf9d864a2003-07-25 05:57:21 +00001250
Werner Lembergf9d864a2003-07-25 05:57:21 +00001251 I. IMPORTANT BUG FIXES
1252
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001253 - Parsing the /CIDFontName field now removes the leading slash to
Werner Lembergf9d864a2003-07-25 05:57:21 +00001254 be in sync with other font drivers.
1255
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001256 - gzip support was buggy. Some fonts could not be read.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001257
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001258 - Fonts which have nested subglyphs more than one level deep no
Werner Lembergf9d864a2003-07-25 05:57:21 +00001259 longer cause a segfault.
1260
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001261 - Creation of synthetic cmaps for fonts in CFF format was broken
Werner Lembergf9d864a2003-07-25 05:57:21 +00001262 partially.
1263
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001264 - Numeric font dictionary entries for synthetic fonts are no
1265 longer overwritten.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001266
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001267 - The font matrix wasn't applied to the advance width for Type1,
Werner Lemberg4795b362003-10-23 16:24:10 +00001268 CID, and CFF fonts. This caused problems when loading certain
1269 synthetic Type 1 fonts like `Helvetica Narrow'.
Werner Lemberge8ff7692003-08-06 04:40:48 +00001270
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001271 - The test for the charset registry in BDF and PCF fonts is now
Werner Lembergf9d864a2003-07-25 05:57:21 +00001272 case-insensitive.
1273
Werner Lemberg4795b362003-10-23 16:24:10 +00001274 - FT_Vector_Rotate sometimes returned strange values due to
1275 rounding errors.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001276
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001277 - The PCF driver now returns the correct number of glyphs
1278 (including an artificial `notdef' glyph at index 0).
Werner Lembergf9d864a2003-07-25 05:57:21 +00001279
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001280 - FreeType now supports buggy CMaps which are contained in many
1281 CJK fonts from Dynalab.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001282
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001283 - Opening an invalid font on a Mac caused a segfault due to
Werner Lembergf9d864a2003-07-25 05:57:21 +00001284 double-freeing memory.
1285
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001286 - BDF fonts with more than 32768 glyphs weren't supported
1287 properly.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001288
1289
1290 II. IMPORTANT CHANGES
1291
Werner Lembergf9d864a2003-07-25 05:57:21 +00001292 - Accessing bitmap font formats has been synchronized. To do that
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001293 the FT_Bitmap_Size structure has been extended to contain new
Werner Lembergf9d864a2003-07-25 05:57:21 +00001294 fields `size', `x_ppem', and `y_ppem'.
1295
1296 - The FNT driver now returns multiple faces, not multiple strikes.
1297
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001298 - The `psnames' module has been updated to the Adobe Glyph List
Werner Lembergf9d864a2003-07-25 05:57:21 +00001299 version 2.0.
1300
1301 - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
1302
1303 - The algorithm for guessing the font style has been improved.
1304
Werner Lemberg7f1458a2003-12-17 21:57:56 +00001305 - For fonts in SFNT format, root->height is no longer increased if
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001306 the line gap is zero. There exist fonts (containing e.g. form
1307 drawing characters) which intentionally have a zero line gap
1308 value.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001309
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001310 - ft_glyph_bbox_xxx flags are now deprecated in favour of
Werner Lembergf9d864a2003-07-25 05:57:21 +00001311 FT_GLYPH_BBOX_XXX.
1312
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001313 - ft_module_xxx flags are now deprecated in favour of
1314 FT_MODULE_XXX.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001315
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001316 - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now
1317 deprecated in favour of
1318 FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB} -- those encodings
1319 are not specific to Microsoft.
Werner Lemberged2a8df2003-09-01 07:06:06 +00001320
Werner Lembergf9d864a2003-07-25 05:57:21 +00001321
1322 III. MISCELLANEOUS
1323
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001324 - The autohinter has been further improved; for example, `m'
1325 glyphs now retain its vertical symmetry.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001326
Werner Lembergf9d864a2003-07-25 05:57:21 +00001327 - Partial support of Mac fonts on non-Mac platforms.
1328
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001329 - `make refdoc' (after first `make') builds the HTML
1330 documentation. You need Python for this.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001331
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001332 - The make build system should now work more reliably on DOS-like
Werner Lembergf9d864a2003-07-25 05:57:21 +00001333 platforms.
1334
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001335 - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has
1336 been added.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001337
1338 - Better VMS build support.
1339
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001340 - Support for the pkg-config package by providing a `freetype.pc'
Werner Lembergf9d864a2003-07-25 05:57:21 +00001341 file.
1342
1343 - New configure option --with-old-mac-fonts for Darwin.
1344
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001345 - Some source files have been renamed (mainly to fit into the 8.3
Werner Lembergf9d864a2003-07-25 05:57:21 +00001346 naming scheme).
1347
1348
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001349======================================================================
Werner Lembergf9d864a2003-07-25 05:57:21 +00001350
Werner Lemberg94168f02006-05-11 07:07:09 +00001351CHANGES BETWEEN 2.1.4 and 2.1.3
David Turner9acb09e2003-01-24 08:30:36 +00001352
1353 I. IMPORTANT BUG FIXES
1354
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001355 - Updated to newest libtool version, fixing build problems on
1356 various platforms.
David Turner9acb09e2003-01-24 08:30:36 +00001357
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001358 - A fix in the Gzip stream reader: It couldn't read certain .gz
1359 files properly due to a small typo. In certain cases, FreeType
1360 could also loop endlessly when trying to load tiny gzipped
1361 files.
David Turner9acb09e2003-01-24 08:30:36 +00001362
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001363 - The configure script now tries to use the system-wide zlib when
1364 it finds one (instead of the copy found in src/gzip). And
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001365 `freetype-config' has been updated to return relevant flags in
1366 this case when invoked with `--libs' (e.g. `-lzlib').
David Turner9acb09e2003-01-24 08:30:36 +00001367
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001368 - Certain fonts couldn't be loaded by 2.1.3 because they lacked a
1369 Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously
1370 rejected them.
David Turner9acb09e2003-01-24 08:30:36 +00001371
Werner Lemberga16c4a72003-04-21 13:30:27 +00001372 - The CFF loader was modified to accept fonts which only contain a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001373 subset of their reference charset. This prevented the correct
1374 use of PDF-embedded fonts.
David Turner9acb09e2003-01-24 08:30:36 +00001375
Werner Lemberga16c4a72003-04-21 13:30:27 +00001376 - The logic to detect Unicode charmaps has been modified. This is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001377 required to support fonts which include both 16-bit and 32-bit
1378 charmaps (like very recent asian ones) using the new 10 and 12
1379 SFNT formats.
David Turner9acb09e2003-01-24 08:30:36 +00001380
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001381 - The TrueType loader now limits the depth of composite glyphs.
1382 This is necessary to prevent broken fonts to break the engine by
1383 blowing the stack with recursive glyph definitions.
David Turner9acb09e2003-01-24 08:30:36 +00001384
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001385 - The CMap cache is now capable of managing UCS-4 character codes
1386 that are mapped through extended charmaps in recent
1387 TrueType/OpenType fonts.
David Turnerb848b682003-02-25 21:44:11 +00001388
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001389 - The cache sub-system now properly manages out-of-memory
1390 conditions instead of blindly reporting them to the caller.
1391 This means that it will try to empty the cache before restarting
1392 its allocations to see if that can help.
David Turner66cbc202003-03-20 07:04:40 +00001393
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001394 - The PFR driver didn't return the list of available embedded
1395 bitmaps properly.
David Turnerb848b682003-02-25 21:44:11 +00001396
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001397 - There was a nasty memory leak when using embedded bitmaps in
1398 certain font formats.
David Turnerb6b63372003-04-09 06:55:57 +00001399
Werner Lemberga16c4a72003-04-21 13:30:27 +00001400
David Turner9acb09e2003-01-24 08:30:36 +00001401 II. IMPORTANT CHANGES
1402
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001403 - David Chester contributed some enhancements to the auto-hinter
1404 that significantly increase the quality of its output. The
1405 Postscript hinter was also improved in several ways.
David Turner9acb09e2003-01-24 08:30:36 +00001406
Werner Lemberga16c4a72003-04-21 13:30:27 +00001407 - The FT_RENDER_MODE_LIGHT render mode was implemented.
David Turner9acb09e2003-01-24 08:30:36 +00001408
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001409 - A new API function called `FT_Get_BDF_Property' has been added
1410 to FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font
1411 files. THIS IS STILL EXPERIMENTAL, since it hasn't been
1412 properly tested yet.
David Turner9acb09e2003-01-24 08:30:36 +00001413
Werner Lemberga16c4a72003-04-21 13:30:27 +00001414 - A Windows FNT specific API has been added, mostly to access font
1415 headers. This is used by Wine.
David Turner9acb09e2003-01-24 08:30:36 +00001416
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001417 - TrueType tables without an `hmtx' table are now tolerated when
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001418 an incremental interface is used. This happens for certain
1419 Type42 fonts passed from Ghostscript to FreeType.
David Turner9acb09e2003-01-24 08:30:36 +00001420
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001421 - The PFR font driver is now capable of returning the font family
1422 and style names when they are available (instead of the sole
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001423 `FontID'). This is performed by parsing an *undocumented*
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001424 portion of the font file!
Werner Lemberga16c4a72003-04-21 13:30:27 +00001425
David Turnerb848b682003-02-25 21:44:11 +00001426
David Turner9acb09e2003-01-24 08:30:36 +00001427 III. MISCELLANEOUS
1428
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001429 - The path stroker in FT_STROKER_H has entered beta stage. It now
1430 works very well, but its interface might change a bit in the
1431 future. More on this in later releases.
David Turner9acb09e2003-01-24 08:30:36 +00001432
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001433 - The documentation for FT_Size_Metrics didn't appear properly in
1434 the API reference.
David Turner9acb09e2003-01-24 08:30:36 +00001435
Werner Lemberga16c4a72003-04-21 13:30:27 +00001436 - The file docs/VERSION.DLL has been updated to explain versioning
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001437 with FreeType (i.e., comparing release/libtool/so numbers, and
1438 how to use them in autoconf scripts).
David Turner9acb09e2003-01-24 08:30:36 +00001439
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001440 - The installation documentation has been seriously revamped.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001441 Everything is now in the `docs' directory.
Werner Lemberga16c4a72003-04-21 13:30:27 +00001442
David Turner66cbc202003-03-20 07:04:40 +00001443
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001444======================================================================
Werner Lemberga16c4a72003-04-21 13:30:27 +00001445
Werner Lemberg94168f02006-05-11 07:07:09 +00001446CHANGES BETWEEN 2.1.3 and 2.1.2
David Turner86e6a712002-08-29 23:18:56 +00001447
1448 I. IMPORTANT BUG FIXES
1449
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001450 - FT_Vector_Transform had been incorrectly modified in 2.1.2,
1451 resulting in incorrect transformations being applied (for
1452 example, rotations were processed in opposite angles).
David Turner86e6a712002-08-29 23:18:56 +00001453
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001454 - The format 8 and 12 TrueType charmap enumeration routines have
1455 been fixed (FT_Get_Next_Char returned invalid values).
David Turner86e6a712002-08-29 23:18:56 +00001456
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001457 - The PFR font driver returned incorrect advance widths if the
1458 outline and metrics resolution defined in the font file were
1459 different.
David Turner86e6a712002-08-29 23:18:56 +00001460
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001461 - FT_Glyph_To_Bitmap now returns successfully when called with an
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001462 FT_BitmapGlyph argument (it previously returned an error).
David Turner86e6a712002-08-29 23:18:56 +00001463
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001464 - A bug in the Type 1 loader that prevented valid font bounding
1465 boxes to be loaded from multiple master fonts.
David Turner86e6a712002-08-29 23:18:56 +00001466
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001467 - The SFNT validation code has been rewritten. FreeType can now
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001468 load `broken' fonts that were usable on Windows, but not with
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001469 previous versions of the library.
David Turner86e6a712002-08-29 23:18:56 +00001470
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001471 - The computation of bearings in the BDF driver has been fixed.
David Turner86e6a712002-08-29 23:18:56 +00001472
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001473 - The Postscript hinter crashed when trying to hint certain glyphs
1474 (more precisely, when trying to apply hints to an empty glyph
1475 outline).
David Turnerdb3d5c12002-09-18 07:53:22 +00001476
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001477 - The TrueType glyph loader now supports composites in `Apple
1478 format' (they differ slightly from Microsoft/OpenType ones in
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001479 the way transformation offsets are computed).
Werner Lemberg98add9e2002-09-18 11:32:12 +00001480
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001481 - FreeType was very slow at opening certain asian CID/CFF fonts,
1482 due to fixed increment in dynamic array re-allocations. This
1483 has been changed to exponential behaviour to get acceptable
1484 performance.
Werner Lemberga16c4a72003-04-21 13:30:27 +00001485
1486
David Turner86e6a712002-08-29 23:18:56 +00001487
David Turnerb0b8df62002-09-25 00:10:27 +00001488 II. IMPORTANT CHANGES
David Turner86e6a712002-08-29 23:18:56 +00001489
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001490 - The PCF driver now supports gzip-compressed font files natively.
1491 This means that you will be able to use all these bitmap fonts
1492 that come with XFree86 with FreeType (and libXft/libXft2, by
1493 extension).
David Turner6048e3d2002-11-13 23:28:08 +00001494
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001495 - The automatic and postscript hinters have both been updated.
1496 This results in a relatively important increase of rendering
Werner Lembergb4142d52007-01-17 12:45:26 +00001497 quality since many nasty defaults have been suppressed. Please
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001498 visit the web page:
David Turnerdb3d5c12002-09-18 07:53:22 +00001499
David Turner6048e3d2002-11-13 23:28:08 +00001500 http://www.freetype.org/hinting/smooth-hinting.html
David Turnerdb3d5c12002-09-18 07:53:22 +00001501
Werner Lemberg98add9e2002-09-18 11:32:12 +00001502 for additional details on this topic.
David Turnerdb3d5c12002-09-18 07:53:22 +00001503
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001504 - The `load_flags' parameter of `FT_Load_Glyph' is now an FT_Int32
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001505 (instead of just being an FT_Int). This breaks source and
1506 binary compatibility for 16bit systems only, while retaining
1507 both of them for 32 and 64 bit ones.
David Turner86e6a712002-08-29 23:18:56 +00001508
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001509 Some new flags have been added consequently:
David Turner86e6a712002-08-29 23:18:56 +00001510
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001511 FT_LOAD_NO_AUTOHINT :: Disable the use of the auto-hinter
1512 (but not native format hinters).
David Turner86e6a712002-08-29 23:18:56 +00001513
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001514 FT_LOAD_TARGET_NORMAL :: Hint and render for normal
1515 anti-aliased displays.
David Turner86e6a712002-08-29 23:18:56 +00001516
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001517 FT_LOAD_TARGET_MONO :: Hint and render for 1-bit displays.
David Turner86e6a712002-08-29 23:18:56 +00001518
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001519 FT_LOAD_TARGET_LCD :: Hint and render for horizontal RGB or
1520 BGR sub-pixel displays (like LCD
1521 screens). THIS IS STILL
1522 EXPERIMENTAL!
David Turner86e6a712002-08-29 23:18:56 +00001523
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001524 FT_LOAD_TARGET_LCD_V :: Same as FT_LOAD_TARGET_LCD, for
1525 vertical sub-pixel displays (like
1526 rotated LCD screens). THIS IS STILL
1527 EXPERIMENTAL!
David Turner86e6a712002-08-29 23:18:56 +00001528
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001529 FT_LOAD_MONOCHROME is still supported, but only affects
1530 rendering, not the hinting.
David Turner86e6a712002-08-29 23:18:56 +00001531
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001532 Note that the `ftview' demo program available in the `ft2demos'
1533 package has been updated to support LCD-optimized display on
1534 non-paletted displays (under Win32 and X11).
David Turnerb0b8df62002-09-25 00:10:27 +00001535
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001536 - The PFR driver now supports embedded bitmaps (all formats
1537 supported), and returns correct kerning metrics for all glyphs.
David Turner072f7f82002-10-05 15:00:36 +00001538
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001539 - The TrueType charmap loader now supports certain `broken' fonts
1540 that load under Windows without problems.
David Turnerb0b8df62002-09-25 00:10:27 +00001541
Werner Lembergcfd5dec2002-09-27 18:17:17 +00001542 - The cache API has been slightly modified (it's still a beta!):
David Turnerb0b8df62002-09-25 00:10:27 +00001543
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001544 - The type FTC_ImageDesc has been removed; it is now replaced
1545 by FTC_ImageTypeRec. Note that one of its fields is a
1546 `load_flag' parameter for FT_Load_Glyph.
David Turnerb0b8df62002-09-25 00:10:27 +00001547
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001548 - The field `num_grays' of FT_SBitRec has been changed to
1549 `max_grays' in order to fit within a single byte. Its
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001550 maximum value is thus 255 (instead of 256 as previously).
David Turnerb0b8df62002-09-25 00:10:27 +00001551
1552
1553 III. MISCELLANEOUS
1554
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001555 - Added support for the DESTDIR variable during `make install'.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001556 This simplifies packaging of FreeType.
David Turnerb0b8df62002-09-25 00:10:27 +00001557
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001558 - Included modified copies of the ZLib sources in `src/gzip' in
1559 order to support gzip-compressed PCF fonts. We do not use the
1560 system-provided zlib for now, though this is a probable
1561 enhancement for future releases.
David Turner6048e3d2002-11-13 23:28:08 +00001562
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001563 - The DocMaker tool used to generate the on-line API reference has
1564 been completely rewritten. It is now located in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001565 `src/tools/docmaker/docmaker.py'. Features:
David Turnerb0b8df62002-09-25 00:10:27 +00001566
1567 - better cross-referenced output
1568 - more polished output
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001569 - uses Python regular expressions (though it didn't speed the
David Turnerb0b8df62002-09-25 00:10:27 +00001570 program)
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001571 - much more modular structure, which allows for different
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001572 `backends' in order to generate HTML, XML, or whatever
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001573 format.
David Turnerb0b8df62002-09-25 00:10:27 +00001574
1575 One can regenerate the API reference by calling:
1576
1577 python src/tools/docmaker/docmaker.py \
1578 --prefix=ft2 \
1579 --title=FreeType-2.1.3 \
1580 --output=<outputdirectory>
1581 include/freetype/*.h \
1582 include/freetype/config/*.h \
1583 include/freetype/cache/*.h
1584
1585 - A new, experimental, support for incremental font loading (i.e.,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001586 loading of fonts where the glyphs are not in the font file
1587 itself, but provided by an external component, like a Postscript
1588 interpreter) has been added by Graham Asher. This is still work
1589 in progress, however.
David Turnerb0b8df62002-09-25 00:10:27 +00001590
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001591 - A new, EXPERIMENTAL, path stroker has been added. It doesn't
1592 suffer from severe rounding errors and treat bezier arcs
1593 directly. Still work in progress (i.e. not part of the official
1594 API). See the file <freetype/ftstroker.h> for some of the
1595 details.
David Turnerb0b8df62002-09-25 00:10:27 +00001596
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001597 - The massive re-formatting of sources and internal re-design is
1598 still under-way. Many internal functions, constants, and types
1599 have been renamed.
David Turnerb0b8df62002-09-25 00:10:27 +00001600
David Turner86e6a712002-08-29 23:18:56 +00001601
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001602======================================================================
David Turner86e6a712002-08-29 23:18:56 +00001603
Werner Lemberg94168f02006-05-11 07:07:09 +00001604CHANGES BETWEEN 2.1.2 and 2.1.1
David Turnerd490e372002-05-28 23:40:37 +00001605
1606 I. IMPORTANT BUG FIXES
1607
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001608 - Many font drivers didn't select a Unicode charmap by default
1609 when a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS
1610 options enabled), causing many applications to not be able to
1611 display text correctly with the 2.1.x releases.
David Turner86e6a712002-08-29 23:18:56 +00001612
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001613 - The PFR driver had a bug in its composite loading code that
1614 produces incorrectly placed accents with many fonts.
David Turner86e6a712002-08-29 23:18:56 +00001615
Werner Lemberg9cbb1662002-06-22 13:35:41 +00001616 - The Type42 driver crashed sometimes due to a nasty bug.
David Turner86e6a712002-08-29 23:18:56 +00001617
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001618 - The Type 1 custom encoding charmap didn't handle the case where
1619 the first glyph index wasn't 0.
David Turner38f8e892002-06-21 07:33:23 +00001620
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001621 - A serious typo in the TrueType composite loader produced
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001622 incorrectly placed glyphs in fonts like `Wingdings' and a few
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001623 others.
David Turner38f8e892002-06-21 07:33:23 +00001624
1625
1626 II. MISCELLANEOUS
1627
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001628 - The Win32 Visual C++ project file has been updated to include
1629 the PFR driver as well.
David Turner38f8e892002-06-21 07:33:23 +00001630
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001631 - `freetype.m4' is now installed by default by `make install' on
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001632 Unix systems.
David Turner38f8e892002-06-21 07:33:23 +00001633
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001634 - The function FT_Get_PS_Font_Info now works with CID and Type42
1635 fonts as well.
Werner Lemberg9cbb1662002-06-22 13:35:41 +00001636
David Turnera0d8abf2002-06-21 07:42:50 +00001637
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001638======================================================================
Werner Lemberg9cbb1662002-06-22 13:35:41 +00001639
Werner Lemberg94168f02006-05-11 07:07:09 +00001640CHANGES BETWEEN 2.1.1 and 2.1.0
David Turner38f8e892002-06-21 07:33:23 +00001641
1642 I. IMPORTANT BUG FIXES
1643
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001644 - The `version_info' returned by `freetype-config' in 2.1.0
1645 returned an invalid value. It now returns 9:1:3 (2.0.9 returned
1646 9:0:3).
David Turnerd490e372002-05-28 23:40:37 +00001647
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001648 - Version 2.1.0 couldn't be linked against applications on Win32
1649 and Amiga systems due to a new debug function that wasn't
1650 properly propagated to the system-specific directory in
1651 `builds'.
David Turnerd490e372002-05-28 23:40:37 +00001652
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001653 - Various MacOS and Mac OS X specific fixes.
David Turnerd490e372002-05-28 23:40:37 +00001654
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001655 - Fixed a bug in the TrueType charmap validation routines that
1656 made version 2.1.0 too restrictive -- many popular fonts have
1657 been rejected.
David Turnerd490e372002-05-28 23:40:37 +00001658
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001659 - There was still a very small difference between the monochrome
1660 glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the
1661 bytecode interpreter enabled. This was caused by an invalid
1662 flag setting in the TrueType glyph loader, making the rasterizer
Werner Lembergb4142d52007-01-17 12:45:26 +00001663 change its drop-out control mode. Now the results should
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001664 _really_ be completely identical.
David Turnerd490e372002-05-28 23:40:37 +00001665
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001666 - The TrueType name table loader has been improved to support many
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001667 popular though buggy Asian fonts. It now ignores empty name
1668 entries, invalid pointer offsets and a few other incorrect
1669 subtleties. Moreover, name strings are now loaded on demand,
1670 which reduces the memory load of many faces (e.g. the ARIAL.TTF
1671 font file contains a 10kByte name table with 70 names).
David Turnerd490e372002-05-28 23:40:37 +00001672
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001673 - Fixed a bug in the Postscript hinter that prevented family blues
David Turnerd490e372002-05-28 23:40:37 +00001674 substitution to happen correctly.
1675
1676
1677 II. NEW FEATURES
1678
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001679 - Three new font drivers in this release:
David Turnerd490e372002-05-28 23:40:37 +00001680
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001681 * A BDF font driver, contributed by Franco Zappa Nardelli,
1682 heavily modified by Werner Lemberg. It also supports
1683 anti-aliased bitmaps (using a slightly extended BDF format).
David Turnerd490e372002-05-28 23:40:37 +00001684
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001685 * A Type42 font driver, contributed by Roberto Alameda. It is
David Turnerb1d8f732002-06-10 22:41:57 +00001686 still experimental but seems to work relatively well.
David Turnerd490e372002-05-28 23:40:37 +00001687
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001688 * A PFR font driver, contributed by David Turner himself. It
1689 doesn't support PFR hinting -- note that BitStream has at
1690 least two patents on this format!
David Turnerd490e372002-05-28 23:40:37 +00001691
1692
David Turnerb1d8f732002-06-10 22:41:57 +00001693 III. MISCELLANEOUS
1694
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001695 - The cache sub-system has been optimized in important ways.
1696 Cache hits are now significantly faster. For example, using the
1697 CMap cache is about twice faster than calling FT_Get_Char_Index
1698 on most platforms. Similarly, using an SBit cache is about five
1699 times faster than loading the bitmaps from a bitmap file, and
1700 300 to 500 times faster than generating them from a scalable
1701 format.
David Turnerb1d8f732002-06-10 22:41:57 +00001702
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001703 Note that you should recompile your sources if you designed a
1704 custom cache class for the FT2 Cache subsystem, since the
1705 changes performed are source, but not binary, compatible.
David Turnerb1d8f732002-06-10 22:41:57 +00001706
1707
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001708======================================================================
David Turnerd490e372002-05-28 23:40:37 +00001709
Werner Lemberg94168f02006-05-11 07:07:09 +00001710CHANGES BETWEEN 2.1.0 and 2.0.9
David Turner498eed22002-04-15 12:01:10 +00001711
1712 I. IMPORTANT BUG FIXES
1713
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001714 - The TrueType bytecode interpreter has been fixed to produce
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001715 _exactly_ the same output as FreeType 1.x. Previous differences
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001716 were due to slightly distinct fixed-point computation routines
David Turner498eed22002-04-15 12:01:10 +00001717 used to perform dot products and vector length measurements.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001718
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001719 It seems that native TrueType hinting is _extremely_ sensitive
1720 to rounding errors. The required vector computation routines
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001721 have been optimized and placed within the `ttinterp.c' file.
David Turner498eed22002-04-15 12:01:10 +00001722
Werner Lemberg6e188b42002-04-17 22:42:13 +00001723 - Fixed the parsing of accelerator tables in the PCF font driver.
David Turnerd490e372002-05-28 23:40:37 +00001724
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001725 - Fixed the Type1 glyph loader routine used to compute the font's
David Turner11cfdd02002-04-17 09:37:59 +00001726 maximum advance width.
David Turner498eed22002-04-15 12:01:10 +00001727
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001728
David Turner498eed22002-04-15 12:01:10 +00001729 II. NEW FEATURES
1730
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001731 - The `configure' script used on Unix systems has been modified to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001732 check that GNU Make is being used to build the library.
1733 Otherwise, it will display a message proposing to use the
1734 GNUMAKE environment variable to name it.
David Turner498eed22002-04-15 12:01:10 +00001735
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001736 The Unix-specific file README.UNX has been modified accordingly.
1737
1738
David Turner498eed22002-04-15 12:01:10 +00001739 III. MISCELLANEOUS
1740
Werner Lemberg56c368c2005-06-04 23:00:25 +00001741 - The FreeType License in `docs/FTL.TXT' has been updated to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001742 include a proposed preferred disclaimer. If you are using
1743 FreeType in your products, you are encouraged (but not mandated)
1744 to use the following text in your documentation:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001745
1746 """
Werner Lemberg110246c2006-09-26 21:55:44 +00001747 Portions of this software are copyright © 1996-2002 The
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001748 FreeType Project (www.freetype.org). All rights reserved.
David Turner498eed22002-04-15 12:01:10 +00001749 """
1750
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001751 - The default size of the render pool has been reduced to 16kByte.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001752 This shouldn't result in any noticeable performance penalty,
1753 unless you are using the engine as-is to render very large and
1754 complex glyphs.
David Turner498eed22002-04-15 12:01:10 +00001755
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001756 - The FreeType 2 redesign has begun. More information can be
1757 found at this URL:
David Turner498eed22002-04-15 12:01:10 +00001758
David Turner498eed22002-04-15 12:01:10 +00001759 http://www.freetype.org/freetype2/redesign.html
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001760
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001761 The following internal changes have been performed within the
1762 sources of this release:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001763
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001764 - Many internal types have been renamed to increase
1765 consistency. The following should be true, except for
1766 public types:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001767
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001768 * All structure types have a name ending in `Rec' (short
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001769 for `record').
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001770
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001771 * A pointer-to-structure type has the same name as the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001772 structure, _without_ the `Rec' suffix.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001773
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001774 Example:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001775
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001776 typedef struct FooRec_
1777 {
1778 ...
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001779
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001780 } FooRec, *Foo;
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001781
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001782 - Many internal macros have been renamed to increase
1783 consistency. The following should be true:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001784
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001785 * All macros have a name beginning with `FT_'. This
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001786 required a few changes like
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001787
1788 ALLOC => FT_ALLOC
1789 FREE => FT_FREE
1790 REALLOC => FT_REALLOC
1791
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001792 * All macros are completely UPPERCASE. This required a
1793 few changes like:
David Turner498eed22002-04-15 12:01:10 +00001794
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001795 READ_Short => FT_READ_SHORT
1796 NEXT_Short => FT_NEXT_SHORT
1797 GET_ULongLE => FT_GET_ULONG_LE
1798 MEM_Set => FT_MEM_SET
1799 MEM_Copy => FT_MEM_COPY
1800 etc.
David Turner498eed22002-04-15 12:01:10 +00001801
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001802 * Whenever possible, all macro names follow the
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001803 FT_<OBJECT>_<METHOD> pattern. For example
David Turner498eed22002-04-15 12:01:10 +00001804
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001805 ACCESS_Frame => FT_FRAME_ENTER
1806 FORGET_Frame => FT_FRAME_EXIT
1807 EXTRACT_Frame => FT_FRAME_EXTRACT
1808 RELEASE_Frame => FT_FRAME_RELEASE
David Turner498eed22002-04-15 12:01:10 +00001809
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001810 FILE_Pos => FT_STREAM_POS
1811 FILE_Seek => FT_STREAM_SEEK
1812 FILE_Read => FT_STREAM_READ
1813 FILE_ReadAt => FT_STREAM_READ_AT
1814 READ_Fields => FT_STREAM_READ_FIELDS
David Turner498eed22002-04-15 12:01:10 +00001815
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001816 - Many internal functions have been renamed to follow the
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001817 FT_<Object>_<Method> pattern. For example:
David Turner498eed22002-04-15 12:01:10 +00001818
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001819 FT_Seek_Stream => FT_Stream_Seek
1820 FT_Read_Stream_At => FT_Stream_ReadAt
1821 FT_Done_Stream => FT_Stream_Close
1822 FT_New_Stream => FT_Stream_Open
1823 FT_New_Memory_Stream => FT_Stream_OpenMemory
1824 FT_Extract_Frame => FT_Stream_ExtractFrame
David Turner498eed22002-04-15 12:01:10 +00001825
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001826 Note that method names do not contain `_'.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001827
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001828 - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced
1829 with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a
1830 type as the fourth argument. Instead, the array element
1831 type size is computed automatically from the type of the
1832 target pointer used.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001833
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001834 - A new object class, FT_CMap, has been introduced. These
1835 internal objects are used to model character maps. This
1836 eases the support of additional charmap types within the
1837 engine.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001838
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001839 - A new configuration file named `ftstdlib.h' has been added
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001840 to `include/freetype/config'. It is used to define aliases
1841 for _every_ routine of the ISO C library that the font
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001842 engine uses. Each aliases has a `ft_' prefix
1843 (e.g. `ft_strlen' is an alias for `strlen').
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001844
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001845 This is used to ease the porting of FreeType 2 to exotic
1846 runtime environments where the ISO C Library isn't available
1847 (e.g. XFree86 extension modules).
David Turner498eed22002-04-15 12:01:10 +00001848
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001849 More details are available in the `ChangeLog' file.
David Turner498eed22002-04-15 12:01:10 +00001850
1851
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001852======================================================================
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001853
Werner Lemberg94168f02006-05-11 07:07:09 +00001854CHANGES BETWEEN 2.0.9 and 2.0.8
David Turner2c7558c2002-04-11 14:21:16 +00001855
1856 I. IMPORTANT BUG FIXES
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001857
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001858 - Certain fonts like `foxjump.ttf' contain broken name tables with
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001859 invalid entries and wild offsets. This caused FreeType to crash
1860 when trying to load them.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001861
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001862 The SFNT `name' table loader has been fixed to be able to
1863 support these strange fonts.
David Turner2c7558c2002-04-11 14:21:16 +00001864
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001865 Moreover, the code in charge of processing this table has been
1866 changed to always favour Windows-formatted entries over other
1867 ones. Hence, a font that works on Windows but not on the Mac
1868 will load cleanly in FreeType and report accurate values for
1869 Family & PostScript names.
David Turner2c7558c2002-04-11 14:21:16 +00001870
1871 - The CID font driver has been fixed. It unfortunately returned a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001872 Postscript Font name with a leading slash, as in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001873 `/MunhwaGothic-Regular'.
David Turner2c7558c2002-04-11 14:21:16 +00001874
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001875 - FreeType 2 should now compile fine on AIX 4.3.3 as a shared
1876 library.
David Turner2c7558c2002-04-11 14:21:16 +00001877
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001878 - A bug in the Postscript hinter has been found and fixed,
1879 removing un-even stem widths at small pixel sizes (like 14-17).
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001880
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001881 This improves the quality of a certain number of Postscript
1882 fonts.
David Turner2c7558c2002-04-11 14:21:16 +00001883
1884
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001885 II. NEW FEATURES
David Turner2c7558c2002-04-11 14:21:16 +00001886
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001887 - A new function named `FT_Library_Version' has been added to
1888 return the current library's major, minor, and patch version
1889 numbers. This is important since the macros FREETYPE_MAJOR,
1890 FREETYPE_MINOR, and FREETYPE_PATCH cannot be used when the
1891 library is dynamically linked by a program.
David Turner2c7558c2002-04-11 14:21:16 +00001892
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001893 - Two new APIs have been added: `FT_Get_First_Char' and
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001894 `FT_Get_Next_Char'.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001895
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001896 Together, these can be used to iterate efficiently over the
1897 currently selected charmap of a given face. Read the API
1898 reference for more details.
David Turner2c7558c2002-04-11 14:21:16 +00001899
1900
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001901 III. MISCELLANEOUS
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001902
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001903 - The FreeType sources are under heavy internal re-factoring. As
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001904 a consequence, we have created a branch named `STABLE' on the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001905 CVS to hold all future releases/fixes in the 2.0.x family.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001906
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001907 The HEAD branch now contains the re-factored sources and
1908 shouldn't be used for testing or packaging new releases. In
1909 case you would like to access the 2.0.9 sources from our CVS
1910 repository, use the tag `VER-2-0-9'.
David Turner2c7558c2002-04-11 14:21:16 +00001911
1912
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001913======================================================================
David Turner2c7558c2002-04-11 14:21:16 +00001914
Werner Lemberg94168f02006-05-11 07:07:09 +00001915CHANGES BETWEEN 2.0.8 and 2.0.7
David Turner1c6af482002-02-08 14:00:20 +00001916
1917 I. IMPORTANT BUG FIXES
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001918
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001919 - There was a small but nasty bug in `freetype-config.in' which
1920 caused the `freetype-config' script to fail on Unix.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001921
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001922 This didn't prevent the installation of the library or even its
1923 execution, but caused problems when trying to compile many Unix
1924 packages that depend on it.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001925
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001926 - Some TrueType or OpenType fonts embedded in PDF documents do not
1927 have a 'cmap', 'post' and 'name' as is required by the
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001928 specification. FreeType no longer refuses to load such fonts.
David Turner1c6af482002-02-08 14:00:20 +00001929
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001930 - Various fixes to the PCF font driver.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001931
David Turner1c6af482002-02-08 14:00:20 +00001932
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001933======================================================================
David Turner1c6af482002-02-08 14:00:20 +00001934
Werner Lemberg94168f02006-05-11 07:07:09 +00001935CHANGES BETWEEN 2.0.7 and 2.0.6
David Turner944b7292002-01-31 17:42:05 +00001936
1937 I. IMPORTANT BUG FIXES
1938
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001939 - Fixed two bugs in the Type 1 font driver. The first one
1940 resulted in a memory leak in subtle cases. The other one caused
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001941 FreeType to crash when trying to load `.gsf' files (Ghostscript
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001942 so-called Postscript fonts).
David Turner944b7292002-01-31 17:42:05 +00001943
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001944 (This made _many_ KDE applications crash on certain systems.
1945 FreeType _is_ becoming a critical system component on Linux :-)
David Turner944b7292002-01-31 17:42:05 +00001946
Werner Lemberg32b53462002-02-01 01:20:11 +00001947 - Fixed a memory leak in the CFF font driver.
David Turner944b7292002-01-31 17:42:05 +00001948
Werner Lemberg32b53462002-02-01 01:20:11 +00001949 - Fixed a memory leak in the PCF font driver.
David Turner944b7292002-01-31 17:42:05 +00001950
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001951 - Fixed the Visual C++ project file
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001952 `builds/win32/visualc/freetype.dsp' since it didn't include the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001953 Postscript hinter component, causing errors at build time.
David Turner944b7292002-01-31 17:42:05 +00001954
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001955 - Fixed a small rendering bug in the anti-aliased renderer that
1956 only occurred when trying to draw thin (less than 1 pixel)
1957 strokes.
David Turner944b7292002-01-31 17:42:05 +00001958
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001959 - Fixed `builds/unix/freetype2.a4' which is used to generate a
1960 valid `freetype2.m4' for use with autoconf.
Werner Lemberg32b53462002-02-01 01:20:11 +00001961
1962 - Fixed the OpenVMS Makefiles.
David Turner944b7292002-01-31 17:42:05 +00001963
1964
1965 II. MISCELLANEOUS
1966
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001967 - Added `configure' and `install' scripts to the top-level
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001968 directory. A GNU-style installation is thus now easily possible
1969 with
Werner Lemberg32b53462002-02-01 01:20:11 +00001970
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001971 ./configure <options>
1972 make
1973 make install
David Turner944b7292002-01-31 17:42:05 +00001974
1975
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001976======================================================================
David Turner944b7292002-01-31 17:42:05 +00001977
Werner Lemberg94168f02006-05-11 07:07:09 +00001978CHANGES BETWEEN 2.0.6 and 2.0.5
David Turnerafa38542001-10-18 13:22:01 +00001979
Werner Lembergf41e71a2001-12-20 21:22:02 +00001980 I. IMPORTANT BUG FIXES
David Turner640078d2001-12-10 10:47:47 +00001981
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001982 - It wasn't possible to load embedded bitmaps when the auto-hinter
1983 was used. This is now fixed.
David Turner640078d2001-12-10 10:47:47 +00001984
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001985 - The TrueType font driver didn't load some composites properly
1986 (the sub-glyphs were slightly shifted, and this was only
1987 noticeable when using monochrome rendering).
David Turnerafa38542001-10-18 13:22:01 +00001988
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001989 - Various fixes to the auto-hinter. They merely improve the
1990 output of sans-serif fonts. Note that there are still problems
1991 with serifed fonts and composites (accented characters).
David Turnerafa38542001-10-18 13:22:01 +00001992
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001993 - All scalable font drivers erroneously returned un-fitted glyph
1994 advances when hinting was requested. This created problems for
1995 a number of layout applications. This is a very old bug that
1996 got undetected mainly because most test/demo program perform
1997 rounding explicitly or implicitly (through the cache).
Werner Lembergf41e71a2001-12-20 21:22:02 +00001998
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001999 - `FT_Glyph_To_Bitmap' did erroneously modify the source glyph in
Werner Lembergf41e71a2001-12-20 21:22:02 +00002000 certain cases.
2001
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002002 - `glnames.py' still contained a bug that made FreeType return
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002003 invalid names for certain glyphs.
David Turnerafa38542001-10-18 13:22:01 +00002004
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002005 - The library crashed when loading certain Type 1 fonts like
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002006 `sadn.pfb' (`Stalingrad Normal'), which appear to contain
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002007 pathetic font info dictionaries.
David Turner6096b5a2002-01-07 10:40:48 +00002008
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002009 - The TrueType glyph loader is now much more paranoid and checks
2010 everything when loading a given glyph image. This was necessary
2011 to avoid problems (crashes and/or memory overwrites) with broken
2012 fonts that came from a really buggy automatic font converter.
David Turner6096b5a2002-01-07 10:40:48 +00002013
2014
Werner Lembergf41e71a2001-12-20 21:22:02 +00002015 II. IMPORTANT UPDATES AND NEW FEATURES
David Turner0fcb4122001-12-20 13:33:03 +00002016
Werner Lembergf41e71a2001-12-20 21:22:02 +00002017 - Important updates to the Mac-specific parts of the library.
David Turner0fcb4122001-12-20 13:33:03 +00002018
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002019 - The caching sub-system has been completely re-designed, and its
Werner Lemberg4db32ec2006-03-24 11:54:53 +00002020 API has evolved (the old one is still supported for backward
Werner Lembergf41e71a2001-12-20 21:22:02 +00002021 compatibility).
David Turner0fcb4122001-12-20 13:33:03 +00002022
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002023 The documentation for it is not yet completed, sorry. For now,
2024 you are encouraged to continue using the old API. However, the
2025 ftview demo program in the ft2demos package has already been
2026 updated to use the new caching functions.
David Turner0fcb4122001-12-20 13:33:03 +00002027
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002028 - A new charmap cache is provided too. See `FTC_CMapCache'. This
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002029 is useful to perform character code -> glyph index translations
2030 quickly, without the need for an opened FT_Face.
David Turner0fcb4122001-12-20 13:33:03 +00002031
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002032 - A NEW POSTSCRIPT HINTER module has been added to support native
2033 hints in the following formats: PostScript Type 1, PostScript
2034 CID, and CFF/CEF.
Werner Lembergf41e71a2001-12-20 21:22:02 +00002035
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002036 Please test! Note that the auto-hinter produces better results
2037 for a number of badly-hinted fonts (mostly auto-generated ones)
2038 though.
Werner Lembergf41e71a2001-12-20 21:22:02 +00002039
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002040 - A memory debugger is now part of the standard FreeType sources.
2041 To enable it, define FT_DEBUG_MEMORY in
2042 <freetype/config/ftoption.h>, and recompile the library.
Werner Lembergf41e71a2001-12-20 21:22:02 +00002043
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002044 Additionally, define the _environment_ variable FT_DEBUG_MEMORY
2045 and run any program using FreeType. When the library is exited,
2046 a summary of memory footprints and possible leaks will be
2047 displayed.
Werner Lembergf41e71a2001-12-20 21:22:02 +00002048
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002049 This works transparently with _any_ program that uses FreeType.
2050 However, you will need a lot of memory to use this (allocated
2051 blocks are never released to the heap to detect double deletes
2052 easily).
David Turner0fcb4122001-12-20 13:33:03 +00002053
2054
Werner Lembergf41e71a2001-12-20 21:22:02 +00002055 III. MISCELLANEOUS
David Turner0fcb4122001-12-20 13:33:03 +00002056
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002057 - We are aware of subtle differences between the output of
2058 FreeType versions 1 and 2 when it comes to monochrome
2059 TrueType-hinted glyphs. These are most probably due to small
2060 differences in the monochrome rasterizers and will be worked out
2061 in an upcoming release.
David Turner0fcb4122001-12-20 13:33:03 +00002062
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002063 - We have decided to fork the sources in a `stable' branch, and an
2064 `unstable' one, since FreeType is becoming a critical component
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002065 of many Unix systems.
Werner Lemberg32b53462002-02-01 01:20:11 +00002066
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002067 The next bug-fix releases of the library will be named 2.0.7,
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002068 2.0.8, etc., while the `2.1' branch will contain a version of
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002069 the sources where we will start major reworking of the library's
2070 internals, in order to produce FreeType 2.2.0 (or even 3.0) in a
2071 more distant future.
Werner Lemberg32b53462002-02-01 01:20:11 +00002072
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002073 We also hope that this scheme will allow much more frequent
2074 releases than in the past.
David Turner6096b5a2002-01-07 10:40:48 +00002075
David Turner0fcb4122001-12-20 13:33:03 +00002076
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002077======================================================================
David Turnerafa38542001-10-18 13:22:01 +00002078
Werner Lemberg94168f02006-05-11 07:07:09 +00002079CHANGES BETWEEN 2.0.5 and 2.0.4
David Turner1cd4f852001-10-09 07:32:50 +00002080
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002081 NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER. THIS MODULE
2082 WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
David Turner1cd4f852001-10-09 07:32:50 +00002083
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002084 - Fixed a bug that made certain glyphs, like `Cacute', `cacute' and
2085 `lslash' unavailable from Unicode charmaps of Postscript fonts.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002086 This prevented the correct display of Polish text, for example.
David Turner1cd4f852001-10-09 07:32:50 +00002087
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002088 - The kerning table of Type 1 fonts was loaded by FreeType, when its
2089 AFM file was attached to its face, but the
2090 FT_FACE_FLAG_HAS_KERNING bit flags was not set correctly,
2091 preventing FT_Get_Kerning to return meaningful values.
David Turner1cd4f852001-10-09 07:32:50 +00002092
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002093 - Improved SFNT (TrueType & OpenType) charmap support. Slightly
2094 better performance, as well as support for the new formats defined
2095 by the OpenType 1.3 specification (8, 10, and 12)
David Turner1cd4f852001-10-09 07:32:50 +00002096
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002097 - Fixed a serious typo in `src/base/ftcalc.c' which caused invalid
Werner Lemberg80b8d772001-10-10 19:56:42 +00002098 computations in certain rare cases, producing ugly artefacts.
2099
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002100 - The size of the EM square is computed with a more accurate
2101 algorithm for Postscript fonts. The old one caused slight errors
2102 with embedded fonts found in PDF documents.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002103
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002104 - Fixed a bug in the cache manager that prevented normal LRU
2105 behaviour within the cache manager, causing unnecessary reloads
2106 (for FT_Face and FT_Size objects only).
Werner Lemberg80b8d772001-10-10 19:56:42 +00002107
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002108 - Added a new function named `FT_Get_Name_Index' to retrieve the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002109 glyph index of a given glyph name, when found in a face.
David Turner1cd4f852001-10-09 07:32:50 +00002110
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002111 - Added a new function named `FT_Get_Postscript_Name' to retrieve
2112 the `unique' Postscript font name of a given face.
David Turner034a1932001-10-17 13:57:02 +00002113
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002114 - Added a new public header size named FT_SIZES_H (or
2115 <freetype/ftsizes.h>) providing new FT_Size-management functions:
Werner Lembergf41e71a2001-12-20 21:22:02 +00002116 FT_New_Size, FT_Activate_Size, FT_Done_Size.
David Turner034a1932001-10-17 13:57:02 +00002117
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002118 - Fixed a reallocation bug that generated a dangling pointer (and
2119 possibly memory leaks) with Postscript fonts (in
2120 src/psaux/psobjs.c).
David Turner1cd4f852001-10-09 07:32:50 +00002121
Werner Lemberg80b8d772001-10-10 19:56:42 +00002122 - Many fixes for 16-bit correctness.
David Turner1cd4f852001-10-09 07:32:50 +00002123
Werner Lemberg80b8d772001-10-10 19:56:42 +00002124 - Removed many pedantic compiler warnings from the sources.
2125
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002126 - Added an Amiga build directory in `builds/amiga'.
David Turner1cd4f852001-10-09 07:32:50 +00002127
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002128
2129======================================================================
David Turner1cd4f852001-10-09 07:32:50 +00002130
Werner Lemberg94168f02006-05-11 07:07:09 +00002131CHANGES BETWEEN 2.0.4 and 2.0.3
David Turner995ff202001-06-22 08:45:31 +00002132
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002133 - Fixed a rather annoying bug that was introduced in 2.0.3. Namely,
2134 the font transformation set through FT_Set_Transform was applied
2135 twice to auto-hinted glyphs, resulting in incorrectly rotated text
2136 output.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002137
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002138 - Fixed _many_ compiler warnings. FT2 should now compile cleanly
2139 with Visual C++'s most pedantic warning level (/W4). It already
2140 compiled fine with GCC and a few other compilers.
David Turner995ff202001-06-22 08:45:31 +00002141
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002142 - Fixed a bug that prevented the linear advance width of composite
Werner Lemberg80b8d772001-10-10 19:56:42 +00002143 TrueType glyphs to be correctly returned.
David Turner21939452001-10-05 14:23:03 +00002144
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002145 - Fixed the Visual C++ project files located in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002146 `builds/win32/visualc' (previous versions used older names of the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002147 library).
Werner Lemberg80b8d772001-10-10 19:56:42 +00002148
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002149 - Many 32-bit constants have an `L' appended to their value, in
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002150 order to improve the 16-bitness of the code. Someone is actually
2151 trying to use FT2 on an Atari ST machine!
David Turner995ff202001-06-22 08:45:31 +00002152
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002153 - Updated the `builds/detect.mk' file in order to automatically
2154 build FT2 on AIX systems. AIX uses `/usr/sbin/init' instead of
2155 `/sbin/init' and wasn't previously detected as a Unix platform by
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002156 the FreeType build system.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002157
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002158 - Updated the Unix-specific portions of the build system (new
2159 libtool version, etc.).
David Turner995ff202001-06-22 08:45:31 +00002160
Werner Lembergb4142d52007-01-17 12:45:26 +00002161 - The SFNT kerning loader now ensures that the table is sorted
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002162 (since some problem fonts do not meet this requirement).
David Turnerc40f3862001-06-27 12:42:10 +00002163
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002164
2165=======================================================================
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002166
Werner Lemberg94168f02006-05-11 07:07:09 +00002167CHANGES BETWEEN 2.0.3 and 2.0.2
David Turner4312f422001-05-24 15:00:19 +00002168
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002169 I. CHANGES TO THE MODULES / FONT DRIVERS
Werner Lemberg80b8d772001-10-10 19:56:42 +00002170
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002171 - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix
2172 several annoying artefacts, mainly:
Werner Lemberg80b8d772001-10-10 19:56:42 +00002173
Werner Lembergb4142d52007-01-17 12:45:26 +00002174 - Blue zone alignment of horizontal stems wasn't performed
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002175 correctly, resulting in artefacts like the `d' being placed
2176 one pixel below the `b' in some fonts like Time New Roman.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002177
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002178 - Overshoot thresholding wasn't performed correctly, creating
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002179 unpleasant artefacts at large character pixel sizes.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002180
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002181 - Composite glyph loading has been simplified. This gets rid
2182 of various artefacts where the components of a composite
2183 glyphs were not correctly spaced.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002184
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002185 These are the last changes to the current auto-hinting module.
2186 A new hinting sub-system is currently in the work in order to
2187 support native hints in Type 1 / CFF / OpenType fonts, as well
2188 as globally improve rendering.
David Turner4312f422001-05-24 15:00:19 +00002189
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002190 - The PCF driver has been fixed. It reported invalid glyph
2191 dimensions for the fonts available on Solaris.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002192
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002193 - The Type 1, CID and CFF drivers have been modified to fix the
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002194 computation of the EM size.
David Turner4312f422001-05-24 15:00:19 +00002195
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002196 - The Type 1 driver has been fixed to avoid a dangerous bug that
2197 crashed the library with non-conforming fonts (i.e. ones that do
2198 not place the .notdef glyph at position 0).
David Turner4312f422001-05-24 15:00:19 +00002199
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002200 - The TrueType driver had a rather subtle bug (dangling pointer
2201 when loading composite glyphs) that could crash the library in
2202 rare occasions!
David Turner4312f422001-05-24 15:00:19 +00002203
2204
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002205 II. HIGH-LEVEL API CHANGES
Werner Lemberg80b8d772001-10-10 19:56:42 +00002206
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002207 - The error code enumeration values have been changed. An error
2208 value is decomposed in a generic error code, and a module
2209 number. see <freetype/fterrors.h> for details.
David Turner4312f422001-05-24 15:00:19 +00002210
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002211 - A new public header file has been introduced, named
2212 FT_TRIGONOMETRY_H (include/freetype/fttrig.h), providing
2213 trigonometric functions to compute sines, cosines, arctangents,
2214 etc. with 16.16 fixed precision. The implementation is based on
2215 the CORDIC algorithm and is very fast while being sufficiently
2216 accurate.
David Turner4312f422001-05-24 15:00:19 +00002217
2218
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002219 III. INTERNALS
Werner Lemberg80b8d772001-10-10 19:56:42 +00002220
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002221 - Added BeOS-specific files in the old build sub-system. Note
2222 that no changes were required to compile the library with Jam.
David Turner4312f422001-05-24 15:00:19 +00002223
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002224 - The configuration is now capable of automatically detecting
2225 64-bit integers on a set of predefined compilers (GCC, Visual
2226 C++, Borland C++) and will use them by default. This provides a
2227 small performance boost.
David Turner4312f422001-05-24 15:00:19 +00002228
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002229 - A small memory leak that happened when opening 0-sized files
2230 (duh!) have been fixed.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002231
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002232 - Fixed bezier stack depth bug in the routines provided by the
2233 FT_BBOX_H header file. Also fixed similar bugs in the
2234 rasterizers.
David Turner4312f422001-05-24 15:00:19 +00002235
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002236 - The outline bounding box code has been rewritten to use direct
2237 computations, instead of bezier sub-division, to compute the
2238 exact bounding box of glyphs. This is slightly slower but more
2239 accurate.
David Turner4312f422001-05-24 15:00:19 +00002240
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002241 - The build system has been improved and fixed, mainly to support
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002242 `make' on Windows 2000 correctly, avoid problems with `make
2243 distclean' on non Unix systems, etc.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002244
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002245 - Hexadecimal constants have been suffixed with `U' to avoid
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002246 problems with certain compilers on 64-bit platforms.
David Turner4312f422001-05-24 15:00:19 +00002247
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002248 - A new directory named `src/tools' has been created. It contains
David Turner4312f422001-05-24 15:00:19 +00002249 Python scripts and simple unit test programs used to develop the
2250 library.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002251
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002252 - The DocMaker tool has been moved from `docs' to `src/tools' and
David Turner4312f422001-05-24 15:00:19 +00002253 has been updated with the following:
Werner Lemberg80b8d772001-10-10 19:56:42 +00002254
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002255 - Now accepts the `--title=XXXX' or `-t XXXX' option from the
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002256 command line to set the project's name in the generated API
2257 reference.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002258
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002259 - Now accepts the `--output=DIR' or `-o DIR' option from the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002260 command line to set the output directory for all generated
2261 HTML files.
Werner Lemberg80b8d772001-10-10 19:56:42 +00002262
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002263 - Now accepts the `--prefix=XXXX' or `-p XXX' option from the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002264 command line to set the file prefix to use for all
2265 generated HTML files.
David Turner4312f422001-05-24 15:00:19 +00002266
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002267 - Now generates the current time/data on each generated page
David Turner4312f422001-05-24 15:00:19 +00002268 in order to distinguish between versions.
2269
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002270 DocMaker can be used with other projects now, not only FT2
2271 (e.g. MLib, FTLayout, etc.).
Werner Lemberg80b8d772001-10-10 19:56:42 +00002272
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002273
2274======================================================================
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002275
Werner Lemberg94168f02006-05-11 07:07:09 +00002276CHANGES BETWEEN 2.0.2 and 2.0.1
David Turnerd3c8e062000-12-04 22:53:55 +00002277
Werner Lemberg0bf6e062001-06-22 17:17:47 +00002278 I. CHANGES TO THE MODULES / FONT DRIVERS
David Turnera0f89552001-03-23 12:28:59 +00002279
2280 - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
Werner Lembergab6d1072001-04-02 21:30:06 +00002281 avoid legal problems with the Apple patents. It seems that we
2282 mistakenly turned this option on in previous releases of the
2283 build.
David Turnera0f89552001-03-23 12:28:59 +00002284
Werner Lembergab6d1072001-04-02 21:30:06 +00002285 Note that if you want to use the bytecode interpreter in order
2286 to get high-quality TrueType rendering, you will need to toggle
2287 by hand the definition of the
2288 TT_CONFIG_OPTION_BYTECODE_INTERPRETER macro in the file
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002289 `include/freetype/config/ftoption.h'.
Werner Lembergab6d1072001-04-02 21:30:06 +00002290
2291 - The CFF driver has been improved by Tom Kacvinsky and Sander van
2292 der Wal:
2293
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002294 * Support for `seac' emulation.
2295 * Support for `dotsection'.
Werner Lembergab6d1072001-04-02 21:30:06 +00002296 * Support for retrieving glyph names through
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002297 `FT_Get_Glyph_Name'.
David Turnera0f89552001-03-23 12:28:59 +00002298
2299 The first two items are necessary to correctly a large number of
Werner Lembergab6d1072001-04-02 21:30:06 +00002300 Type 1 fonts converted to the CFF formats by Adobe Acrobat.
David Turnera0f89552001-03-23 12:28:59 +00002301
Werner Lembergab6d1072001-04-02 21:30:06 +00002302 - The Type 1 driver was also improved by Tom & others:
David Turnera0f89552001-03-23 12:28:59 +00002303
Werner Lembergab6d1072001-04-02 21:30:06 +00002304 * Better EM size computation.
2305 * Better support for synthetic (transformed) fonts.
2306 * The Type 1 driver returns the charstrings corresponding to
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002307 each glyph in the `glyph->control_data' field after a call to
2308 `FT_Load_Glyph' (thanks Ha Shao).
David Turnera0f89552001-03-23 12:28:59 +00002309
Werner Lembergab6d1072001-04-02 21:30:06 +00002310 - Various other bugfixes, including the following:
David Turnera0f89552001-03-23 12:28:59 +00002311
Werner Lembergab6d1072001-04-02 21:30:06 +00002312 * Fixed a nasty memory leak in the Type 1 driver.
2313 * The autohinter and the pcf driver used static writable data
2314 when they shouldn't.
2315 * Many casts were added to make the code more 64-bits safe. It
2316 also now compiles on Windows XP 64-bits without warnings.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002317 * Some incorrect writable statics were removed in the `autohint'
2318 and `pcf' drivers. FreeType 2 now compiles on Epoc again.
David Turnera0f89552001-03-23 12:28:59 +00002319
2320
2321 II. CHANGES TO THE HIGH-LEVEL API
David Turnera0f89552001-03-23 12:28:59 +00002322
Werner Lembergab6d1072001-04-02 21:30:06 +00002323 - The library header files inclusion scheme has been changed. The
2324 old scheme looked like:
2325
2326 #include <freetype/freetype.h>
2327 #include <freetype/ftglyph.h>
2328 #include <freetype/ftcache.h>
2329 #include <freetype/cache/ftimage.h>
2330
2331 Now you should use:
2332
2333 #include <ft2build.h>
2334 #include FT_FREETYPE_H
2335 #include FT_GLYPH_H
2336 #include FT_CACHE_H
2337 #include FT_CACHE_IMAGE_H
2338
2339 NOTE THAT THE OLD INCLUSION SCHEME WILL STILL WORK WITH THIS
2340 RELEASE. HOWEVER, WE DO NOT GUARANTEE THAT THIS WILL STILL BE
2341 TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1).
2342
2343 The file <ft2build.h> is used to define the header filename
2344 macros. The complete and commented list of macros is available
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002345 in the API reference under the section name `Header File Macros'
Werner Lembergab6d1072001-04-02 21:30:06 +00002346 in Chapter I.
David Turnera0f89552001-03-23 12:28:59 +00002347
David Turnerf876b242001-03-23 18:09:09 +00002348 For more information, see section I of the following document:
David Turnerf876b242001-03-23 18:09:09 +00002349
Werner Lembergab6d1072001-04-02 21:30:06 +00002350 http://www.freetype.org/
2351 freetype2/docs/tutorial/step1.html
David Turnerf876b242001-03-23 18:09:09 +00002352
Werner Lembergab6d1072001-04-02 21:30:06 +00002353 or
David Turnera0f89552001-03-23 12:28:59 +00002354
Werner Lembergab6d1072001-04-02 21:30:06 +00002355 http://freetype.sourceforge.net/
2356 freetype2/docs/tutorial/step1.html
2357
2358 - Many, many comments have been added to the public source file in
2359 order to automatically generate the API Reference through the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002360 `docmaker.py' Python script.
Werner Lembergab6d1072001-04-02 21:30:06 +00002361
2362 The latter has been updated to support the grouping of sections
2363 in chapters and better index sort. See:
2364
2365 http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
David Turnera0f89552001-03-23 12:28:59 +00002366
2367
2368 III. CHANGES TO THE BUILD PROCESS
David Turnerb8f56fa2001-03-20 15:04:30 +00002369
Werner Lembergab6d1072001-04-02 21:30:06 +00002370 - If you are not building FreeType 2 with its own build system
2371 (but with your own Makefiles or project files), you will need to
2372 be aware that the build process has changed a little bit.
David Turnera0f89552001-03-23 12:28:59 +00002373
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002374 You don't need to put the `src' directory in the include path
Werner Lembergab6d1072001-04-02 21:30:06 +00002375 when compiling any FT2 component. Instead, simply put the
2376 component's directory in the current include path.
2377
2378 So, if you were doing something like:
2379
2380 cc -c -Iinclude -Isrc src/base/ftbase.c
2381
2382 change the line to:
2383
2384 cc -c -Iinclude -Isrc/base src/base/ftbase.c
2385
2386 If you were doing something like:
2387
2388 cd src/base
2389 cc -c -I../../include -I.. ftbase.c
2390
2391 change it to:
2392
2393 cd src/base
2394 cc -c -I../../include ftbase.c
2395
2396
2397======================================================================
2398
Werner Lemberg94168f02006-05-11 07:07:09 +00002399CHANGES BETWEEN 2.0.1 and 2.0
Werner Lembergab6d1072001-04-02 21:30:06 +00002400
David Turneraaac8132000-12-01 18:55:22 +00002401 2.0.1 introduces a few changes:
2402
Werner Lembergab6d1072001-04-02 21:30:06 +00002403 - Fixed many bugs related to the support of CFF / OpenType fonts.
2404 These formats are now much better supported though there is
2405 still work planned to deal with charset tables and PDF-embedded
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002406 CFF files that use the old `seac' command.
Werner Lembergab6d1072001-04-02 21:30:06 +00002407
2408 - The library could not be compiled in debug mode with a very
2409 small number of C compilers whose pre-processors didn't
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002410 implement the `##' directive correctly (i.e. per se the ANSI C
Werner Lembergab6d1072001-04-02 21:30:06 +00002411 specification!) An elegant fix was found.
2412
2413 - Added support for the free Borland command-line C++ Builder
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002414 compiler. Use `make setup bcc32'. Also fixed a few source
Werner Lembergab6d1072001-04-02 21:30:06 +00002415 lines that generated new warnings with BCC32.
2416
2417 - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
Werner Lemberg2e82c932000-12-01 21:56:47 +00002418 a conic Bezier arc.
David Turneraaac8132000-12-01 18:55:22 +00002419
Werner Lembergab6d1072001-04-02 21:30:06 +00002420 - Updated the INSTALL file to add IDE compilation.
David Turneraaac8132000-12-01 18:55:22 +00002421
Werner Lembergab6d1072001-04-02 21:30:06 +00002422 - Other minor bug fixes, from invalid Type 1 style flags to
2423 correct support of synthetic (obliqued) fonts in the
2424 auto-hinter, better support for embedded bitmaps in a SFNT font.
David Turneraaac8132000-12-01 18:55:22 +00002425
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002426 - Fixed some problems with `freetype-config'.
David Turneraaac8132000-12-01 18:55:22 +00002427
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002428 Finally, the `standard' scheme for including FreeType headers is now
Werner Lembergab6d1072001-04-02 21:30:06 +00002429 gradually changing, but this will be explained in a later release
2430 (probably 2.0.2).
David Turneraaac8132000-12-01 18:55:22 +00002431
Werner Lembergab6d1072001-04-02 21:30:06 +00002432 And very special thanks to Tom Kacvinsky and YAMANO-UCHI Hidetoshi
2433 for their contributions!
David Turneraaac8132000-12-01 18:55:22 +00002434
Werner Lembergab6d1072001-04-02 21:30:06 +00002435
2436======================================================================
2437
David Turneraaac8132000-12-01 18:55:22 +00002438CHANGES BETWEEN beta8 and 2.0
David Turnerf9b8dec2000-06-16 19:34:52 +00002439
Werner Lembergab6d1072001-04-02 21:30:06 +00002440 - Changed the default installation path for public headers from
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002441 `include/freetype' to `include/freetype2'.
David Turner27c88272000-11-09 19:10:22 +00002442
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002443 Also added a new `freetype-config' that is automatically generated
Werner Lembergab6d1072001-04-02 21:30:06 +00002444 and installed on Unix and Cygwin systems. The script itself is
2445 used to retrieve the current install path, C compilation flags as
2446 well as linker flags.
David Turner27c88272000-11-09 19:10:22 +00002447
Werner Lembergab6d1072001-04-02 21:30:06 +00002448 - Fixed several small bugs:
David Turner27c88272000-11-09 19:10:22 +00002449
Werner Lembergab6d1072001-04-02 21:30:06 +00002450 * Incorrect max advance width for fixed-pitch Type 1 fonts.
2451 * Incorrect glyph names for certain TrueType fonts.
2452 * The glyph advance was not copied when FT_Glyph_To_Bitmap was
2453 called.
Werner Lembergb4142d52007-01-17 12:45:26 +00002454 * The linearHoriAdvance and linearVertAdvance fields were not
Werner Lembergab6d1072001-04-02 21:30:06 +00002455 correctly returned for glyphs processed by the auto-hinter.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002456 * `type1z' renamed back to `type1'; the old `type1' module has
Werner Lembergab6d1072001-04-02 21:30:06 +00002457 been removed.
David Turner27c88272000-11-09 19:10:22 +00002458
Werner Lembergab6d1072001-04-02 21:30:06 +00002459 - Revamped the build system to make it a lot more generic. This
2460 will allow us to re-use nearly un-modified in lots of other
2461 projects (including FreeType Layout).
David Turner27c88272000-11-09 19:10:22 +00002462
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002463 - Changed `cid' to use `psaux' too.
David Turner27c88272000-11-09 19:10:22 +00002464
Werner Lembergab6d1072001-04-02 21:30:06 +00002465 - Added the cache sub-system. See <freetype/ftcache.h> as well as
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002466 the sources in `src/cache'. Note that it compiles but is still
Werner Lembergab6d1072001-04-02 21:30:06 +00002467 untested for now.
David Turner27c88272000-11-09 19:10:22 +00002468
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002469 - Updated `docs/docmaker.py', a draft API reference is available at
Werner Lembergab6d1072001-04-02 21:30:06 +00002470 http://www.freetype.org/ft2api.html.
Werner Lembergb5084e12000-10-28 17:10:06 +00002471
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002472 - Changed `type1' to use `psaux'.
David Turner046f7a02000-09-15 22:42:06 +00002473
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002474 - Created a new module named `psaux' to hold the Type 1 & Type 2
2475 parsing routines. It should be used by `type1', `cid', and `cff'
Werner Lembergab6d1072001-04-02 21:30:06 +00002476 in the future.
David Turner34f1c2f2000-08-23 22:47:44 +00002477
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002478 - Fixed an important bug in `FT_Glyph_Get_CBox'.
David Turner3b2c50e2000-08-23 21:11:13 +00002479
Werner Lembergab6d1072001-04-02 21:30:06 +00002480 - Fixed some compiler warnings that happened since the TrueType
2481 bytecode decoder was deactivated by default.
David Turnera39acf52000-08-23 02:47:57 +00002482
Werner Lembergab6d1072001-04-02 21:30:06 +00002483 - Fixed two memory leaks:
David Turnera39acf52000-08-23 02:47:57 +00002484
Werner Lembergab6d1072001-04-02 21:30:06 +00002485 * The memory manager (16 bytes) isn't released in
2486 FT_Done_FreeType!
2487 * Using custom input streams, the copy of the original stream was
2488 never released.
David Turnera39acf52000-08-23 02:47:57 +00002489
Werner Lembergab6d1072001-04-02 21:30:06 +00002490 - Fixed the auto-hinter by performing automatic computation of the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002491 `filling direction' of each glyph. This is done through a simple
Werner Lembergab6d1072001-04-02 21:30:06 +00002492 and fast approximation, and seems to work (problems spotted by
2493 Werner though). The Arphic fonts are a lot nicer though there are
2494 still a lot of things to do to handle Asian fonts correctly.
David Turnera39acf52000-08-23 02:47:57 +00002495
David Turnerb1693412000-07-27 21:48:48 +00002496
Werner Lembergab6d1072001-04-02 21:30:06 +00002497======================================================================
Werner Lemberge4b32a52000-10-31 20:42:18 +00002498
David Turnerc5cdf8b2000-07-27 21:40:22 +00002499BETA-8 (RELEASE CANDIDATE) CHANGES
2500
Werner Lembergab6d1072001-04-02 21:30:06 +00002501 - Deactivated the TrueType bytecode interpreter by default.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002502
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002503 - Deactivated the `src/type1' font driver. Now `src/type1z' is used
Werner Lembergab6d1072001-04-02 21:30:06 +00002504 by default.
David Turner5f5b4462000-07-26 19:13:51 +00002505
Werner Lembergab6d1072001-04-02 21:30:06 +00002506 - Updates to the build system. We now compile the library correctly
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002507 under Unix system through `configure' which is automatically
2508 called on the first `make' invocation.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002509
Werner Lembergab6d1072001-04-02 21:30:06 +00002510 - Added the auto-hinting module! Fixing some bugs here and there.
David Turner5fe4c002000-07-26 19:04:08 +00002511
Werner Lembergab6d1072001-04-02 21:30:06 +00002512 - Found some bugs in the composite loader (seac) of the Type1-based
2513 font drivers.
David Turner49bd4f02000-07-12 16:57:37 +00002514
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002515 - Renamed the directory `freetype2/config' to `freetype2/builds' and
Werner Lembergab6d1072001-04-02 21:30:06 +00002516 updated all relevant files.
David Turner1ca6f2d2000-07-08 00:49:43 +00002517
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002518 - Found a memory leak in the `type1' driver.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002519
Werner Lembergab6d1072001-04-02 21:30:06 +00002520 - Incorporated Tom's patches to support flex operators correctly in
2521 OpenType/CFF fonts. Now all I need is to support pure CFF and CEF
2522 fonts to be done with this driver :-)
David Turner9b3d1c72000-07-07 19:47:34 +00002523
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002524 - Added the Windows FNT/FON driver in `src/winfonts'. For now, it
2525 always `simulates' a Unicode charmap, so it shouldn't be
Werner Lembergab6d1072001-04-02 21:30:06 +00002526 considered completed right now.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002527
Werner Lembergab6d1072001-04-02 21:30:06 +00002528 It is there to be more a proof of concept than anything else
2529 anyway. The driver is a single C source file, that compiles to 3
2530 Kb of code.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002531
Werner Lembergab6d1072001-04-02 21:30:06 +00002532 I'm still working on the PCF/BDF drivers, but I'm too lazy to
2533 finish them now.
David Turner9b3d1c72000-07-07 19:47:34 +00002534
David Turnerc06aba22000-06-30 23:38:23 +00002535 - CHANGES TO THE HIGH-LEVEL API
Werner Lemberge4b32a52000-10-31 20:42:18 +00002536
Werner Lembergab6d1072001-04-02 21:30:06 +00002537 * FT_Get_Kerning has a new parameter that allows you to select the
2538 coordinates of the kerning vector (font units, scaled, scaled +
2539 grid-fitted).
2540 * The outline functions are now in <freetype/ftoutln.h> and not
2541 part of <freetype/freetype.h> anymore.
2542 * <freetype/ftmodule.h> now contains declarations for
2543 FT_New_Library, FT_Done_Library, FT_Add_Default_Modules.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002544 * The so-called convenience functions have moved from `ftoutln.c'
2545 to `ftglyph.c', and are thus available with this optional
Werner Lembergab6d1072001-04-02 21:30:06 +00002546 component of the library. They are declared in
2547 <freetype/ftglyph.h> now.
2548 * Anti-aliased rendering is now the default for FT_Render_Glyph
David Turnerc06aba22000-06-30 23:38:23 +00002549 (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
2550 To generate a monochrome bitmap, use ft_render_mode_mono, or the
Werner Lembergab6d1072001-04-02 21:30:06 +00002551 FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char.
David Turnerc06aba22000-06-30 23:38:23 +00002552 FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
Werner Lembergab6d1072001-04-02 21:30:06 +00002553 * <freetype/freetype.h> now include <freetype/config/ftconfig.h>,
David Turnerc06aba22000-06-30 23:38:23 +00002554 solving a few headaches :-)
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002555 * The type FT_GlyphSlotRec has now a `library' field.
David Turnerc06aba22000-06-30 23:38:23 +00002556
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002557 - CHANGES TO THE `ftglyph.h' API
Werner Lemberge4b32a52000-10-31 20:42:18 +00002558
Werner Lembergab6d1072001-04-02 21:30:06 +00002559 This API has been severely modified in order to make it simpler,
2560 clearer, and more efficient. It certainly now looks like a real
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002561 `glyph factory' object, and allows client applications to manage
Werner Lembergab6d1072001-04-02 21:30:06 +00002562 (i.e. transform, bbox and render) glyph images without ever
2563 knowing their original format.
David Turnerc06aba22000-06-30 23:38:23 +00002564
Werner Lembergab6d1072001-04-02 21:30:06 +00002565 - Added support for CID-keyed fonts to the CFF driver. Maybe
2566 support for pure CFF + CEF fonts should come in?
David Turner9d636b62000-06-27 23:32:27 +00002567
Werner Lembergab6d1072001-04-02 21:30:06 +00002568 - Cleaned up source code in order to avoid two functions with the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002569 same name. Also changed the names of the files in `type1z' from
2570 `t1XXXX' to `z1XXXX' in order to avoid any conflicts.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002571
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002572 `make multi' now works well :-)
Werner Lemberge4b32a52000-10-31 20:42:18 +00002573
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002574 Also removed the use of `cidafm' for now, even if the source files
Werner Lembergab6d1072001-04-02 21:30:06 +00002575 are still there. This functionality will certainly go into a
2576 specific module.
David Turnerc06aba22000-06-30 23:38:23 +00002577
Werner Lemberge4b32a52000-10-31 20:42:18 +00002578 - ADDED SUPPORT FOR THE AUTO-HINTER
2579
Werner Lembergab6d1072001-04-02 21:30:06 +00002580 It works :-) I have a demo program which simply is a copy of
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002581 `ftview' that does a `FT_Add_Module(library,
Werner Lembergab6d1072001-04-02 21:30:06 +00002582 &autohinter_module_class)' after library initialization, and Type
2583 1 & OpenType/CFF fonts are now hinted.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002584
Werner Lembergab6d1072001-04-02 21:30:06 +00002585 CID fonts are not hinted, as they include no charmap and the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002586 auto-hinter doesn't include `generic' global metrics computations
Werner Lembergab6d1072001-04-02 21:30:06 +00002587 yet.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002588
Werner Lembergab6d1072001-04-02 21:30:06 +00002589 Now, I need to release this thing to the FreeType 2 source.
David Turner9d636b62000-06-27 23:32:27 +00002590
2591 - CHANGES TO THE RENDERER MODULES
Werner Lemberge4b32a52000-10-31 20:42:18 +00002592
Werner Lembergab6d1072001-04-02 21:30:06 +00002593 The monochrome and smooth renderers are now in two distinct
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002594 directories, namely `src/raster1' and `src/smooth'. Note that the
2595 old `src/renderer' is now gone.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002596
Werner Lembergab6d1072001-04-02 21:30:06 +00002597 I ditched the 5-gray-levels renderers. Basically, it involved a
2598 simple #define toggle in 'src/raster1/ftraster.c'.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002599
Werner Lembergab6d1072001-04-02 21:30:06 +00002600 FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now
2601 select the best renderer available, depending on render mode. If
2602 the current renderer for a given glyph image format isn't capable
2603 of supporting the render mode, another one will be found in the
2604 library's list. This means that client applications do not need
2605 to switch or set the renderers themselves (as in the latest
2606 change), they'll get what they want automatically. At last.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002607
Werner Lembergab6d1072001-04-02 21:30:06 +00002608 Changed the demo programs accordingly.
David Turner9d636b62000-06-27 23:32:27 +00002609
David Turnerf0df85b2000-06-22 00:17:42 +00002610 - MAJOR INTERNAL REDESIGN:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002611
Werner Lembergab6d1072001-04-02 21:30:06 +00002612 A lot of internal modifications have been performed lately on the
David Turnerf0df85b2000-06-22 00:17:42 +00002613 source in order to provide the following enhancements:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002614
Werner Lembergab6d1072001-04-02 21:30:06 +00002615 * More generic module support:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002616
Werner Lembergab6d1072001-04-02 21:30:06 +00002617 The FT_Module type is now defined to represent a handle to a
2618 given module. The file <freetype/ftmodule.h> contains the
2619 FT_Module_Class definition, as well as the module-loading public
2620 API.
David Turnerf0df85b2000-06-22 00:17:42 +00002621
Werner Lembergab6d1072001-04-02 21:30:06 +00002622 The FT_Driver type is still defined, and still represents a
2623 pointer to a font driver. Note that FT_Add_Driver is replaced
2624 by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc.
2625
2626 * Support for generic glyph image types:
2627
2628 The FT_Renderer type is a pointer to a module used to perform
2629 various operations on glyph image.
2630
2631 Each renderer is capable of handling images in a single format
2632 (e.g. ft_glyph_format_outline). Its functions are used to:
2633
2634 - transform an glyph image
2635 - render a glyph image into a bitmap
2636 - return the control box (dimensions) of a given glyph image
2637
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002638 The scan converters `ftraster.c' and `ftgrays.c' have been moved
2639 to the new directory `src/renderer', and are used to provide two
Werner Lembergab6d1072001-04-02 21:30:06 +00002640 default renderer modules.
2641
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002642 One corresponds to the `standard' scan-converter, the other to
2643 the `smooth' one.
Werner Lembergab6d1072001-04-02 21:30:06 +00002644
2645 he current renderer can be set through the new function
2646 FT_Set_Renderer.
2647
2648 The old raster-related function FT_Set_Raster, FT_Get_Raster and
2649 FT_Set_Raster_Mode have now disappeared, in favor of the new:
2650
2651 FT_Get_Renderer
2652 FT_Set_Renderer
2653
2654 See the file <freetype/ftrender.h> for more details.
2655
2656 These changes were necessary to properly support different
2657 scalable formats in the future, like bi-color glyphs, etc.
2658
2659 * Glyph loader object:
2660
2661 A new internal object, called a 'glyph loader' has been
2662 introduced in the base layer. It is used by all scalable format
2663 font drivers to load glyphs and composites.
2664
2665 This object has been created to reduce the code size of each
2666 driver, as each one of them basically re-implemented its
2667 functionality.
2668
2669 See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
2670 more information.
2671
2672 * FT_GlyphSlot has new fields:
2673
2674 In order to support extended features (see below), the
2675 FT_GlyphSlot structure has a few new fields:
2676
2677 linearHoriAdvance:
2678
2679 This field gives the linearly scaled (i.e. scaled but
2680 unhinted) advance width for the glyph, expressed as a 16.16
2681 fixed pixel value. This is useful to perform WYSIWYG text.
2682
2683 linearVertAdvance:
2684 This field gives the linearly scaled advance height for the
2685 glyph (relevant in vertical glyph layouts only). This is
2686 useful to perform WYSIWYG text.
2687
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002688 Note that the two above field replace the removed `metrics2'
Werner Lembergab6d1072001-04-02 21:30:06 +00002689 field in the glyph slot.
2690
2691 advance:
2692 This field is a vector that gives the transformed advance for
2693 the glyph. By default, it corresponds to the advance width,
2694 unless FT_LOAD_VERTICAL_LAYOUT was specified when calling
2695 FT_Load_Glyph or FT_Load_Char.
2696
2697 bitmap_left:
2698 This field gives the distance in integer pixels from the
2699 current pen position to the left-most pixel of a glyph image
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002700 IF IT IS A BITMAP. It is only valid when the `format' field
2701 is set to `ft_glyph_format_bitmap', for example, after calling
Werner Lembergab6d1072001-04-02 21:30:06 +00002702 the new function FT_Render_Glyph.
2703
2704 bitmap_top:
2705 This field gives the distance in integer pixels from the
2706 current pen position (located on the baseline) to the top-most
2707 pixel of the glyph image IF IT IS A BITMAP. Positive values
2708 correspond to upwards Y.
2709
2710 loader:
2711 This is a new private field for the glyph slot. Client
2712 applications should not touch it.
David Turnerf0df85b2000-06-22 00:17:42 +00002713
2714
Werner Lembergab6d1072001-04-02 21:30:06 +00002715 * Support for transforms and direct rendering in FT_Load_Glyph:
David Turnerf0df85b2000-06-22 00:17:42 +00002716
Werner Lembergab6d1072001-04-02 21:30:06 +00002717 Most of the functionality found in <freetype/ftglyph.h> has been
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002718 moved to the core library. Hence, the following:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002719
Werner Lembergab6d1072001-04-02 21:30:06 +00002720 - A transform can be specified for a face through
2721 FT_Set_Transform. this transform is applied by FT_Load_Glyph
2722 to scalable glyph images (i.e. NOT TO BITMAPS) before the
2723 function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM
2724 was set in the load flags.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002725
Werner Lembergab6d1072001-04-02 21:30:06 +00002726 - Once a glyph image has been loaded, it can be directly
2727 converted to a bitmap by using the new FT_Render_Glyph
2728 function. Note that this function takes the glyph image from
2729 the glyph slot, and converts it to a bitmap whose properties
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002730 are returned in `face.glyph.bitmap', `face.glyph.bitmap_left'
2731 and `face.glyph.bitmap_top'. The original native image might
Werner Lembergab6d1072001-04-02 21:30:06 +00002732 be lost after the conversion.
2733
2734 - When using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph
2735 and FT_Load_Char functions will call FT_Render_Glyph
2736 automatically when needed.
2737
2738 - Reformatted all modules source code in order to get rid of the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002739 basic data types redifinitions (i.e. `TT_Int' instead of `FT_Int',
2740 `T1_Fixed' instead of `FT_Fixed'). Hence the format-specific
2741 prefixes like `TT_', `T1_', `T2_' and `CID_' are only used for
Werner Lembergab6d1072001-04-02 21:30:06 +00002742 relevant structures.
David Turnerf0df85b2000-06-22 00:17:42 +00002743
2744
Werner Lembergab6d1072001-04-02 21:30:06 +00002745======================================================================
Werner Lemberge4b32a52000-10-31 20:42:18 +00002746
David Turnerf9b8dec2000-06-16 19:34:52 +00002747OLD CHANGES FOR BETA 7
David Turner3475e7f2000-05-17 20:56:01 +00002748
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002749 - bug-fixed the OpenType/CFF parser. It now loads and displays my
Werner Lembergab6d1072001-04-02 21:30:06 +00002750 two fonts nicely, but I'm pretty certain that more testing is
2751 needed :-)
Werner Lemberge4b32a52000-10-31 20:42:18 +00002752
David Turner2b9be992000-06-07 23:41:17 +00002753 - fixed the crummy Type 1 hinter, it now handles accented characters
Werner Lembergab6d1072001-04-02 21:30:06 +00002754 correctly (well, the accent is not always well placed, but that's
David Turner2b9be992000-06-07 23:41:17 +00002755 another problem..)
2756
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002757 - added the CID-keyed Type 1 driver in `src/cid'. Works pretty well
Werner Lembergab6d1072001-04-02 21:30:06 +00002758 for only 13 Kb of code ;-) Doesn't read AFM files though, nor the
2759 really useful CMAP files..
David Turner04aa8002000-06-01 03:27:48 +00002760
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002761 - fixed two bugs in the smooth renderer (src/base/ftgrays.c).
2762 Thanks to Boris Letocha for spotting them and providing a fix.
David Turner04aa8002000-06-01 03:27:48 +00002763
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002764 - fixed potential `divide by zero' bugs in ftcalc.c.
David Turner4f99c3c2000-05-29 20:55:13 +00002765
Werner Lembergab6d1072001-04-02 21:30:06 +00002766 - added source code for the OpenType/CFF driver (still incomplete
2767 though..)
David Turner4f99c3c2000-05-29 20:55:13 +00002768
Werner Lembergab6d1072001-04-02 21:30:06 +00002769 - modified the SFNT driver slightly to perform more robust header
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002770 checks in TT_Load_SFNT_Header. This prevents certain font files
Werner Lembergab6d1072001-04-02 21:30:06 +00002771 (e.g. some Type 1 Multiple Masters) from being incorrectly
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002772 `recognized' as TrueType font files..
David Turner4f99c3c2000-05-29 20:55:13 +00002773
Werner Lembergab6d1072001-04-02 21:30:06 +00002774 - moved a lot of stuff from the TrueType driver to the SFNT module,
2775 this allows greater code re-use between font drivers
2776 (e.g. TrueType, OpenType, Compact-TrueType, etc..)
David Turner2e421312000-05-26 22:13:17 +00002777
2778 - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
2779 to minimally speed it up..
2780
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002781 - added support for Multiple Master fonts in `type1z'. There is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002782 also a new file named <freetype/ftmm.h> which defines functions to
David Turner11187202000-05-26 17:13:23 +00002783 manage them from client applications.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002784
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002785 The new file `src/base/ftmm.c' is also optional to the engine..
David Turner11187202000-05-26 17:13:23 +00002786
Werner Lembergab6d1072001-04-02 21:30:06 +00002787 - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) +
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002788 small bug fixes in FT_Load_Glyph, the `type1' driver, etc..
David Turner11187202000-05-26 17:13:23 +00002789
David Turnerf5dcdd52000-05-23 22:16:27 +00002790 - a minor fix to the Type 1 driver to let them apply the font matrix
2791 correctly (used for many oblique fonts..)
2792
David Turner51179f02000-05-18 16:18:05 +00002793 - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002794 to use %p instead of %lx). Thanks to Karl Robillard.
David Turner51179f02000-05-18 16:18:05 +00002795
Werner Lembergab6d1072001-04-02 21:30:06 +00002796 - fixed some bugs in the sbit loader (src/base/sfnt/ttsbit.c) +
2797 added a new flag, FT_LOAD_CROP_BITMAP to query that bitmaps be
2798 cropped when loaded from a file (maybe I should move the bitmap
2799 cropper to the base layer ??).
David Turner109fcf62000-05-17 23:35:37 +00002800
Werner Lembergab6d1072001-04-02 21:30:06 +00002801 - changed the default number of gray levels of the smooth renderer
2802 to 256 (instead of the previous 128). Of course, the human eye
2803 can't see any difference ;-)
David Turner3475e7f2000-05-17 20:56:01 +00002804
Werner Lembergab6d1072001-04-02 21:30:06 +00002805 - removed TT_MAX_SUBGLYPHS, there is no static limit on the number
2806 of subglyphs in a TrueType font now..
David Turner3475e7f2000-05-17 20:56:01 +00002807
Werner Lembergab6d1072001-04-02 21:30:06 +00002808
2809======================================================================
2810
David Turner3475e7f2000-05-17 20:56:01 +00002811OLD CHANGES 16 May 2000
David Turnerefce08d2000-05-11 18:23:52 +00002812
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002813 - tagged `BETA-6' in the CVS tree. This one is a serious release
Werner Lembergab6d1072001-04-02 21:30:06 +00002814 candidate even though it doesn't incorporate the auto-hinter yet..
David Turner968f0c32000-05-16 23:26:01 +00002815
2816 - various obsolete files were removed, and copyright header updated
2817
Werner Lembergab6d1072001-04-02 21:30:06 +00002818 - finally updated the standard raster to fix the monochrome
2819 rendering bug + re-enable support for 5-gray levels anti-aliasing
2820 (suck, suck..)
David Turner968f0c32000-05-16 23:26:01 +00002821
2822 - created new header files, and modified sources accordingly:
David Turnere49ab252000-05-16 23:44:38 +00002823
Werner Lembergab6d1072001-04-02 21:30:06 +00002824 <freetype/fttypes.h>
2825 - simple FreeType types, without the API
2826 <freetype/internal/ftmemory.h>
2827 - definition of memory-management macros
David Turner968f0c32000-05-16 23:26:01 +00002828
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002829 - added the `DSIG' (OpenType Digital Signature) tag to
Werner Lembergab6d1072001-04-02 21:30:06 +00002830 <freetype/tttags.h>
David Turner968f0c32000-05-16 23:26:01 +00002831
Werner Lembergab6d1072001-04-02 21:30:06 +00002832 - light update/cleaning of the build system + changes to the sources
2833 in order to get rid of _all_ compiler warnings with three
2834 compilers, i.e:
David Turnerc30aea92000-05-12 15:01:18 +00002835
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002836 gcc with `-ansi -pedantic -Wall -W', Visual C++ with `/W3 /WX' and
Werner Lembergab6d1072001-04-02 21:30:06 +00002837 LCC
David Turnerc30aea92000-05-12 15:01:18 +00002838
Werner Lembergab6d1072001-04-02 21:30:06 +00002839 IMPORTANT NOTE FOR WIN32-LCC USERS:
2840 |
2841 | It seems the C pre-processor that comes with LCC is broken, it
2842 | doesn't recognize the ANSI standard directives # and ##
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002843 | correctly when one of the argument is a macro. Also,
2844 | something like:
Werner Lembergab6d1072001-04-02 21:30:06 +00002845 |
2846 | #define F(x) print##x
2847 |
2848 | F(("hello"))
2849 |
2850 | will get incorrectly translated to:
2851 |
2852 | print "hello")
2853 |
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002854 | by its pre-processor. For this reason, you simply cannot build
Werner Lembergab6d1072001-04-02 21:30:06 +00002855 | FreeType 2 in debug mode with this compiler..
David Turnerc30aea92000-05-12 15:01:18 +00002856
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002857 - yet another massive grunt work. I've changed the definition of
2858 the EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These
2859 now take an argument, which is the function's return value type.
David Turnere49ab252000-05-16 23:44:38 +00002860
Werner Lembergab6d1072001-04-02 21:30:06 +00002861 This is necessary to compile FreeType as a DLL on Windows and
2862 OS/2. Depending on the compiler used, a compiler-specific keyword
2863 like __export or __system must be placed before (VisualC++) or
2864 after (BorlandC++) the type..
David Turnere49ab252000-05-16 23:44:38 +00002865
David Turnerbfe2f982000-05-12 12:17:15 +00002866 Of course, this needed a lot of changes throughout the source code
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002867 to make it compile again... All cleaned up now, apparently..
David Turnerbfe2f982000-05-12 12:17:15 +00002868
Werner Lembergab6d1072001-04-02 21:30:06 +00002869 Note also that there is a new EXPORT_VAR macro defined to allow
2870 the _declaration_ of an exportable public (constant)
2871 variable. This is the case of the raster interfaces (see
2872 ftraster.h and ftgrays.h), as well as each module's interface (see
2873 sfdriver.h, psdriver.h, etc..)
David Turnerbfe2f982000-05-12 12:17:15 +00002874
Werner Lembergab6d1072001-04-02 21:30:06 +00002875 - new feature: it is now possible to pass extra parameters to font
2876 drivers when creating a new face object. For now,
2877 this capability is unused. It could however prove to
2878 be useful in a near future..
David Turnerbfe2f982000-05-12 12:17:15 +00002879
Werner Lembergab6d1072001-04-02 21:30:06 +00002880 the FT_Open_Args structure was changes, as well as the internal
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002881 driver interface (the specific `init_face' module function has
Werner Lembergab6d1072001-04-02 21:30:06 +00002882 now a different signature).
David Turnerbfe2f982000-05-12 12:17:15 +00002883
2884 - updated the tutorial (not finished though).
Werner Lembergab6d1072001-04-02 21:30:06 +00002885
David Turnerc30aea92000-05-12 15:01:18 +00002886 - updated the top-level BUILD document
David Turnerbfe2f982000-05-12 12:17:15 +00002887
Werner Lembergab6d1072001-04-02 21:30:06 +00002888 - fixed a potential memory leak that could occur when loading
2889 embedded bitmaps.
David Turnerc60c61c2000-05-12 15:26:58 +00002890
Werner Lembergab6d1072001-04-02 21:30:06 +00002891 - added the declaration of FT_New_Memory_Face in
2892 <freetype/freetype.h>, as it was missing from the public header
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002893 (the implementation was already in `ftobjs.c').
David Turnerbfe2f982000-05-12 12:17:15 +00002894
Werner Lembergab6d1072001-04-02 21:30:06 +00002895 - the file <freetype/fterrors.h> has been seriously updated in order
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002896 to allow the automatic generation of error message tables. See
2897 the comments within it for more information.
David Turnerbfe2f982000-05-12 12:17:15 +00002898
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002899 - major directory hierarchy re-organisation. This was done for two
Werner Lembergab6d1072001-04-02 21:30:06 +00002900 things:
David Turnere49ab252000-05-16 23:44:38 +00002901
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002902 * first, to ease the `manual' compilation of the library by
Werner Lembergab6d1072001-04-02 21:30:06 +00002903 requiring at lot less include paths :-)
David Turnerbfe2f982000-05-12 12:17:15 +00002904
Werner Lembergab6d1072001-04-02 21:30:06 +00002905 * second, to allow external programs to effectively access
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002906 internal data fields. For example, this can be extremely
Werner Lembergab6d1072001-04-02 21:30:06 +00002907 useful if someone wants to write a font producer or a font
2908 manager on top of FreeType.
David Turnera9c251c2000-05-11 18:36:19 +00002909
Werner Lembergab6d1072001-04-02 21:30:06 +00002910 Basically, you should now use the 'freetype/' prefix for header
2911 inclusion, as in:
David Turnere49ab252000-05-16 23:44:38 +00002912
David Turnera9c251c2000-05-11 18:36:19 +00002913 #include <freetype/freetype.h>
2914 #include <freetype/ftglyph.h>
2915
2916 Some new include sub-directories are available:
David Turnere49ab252000-05-16 23:44:38 +00002917
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002918 a. the `freetype/config' directory, contains two files used to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002919 configure the build of the library. Client applications
2920 should not need to look at these normally, but they can if
2921 they want.
David Turnere49ab252000-05-16 23:44:38 +00002922
David Turnera9c251c2000-05-11 18:36:19 +00002923 #include <freetype/config/ftoption.h>
2924 #include <freetype/config/ftconfig.h>
David Turnere49ab252000-05-16 23:44:38 +00002925
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002926 b. the `freetype/internal' directory, contains header files that
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002927 describes library internals. These are the header files that
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002928 were previously found in the `src/base' and `src/shared'
Werner Lembergab6d1072001-04-02 21:30:06 +00002929 directories.
David Turnera9c251c2000-05-11 18:36:19 +00002930
2931
Werner Lembergab6d1072001-04-02 21:30:06 +00002932 As usual, the build system and the demos have been updated to
2933 reflect the change..
David Turnere49ab252000-05-16 23:44:38 +00002934
David Turnera9c251c2000-05-11 18:36:19 +00002935 Here's a layout of the new directory hierarchy:
David Turnere49ab252000-05-16 23:44:38 +00002936
Werner Lemberg89df58f2002-06-14 08:09:25 +00002937 TOP_DIR
David Turnera9c251c2000-05-11 18:36:19 +00002938 include/
2939 freetype/
2940 freetype.h
2941 ...
2942 config/
2943 ftoption.h
2944 ftconfig.h
2945 ftmodule.h
David Turnere49ab252000-05-16 23:44:38 +00002946
David Turnera9c251c2000-05-11 18:36:19 +00002947 internal/
2948 ftobjs.h
2949 ftstream.h
2950 ftcalc.h
2951 ...
David Turnere49ab252000-05-16 23:44:38 +00002952
David Turnera9c251c2000-05-11 18:36:19 +00002953 src/
2954 base/
2955 ...
David Turnere49ab252000-05-16 23:44:38 +00002956
David Turnera9c251c2000-05-11 18:36:19 +00002957 sfnt/
2958 psnames/
2959 truetype/
2960 type1/
2961 type1z/
2962
2963
Werner Lembergab6d1072001-04-02 21:30:06 +00002964 Compiling a module is now much easier, for example, the following
Werner Lemberg89df58f2002-06-14 08:09:25 +00002965 should work when in the TOP_DIR directory on an ANSI build:
David Turnere49ab252000-05-16 23:44:38 +00002966
David Turnera9c251c2000-05-11 18:36:19 +00002967 gcc -c -I./include -I./src/base src/base/ftbase.c
2968 gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
2969 etc..
2970
2971 (of course, using -Iconfig/<system> if you provide system-specific
2972 configuration files).
David Turnerefce08d2000-05-11 18:23:52 +00002973
Werner Lembergab6d1072001-04-02 21:30:06 +00002974 - updated the structure of FT_Outline_Funcs in order to allow direct
2975 coordinate scaling within the outline decomposition routine (this
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002976 is important for virtual `on' points with TrueType outlines) +
Werner Lembergab6d1072001-04-02 21:30:06 +00002977 updates to the rasters to support this..
David Turnerefce08d2000-05-11 18:23:52 +00002978
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002979 - updated the OS/2 table loading code in `src/sfnt/ttload.c' in
Werner Lembergab6d1072001-04-02 21:30:06 +00002980 order to support version 2 of the table (see OpenType 1.2 spec)
David Turnerefce08d2000-05-11 18:23:52 +00002981
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002982 - created `include/tttables.h' and `include/t1tables.h' to allow
Werner Lembergab6d1072001-04-02 21:30:06 +00002983 client applications to access some of the SFNT and T1 tables of a
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002984 face with a procedural interface (see `FT_Get_Sfnt_Table') +
Werner Lembergab6d1072001-04-02 21:30:06 +00002985 updates to internal source files to reflect the change..
David Turnerefce08d2000-05-11 18:23:52 +00002986
Werner Lembergab6d1072001-04-02 21:30:06 +00002987 - some cleanups in the source code to get rid of warnings when
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002988 compiling with the `-Wall -W -ansi -pedantic' options in gcc.
David Turnerefce08d2000-05-11 18:23:52 +00002989
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002990 - debugged and moved the smooth renderer to `src/base/ftgrays.c' and
2991 its header to `include/ftgrays.h'
David Turnerefce08d2000-05-11 18:23:52 +00002992
Werner Lembergab6d1072001-04-02 21:30:06 +00002993 - updated TT_MAX_SUBGLYPHS to 96 as some CJK fonts have composites
2994 with up to 80 sub-glyphs !! Thanks to Werner
David Turnerefce08d2000-05-11 18:23:52 +00002995
Werner Lembergab6d1072001-04-02 21:30:06 +00002996
2997======================================================================
2998
David Turnerefce08d2000-05-11 18:23:52 +00002999OLD CHANGES - 14-apr-2000
David Turner77054f22000-04-14 20:49:52 +00003000
Werner Lembergab6d1072001-04-02 21:30:06 +00003001 - fixed a bug in the TrueType glyph loader that prevented the
3002 correct loading of some CJK glyphs in mingli.ttf
David Turnere49ab252000-05-16 23:44:38 +00003003
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003004 - improved the standard Type 1 hinter in `src/type1'
David Turnere49ab252000-05-16 23:44:38 +00003005
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003006 - fixed two bugs in the experimental Type 1 driver in `src/type1z'
David Turner77054f22000-04-14 20:49:52 +00003007 to handle the new XFree86 4.0 fonts (and a few other ones..)
3008
Werner Lembergab6d1072001-04-02 21:30:06 +00003009 - the smooth renderer is now complete and supports sub-banding to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003010 render large glyphs at high speed. However, it is still located
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003011 in `demos/src/ftgrays.c' and should move to the library itself in
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003012 the next beta. NOTE: The smooth renderer doesn't compile in
David Turner77054f22000-04-14 20:49:52 +00003013 stand-alone mode anymore, but this should be fixed RSN..
David Turnere49ab252000-05-16 23:44:38 +00003014
Werner Lembergab6d1072001-04-02 21:30:06 +00003015 - introduced convenience functions to more easily deal with glyph
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003016 images, see `include/ftglyph.h' for more details, as well as the
3017 new demo program named `demos/src/ftstring.c' that demonstrates
David Turner77054f22000-04-14 20:49:52 +00003018 its use
3019
Werner Lembergab6d1072001-04-02 21:30:06 +00003020 - implemented FT_LOAD_NO_RECURSE in both the TrueType and Type 1
3021 drivers (this is required by the auto-hinter to improve its
3022 results).
David Turner77054f22000-04-14 20:49:52 +00003023
Werner Lembergab6d1072001-04-02 21:30:06 +00003024 - changed the raster interface, in order to allow client
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003025 applications to provide their own span-drawing callbacks.
3026 However, only the smooth renderer supports this. See
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003027 `FT_Raster_Params' in the file `include/ftimage.h'.
David Turner77054f22000-04-14 20:49:52 +00003028
Werner Lembergab6d1072001-04-02 21:30:06 +00003029 - fixed a small bug in FT_MulFix that caused incorrect transform
3030 computation!
David Turner77054f22000-04-14 20:49:52 +00003031
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003032 - Note: The tutorial is out-of-date.
David Turner77054f22000-04-14 20:49:52 +00003033
Werner Lembergab6d1072001-04-02 21:30:06 +00003034
3035======================================================================
3036
David Turner77054f22000-04-14 20:49:52 +00003037OLD CHANGES - 12-mar-2000
David Turnerc3c7e7f2000-03-13 14:19:31 +00003038
Werner Lembergab6d1072001-04-02 21:30:06 +00003039 - changed the layout of configuration files : now, all ANSI
3040 configuration files are located in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003041 `freetype2/config'. System-specific over-rides can be placed in
3042 `freetype2/config/<system>'.
David Turnere49ab252000-05-16 23:44:38 +00003043
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003044 - moved all configuration macros to `config/ftoption.h'
David Turnere49ab252000-05-16 23:44:38 +00003045
David Turnerc3c7e7f2000-03-13 14:19:31 +00003046 - improvements in the Type 1 driver with AFM support
David Turnere49ab252000-05-16 23:44:38 +00003047
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003048 - changed the fields in the FT_Outline structure : the old `flags'
3049 array is re-named `tags', while all ancient flags are encoded into
3050 a single unsigned int named `flags'.
David Turnerc3c7e7f2000-03-13 14:19:31 +00003051
Werner Lembergab6d1072001-04-02 21:30:06 +00003052 - introduced new flags in FT_Outline.flags (see
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003053 ft_outline_.... enums in `ftimage.h').
David Turnerc3c7e7f2000-03-13 14:19:31 +00003054
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003055 - changed outline functions to `FT_Outline_<action>' syntax
David Turnerc3c7e7f2000-03-13 14:19:31 +00003056
3057 - added a smooth anti-alias renderer to the demonstration programs
Werner Lembergab6d1072001-04-02 21:30:06 +00003058
David Turnerc3c7e7f2000-03-13 14:19:31 +00003059 - added Mac graphics driver (thanks Just)
David Turnere49ab252000-05-16 23:44:38 +00003060
Werner Lembergab6d1072001-04-02 21:30:06 +00003061 - FT_Open_Face changed in order to received a pointer to a
3062 FT_Open_Args descriptor..
David Turnere49ab252000-05-16 23:44:38 +00003063
Werner Lembergab6d1072001-04-02 21:30:06 +00003064 - various cleanups, a few more API functions implemented (see
3065 FT_Attach_File)
David Turnerc3c7e7f2000-03-13 14:19:31 +00003066
3067 - updated some docs
3068
Werner Lembergab6d1072001-04-02 21:30:06 +00003069
3070======================================================================
3071
David Turnerc3c7e7f2000-03-13 14:19:31 +00003072OLD CHANGES - 22-feb-2000
David Turner58c10b52000-02-22 14:31:42 +00003073
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003074 - introduced the `psnames' module. It is used to:
David Turner58c10b52000-02-22 14:31:42 +00003075
Werner Lembergab6d1072001-04-02 21:30:06 +00003076 o convert a Postscript glyph name into the equivalent Unicode
Werner Lembergb4142d52007-01-17 12:45:26 +00003077 character code (used by the Type 1 driver(s) to synthesize on
Werner Lembergab6d1072001-04-02 21:30:06 +00003078 the fly a Unicode charmap).
David Turner58c10b52000-02-22 14:31:42 +00003079
Werner Lembergab6d1072001-04-02 21:30:06 +00003080 o provide an interface to retrieve the Postscript names of the
3081 Macintosh, Adobe Standard & Adobe Expert character codes.
3082 (the Macintosh names are used by the SFNT-module postscript
3083 names support routines, while the other two tables are used by
3084 the Type 1 driver(s)).
David Turner58c10b52000-02-22 14:31:42 +00003085
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003086 - introduced the `type1z' alternate Type 1 driver. This is a (still
Werner Lembergab6d1072001-04-02 21:30:06 +00003087 experimental) driver for the Type 1 format that will ultimately
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003088 replace the one in `src/type1'. It uses pattern matching to load
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003089 data from the font, instead of a finite state analyzer. It works
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003090 much better than the `old' driver with `broken' fonts. It is also
David Turner58c10b52000-02-22 14:31:42 +00003091 much smaller (under 15 Kb).
3092
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003093 - the Type 1 drivers (both in `src/type1' and `src/type1z') are
Werner Lembergab6d1072001-04-02 21:30:06 +00003094 nearly complete. They both provide automatic Unicode charmap
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003095 synthesis through the `psnames' module. No re-encoding vector is
Werner Lembergab6d1072001-04-02 21:30:06 +00003096 needed. (note that they still leak memory due to some code
David Turner58c10b52000-02-22 14:31:42 +00003097 missing, and I'm getting lazy).
3098
Werner Lembergab6d1072001-04-02 21:30:06 +00003099 Trivial AFM support has been added to read kerning information but
3100 wasn't exactly tested as it should ;-)
David Turner58c10b52000-02-22 14:31:42 +00003101
Werner Lembergab6d1072001-04-02 21:30:06 +00003102 - The TrueType glyph loader has been seriously rewritten (see the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003103 file `src/truetype/ttgload.c'. It is now much, much simpler as
Werner Lembergab6d1072001-04-02 21:30:06 +00003104 well as easier to read, maintain and understand :-) Preliminary
3105 versions introduced a memory leak that has been reported by Jack
David Turner58c10b52000-02-22 14:31:42 +00003106 Davis, and is now fixed..
3107
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003108 - introduced the new `ft_glyph_format_plotter', used to represent
3109 stroked outlines like Windows `Vector' fonts, and certain Type 1
3110 fonts like `Hershey'. The corresponding raster will be written
David Turner58c10b52000-02-22 14:31:42 +00003111 soon.
3112
Werner Lembergab6d1072001-04-02 21:30:06 +00003113 - FT_New_Memory_Face is gone. Likewise, FT_Open_Face has a new
3114 interface that uses a structure to describe the input stream, the
3115 driver (if required), etc..
3116
David Turner58c10b52000-02-22 14:31:42 +00003117
3118TODO
Werner Lembergab6d1072001-04-02 21:30:06 +00003119
David Turner58c10b52000-02-22 14:31:42 +00003120 - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
3121
Werner Lembergb4142d52007-01-17 12:45:26 +00003122 - Add a function like FT_Load_Character(face, char_code, load_flags)
3123 that would really embed a call to FT_Get_Char_Index then
Werner Lembergab6d1072001-04-02 21:30:06 +00003124 FT_Load_Glyph to ease developer's work.
David Turner58c10b52000-02-22 14:31:42 +00003125
Werner Lembergab6d1072001-04-02 21:30:06 +00003126 - Update the tutorial!
3127
3128 - consider adding support for Multiple Master fonts in the Type 1
David Turner58c10b52000-02-22 14:31:42 +00003129 drivers.
3130
Werner Lembergab6d1072001-04-02 21:30:06 +00003131 - Test the AFM routines of the Type 1 drivers to check that kerning
David Turner58c10b52000-02-22 14:31:42 +00003132 information is returned correctly.
3133
Werner Lembergab6d1072001-04-02 21:30:06 +00003134 - write a decent auto-gridding component !! We need this to release
David Turner58c10b52000-02-22 14:31:42 +00003135 FreeType 2.0 gold !
3136
3137
Werner Lembergab6d1072001-04-02 21:30:06 +00003138less urgent needs:
3139
David Turner58c10b52000-02-22 14:31:42 +00003140 - add a CFF/Type2 driver
3141 - add a BDF driver
3142 - add a FNT/PCF/HBF driver
3143 - add a Speedo driver from the X11 sources
3144
3145
Werner Lembergab6d1072001-04-02 21:30:06 +00003146======================================================================
3147
David Turner58c10b52000-02-22 14:31:42 +00003148OLDER CHANGES - 27-jan-2000
David Turner633da992000-01-27 14:07:33 +00003149
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003150 - updated the `sfnt' module interface to allow several SFNT-based
David Turner633da992000-01-27 14:07:33 +00003151 drivers to co-exist peacefully
David Turnere49ab252000-05-16 23:44:38 +00003152
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003153 - updated the `T1_Face' type to better separate Postscript font
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003154 content from the rest of the FT_Face structure. Might be used
Werner Lembergab6d1072001-04-02 21:30:06 +00003155 later by the CFF/Type2 driver..
David Turnere49ab252000-05-16 23:44:38 +00003156
David Turner633da992000-01-27 14:07:33 +00003157 - added an experimental replacement Type 1 driver featuring advanced
3158 (and speedy) pattern matching to retrieve the data from postscript
3159 fonts.
3160
Werner Lembergab6d1072001-04-02 21:30:06 +00003161 - very minor changes in the implementation of FT_Set_Char_Size and
Werner Lembergb4142d52007-01-17 12:45:26 +00003162 FT_Set_Pixel_Sizes (they now implement default to lighten the font
Werner Lembergab6d1072001-04-02 21:30:06 +00003163 driver's code).
David Turner633da992000-01-27 14:07:33 +00003164
3165
Werner Lembergab6d1072001-04-02 21:30:06 +00003166======================================================================
3167
David Turner633da992000-01-27 14:07:33 +00003168OLD MESSAGE
3169
Werner Lembergb4142d52007-01-17 12:45:26 +00003170This file summarizes the changes that occurred since the last `beta'
3171of FreeType 2. Because the list is important, it has been divided into
Werner Lembergab6d1072001-04-02 21:30:06 +00003172separate sections:
David Turnerd2b1f351999-12-16 23:11:37 +00003173
David Turner5951ce91999-12-29 00:53:44 +00003174Table Of Contents:
3175
3176 I High-Level Interface (easier !)
3177 II Directory Structure
3178 III Glyph Image Formats
3179 IV Build System
3180 V Portability
3181 VI Font Drivers
David Turnerd2b1f351999-12-16 23:11:37 +00003182
David Turnerd2b1f351999-12-16 23:11:37 +00003183
Werner Lembergab6d1072001-04-02 21:30:06 +00003184----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00003185
Werner Lembergab6d1072001-04-02 21:30:06 +00003186High-Level Interface:
David Turnere49ab252000-05-16 23:44:38 +00003187
Werner Lembergab6d1072001-04-02 21:30:06 +00003188 The high-level API has been considerably simplified. Here is how:
David Turnere49ab252000-05-16 23:44:38 +00003189
Werner Lembergab6d1072001-04-02 21:30:06 +00003190 - resource objects have disappeared. this means that face objects
3191 can now be created with a single function call (see FT_New_Face
3192 and FT_Open_Face)
David Turnere49ab252000-05-16 23:44:38 +00003193
Werner Lembergab6d1072001-04-02 21:30:06 +00003194 - when calling either FT_New_Face & FT_Open_Face, a size object
3195 and a glyph slot object are automatically created for the face,
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003196 and can be accessed through `face->glyph' and `face->size' if
Werner Lembergab6d1072001-04-02 21:30:06 +00003197 one really needs to. In most cases, there's no need to call
3198 FT_New_Size or FT_New_Glyph.
3199
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003200 - similarly, FT_Load_Glyph now only takes a `face' argument
Werner Lemberg4b2e83d2007-02-01 07:58:02 +00003201 (instead of a glyph slot and a size). Also, its `result'
Werner Lembergab6d1072001-04-02 21:30:06 +00003202 parameter is gone, as the glyph image type is returned in the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003203 field `face->glyph.format'
Werner Lembergab6d1072001-04-02 21:30:06 +00003204
3205 - the list of available charmaps is directly accessible through
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003206 `face->charmaps', counting `face->num_charmaps' elements. Each
Werner Lembergab6d1072001-04-02 21:30:06 +00003207 charmap has an 'encoding' field which specifies which known
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003208 encoding it deals with. Valid values are, for example:
David Turnere49ab252000-05-16 23:44:38 +00003209
David Turnerd2b1f351999-12-16 23:11:37 +00003210 ft_encoding_unicode (for ASCII, Latin-1 and Unicode)
3211 ft_encoding_apple_roman
3212 ft_encoding_sjis
3213 ft_encoding_adobe_standard
David Turner5951ce91999-12-29 00:53:44 +00003214 ft_encoding_adobe_expert
David Turnere49ab252000-05-16 23:44:38 +00003215
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003216 other values may be added in the future. Each charmap still
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003217 holds its `platform_id' and `encoding_id' values in case the
Werner Lembergab6d1072001-04-02 21:30:06 +00003218 encoding is too exotic for the current library
David Turnerd2b1f351999-12-16 23:11:37 +00003219
3220
Werner Lembergab6d1072001-04-02 21:30:06 +00003221----------------------------------------------------------------------
3222
David Turnerd2b1f351999-12-16 23:11:37 +00003223Directory Structure:
3224
3225 Should seem obvious to most of you:
3226
3227 freetype/
3228 config/ -- configuration sub-makefiles
3229 ansi/
David Turner5951ce91999-12-29 00:53:44 +00003230 unix/ -- platform-specific configuration files
David Turnerd2b1f351999-12-16 23:11:37 +00003231 win32/
3232 os2/
3233 msdos/
3234
Werner Lembergab6d1072001-04-02 21:30:06 +00003235 include/ -- public header files, those to be included
3236 directly by client apps
David Turnerd2b1f351999-12-16 23:11:37 +00003237
3238 src/ -- sources of the library
3239 base/ -- the base layer
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003240 sfnt/ -- the sfnt `driver' (see the drivers section
Werner Lembergab6d1072001-04-02 21:30:06 +00003241 below)
David Turnerd2b1f351999-12-16 23:11:37 +00003242 truetype/ -- the truetype driver
3243 type1/ -- the type1 driver
3244 shared/ -- some header files shared between drivers
3245
3246 demos/ -- demos/tools
3247
3248 docs/ -- documentation (a bit empty for now)
3249
David Turnerd2b1f351999-12-16 23:11:37 +00003250
Werner Lembergab6d1072001-04-02 21:30:06 +00003251----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00003252
Werner Lembergab6d1072001-04-02 21:30:06 +00003253Glyph Image Formats:
David Turnerd2b1f351999-12-16 23:11:37 +00003254
Werner Lembergab6d1072001-04-02 21:30:06 +00003255 Drivers are now able to register new glyph image formats within the
3256 library. For now, the base layer supports of course bitmaps and
3257 vector outlines, but one could imagine something different like
Werner Lembergb4142d52007-01-17 12:45:26 +00003258 colored bitmaps, bi-color vectors or whatever else (Metafonts anyone
Werner Lembergab6d1072001-04-02 21:30:06 +00003259 ??).
David Turnerd2b1f351999-12-16 23:11:37 +00003260
Werner Lembergab6d1072001-04-02 21:30:06 +00003261 See the file `include/ftimage.h'. Note also that the type
3262 FT_Raster_Map is gone, and is now replaced by FT_Bitmap, which
3263 should encompass all known bitmap types.
3264
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003265 Each new image format must provide at least one `raster', i.e. a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003266 module capable of transforming the glyph image into a bitmap. It's
Werner Lembergab6d1072001-04-02 21:30:06 +00003267 also possible to change the default raster used for a given glyph
3268 image format.
3269
3270 The default outline scan-converter now uses 128 levels of grays by
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003271 default, which tends to smooth many things. Note that the demo
Werner Lembergab6d1072001-04-02 21:30:06 +00003272 programs have been updated significantly in order to display these..
David Turnerd2b1f351999-12-16 23:11:37 +00003273
3274
Werner Lembergab6d1072001-04-02 21:30:06 +00003275----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00003276
Werner Lembergab6d1072001-04-02 21:30:06 +00003277Build system:
David Turnerd2b1f351999-12-16 23:11:37 +00003278
Werner Lembergab6d1072001-04-02 21:30:06 +00003279 You still need GNU Make to build the library. The build system has
3280 been very seriously re-vamped in order to provide things like :
3281
3282 - automatic host platform detection (reverting to 'config/ansi' if
3283 it is not detected, with pseudo-standard compilation flags)
David Turnerd2b1f351999-12-16 23:11:37 +00003284
3285 - the ability to compile from the Makefiles with very different and
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003286 exotic compilers. Note that linking the library can be difficult
Werner Lembergab6d1072001-04-02 21:30:06 +00003287 for some platforms.
David Turnerd2b1f351999-12-16 23:11:37 +00003288
3289 For example, the file `config/win32/lcclib.bat' is invoked by the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003290 build system to create the `.lib' file with LCC-Win32 because its
Werner Lembergab6d1072001-04-02 21:30:06 +00003291 librarian has too many flaws to be invoked directly from the
3292 Makefile.
David Turnerd2b1f351999-12-16 23:11:37 +00003293
Werner Lembergab6d1072001-04-02 21:30:06 +00003294 Here's how it works:
David Turnerd2b1f351999-12-16 23:11:37 +00003295
Werner Lembergab6d1072001-04-02 21:30:06 +00003296 - the first time you type `make', the build system runs a series of
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003297 sub-makefiles in order to detect your host platform. It then
3298 dumps what it found, and creates a file called `config.mk' in the
3299 current directory. This is a sub-Makefile used to define many
Werner Lembergab6d1072001-04-02 21:30:06 +00003300 important Make variables used to build the library.
David Turnerd2b1f351999-12-16 23:11:37 +00003301
Werner Lembergab6d1072001-04-02 21:30:06 +00003302 - the second time, the build system detects the `config.mk' then use
3303 it to build the library. All object files go into 'obj' by
3304 default, as well as the library file, but this can easily be
3305 changed.
David Turnerd2b1f351999-12-16 23:11:37 +00003306
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003307 Note that you can run `make setup' to force another host platform
Werner Lembergab6d1072001-04-02 21:30:06 +00003308 detection even if a `config.mk' is present in the current
3309 directory. Another solution is simply to delete the file, then
3310 re-run make.
David Turnerd2b1f351999-12-16 23:11:37 +00003311
Werner Lembergab6d1072001-04-02 21:30:06 +00003312 Finally, the default compiler for all platforms is gcc (for now,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003313 this will hopefully changed in the future). You can however specify
Werner Lembergab6d1072001-04-02 21:30:06 +00003314 a different compiler by specifying it after the 'setup' target as
3315 in:
David Turnerd2b1f351999-12-16 23:11:37 +00003316
3317 gnumake setup lcc on Win32 to use the LCC compiler
3318 gnumake setup visualc on Win32 to use Visual C++
3319
Werner Lembergab6d1072001-04-02 21:30:06 +00003320 See the file `config/<system>/detect.mk' for a list of supported
3321 compilers for your platforms.
David Turnerd2b1f351999-12-16 23:11:37 +00003322
Werner Lembergab6d1072001-04-02 21:30:06 +00003323 It should be relatively easy to write new detection rules files and
David Turnerd2b1f351999-12-16 23:11:37 +00003324 config.mk..
3325
Werner Lembergab6d1072001-04-02 21:30:06 +00003326 Finally, to build the demo programs, go to `demos' and launch GNU
3327 Make, it will use the `config.mk' in the top directory to build the
3328 test programs..
David Turnerd2b1f351999-12-16 23:11:37 +00003329
David Turnerd2b1f351999-12-16 23:11:37 +00003330
Werner Lembergab6d1072001-04-02 21:30:06 +00003331----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00003332
Werner Lembergab6d1072001-04-02 21:30:06 +00003333Portability:
David Turnerd2b1f351999-12-16 23:11:37 +00003334
Werner Lembergab6d1072001-04-02 21:30:06 +00003335 In the previous beta, a single FT_System object was used to
3336 encompass all low-level operations like thread synchronisation,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003337 memory management and i/o access. This has been greatly simplified:
Werner Lembergab6d1072001-04-02 21:30:06 +00003338
3339 - thread synchronisation has been dropped, for the simple reason
3340 that the library is already re-entrant, and that if you really
3341 need two threads accessing the same FT_Library, you should
3342 really synchronize access to it yourself with a simple mutex.
3343
3344 - memory management is performed through a very simple object
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003345 called `FT_Memory', which really is a table containing a table
Werner Lembergab6d1072001-04-02 21:30:06 +00003346 of pointers to functions like malloc, realloc and free as well
3347 as some user data (closure).
David Turnerd2b1f351999-12-16 23:11:37 +00003348
3349 - resources have disappeared (they created more problems than they
Werner Lembergab6d1072001-04-02 21:30:06 +00003350 solved), and i/o management have been simplified greatly as a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003351 result. Streams are defined through FT_Stream objects, which
3352 can be either memory-based or disk-based.
David Turnerd2b1f351999-12-16 23:11:37 +00003353
Werner Lembergab6d1072001-04-02 21:30:06 +00003354 Note that each face has its own stream, which is closed only
3355 when the face object is destroyed. Hence, a function like
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003356 TT_Flush_Face in 1.x cannot be directly supported. However, if
Werner Lembergab6d1072001-04-02 21:30:06 +00003357 you really need something like this, you can easily tailor your
3358 own streams to achieve the same feature at a lower level (and
3359 use FT_Open_Face instead of FT_New_Face to create the face).
David Turnerd2b1f351999-12-16 23:11:37 +00003360
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003361 See the file `include/ftsystem.h' for more details, as well as the
3362 implementations found in `config/unix' and `config/ansi'.
David Turnerd2b1f351999-12-16 23:11:37 +00003363
3364
Werner Lembergab6d1072001-04-02 21:30:06 +00003365----------------------------------------------------------------------
David Turnere49ab252000-05-16 23:44:38 +00003366
Werner Lembergab6d1072001-04-02 21:30:06 +00003367Font Drivers:
David Turner5951ce91999-12-29 00:53:44 +00003368
Werner Lembergab6d1072001-04-02 21:30:06 +00003369 The Font Driver interface has been modified in order to support
David Turner5951ce91999-12-29 00:53:44 +00003370 extensions & versioning.
3371
3372
Werner Lembergab6d1072001-04-02 21:30:06 +00003373 The list of the font drivers that are statically linked to the
3374 library at compile time is managed through a new configuration file
David Turner5951ce91999-12-29 00:53:44 +00003375 called `config/<platform>/ftmodule.h'.
3376
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003377 This file is autogenerated when invoking `make modules'. This
3378 target will parse all sub-directories of 'src', looking for a
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003379 `module.mk' rules file, used to describe the driver to the build
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003380 system.
David Turner5951ce91999-12-29 00:53:44 +00003381
Werner Lembergab6d1072001-04-02 21:30:06 +00003382 Hence, one should call `make modules' each time a font driver is
3383 added or removed from the `src' directory.
David Turner5951ce91999-12-29 00:53:44 +00003384
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003385 Finally, this version provides a `pseudo-driver' in `src/sfnt'.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003386 This driver doesn't support font files directly, but provides
3387 services used by all TrueType-like font drivers. Hence, its code is
3388 shared between the TrueType & OpenType font formats, and possibly
3389 more formats to come if we're lucky..
David Turnerd2b1f351999-12-16 23:11:37 +00003390
Werner Lembergab6d1072001-04-02 21:30:06 +00003391
3392----------------------------------------------------------------------
3393
3394Extensions support:
David Turner5951ce91999-12-29 00:53:44 +00003395
3396 The extensions support is inspired by the one found in 1.x.
3397
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003398 Now, each font driver has its own `extension registry', which lists
Werner Lembergab6d1072001-04-02 21:30:06 +00003399 which extensions are available for the font faces managed by the
3400 driver.
David Turner5951ce91999-12-29 00:53:44 +00003401
Werner Lembergab6d1072001-04-02 21:30:06 +00003402 Extension ids are now strings, rather than 4-byte tags, as this is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003403 usually more readable.
David Turner5951ce91999-12-29 00:53:44 +00003404
3405 Each extension has:
3406 - some data, associated to each face object
3407 - an interface (table of function pointers)
3408
Werner Lembergab6d1072001-04-02 21:30:06 +00003409 An extension that is format-specific should simply register itself
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003410 to the correct font driver. Here is some example code:
David Turner5951ce91999-12-29 00:53:44 +00003411
3412 // Registering an extensions
3413 //
3414 FT_Error FT_Init_XXXX_Extension( FT_Library library )
3415 {
3416 FT_DriverInterface* tt_driver;
3417
3418 driver = FT_Get_Driver( library, "truetype" );
3419 if (!driver) return FT_Err_Unimplemented_Feature;
3420
David Turnere49ab252000-05-16 23:44:38 +00003421 return FT_Register_Extension( driver, &extension_class );
David Turner5951ce91999-12-29 00:53:44 +00003422 }
3423
David Turnere49ab252000-05-16 23:44:38 +00003424
David Turner5951ce91999-12-29 00:53:44 +00003425 // Implementing the extensions
3426 //
3427 FT_Error FT_Proceed_Extension_XXX( FT_Face face )
3428 {
3429 FT_XXX_Extension ext;
3430 FT_XXX_Extension_Interface ext_interface;
3431
3432 ext = FT_Get_Extension( face, "extensionid", &ext_interface );
3433 if (!ext) return error;
3434
3435 return ext_interface->do_it(ext);
3436 }
David Turnerd2b1f351999-12-16 23:11:37 +00003437
Werner Lemberg56c368c2005-06-04 23:00:25 +00003438------------------------------------------------------------------------
3439
Werner Lemberg460d23f2010-04-05 08:46:26 +02003440Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
3441 2010 by
Werner Lemberg56c368c2005-06-04 23:00:25 +00003442David Turner, Robert Wilhelm, and Werner Lemberg.
3443
3444This file is part of the FreeType project, and may only be used,
3445modified, and distributed under the terms of the FreeType project
3446license, LICENSE.TXT. By continuing to use, modify, or distribute this
3447file you indicate that you have read the license and understand and
3448accept it fully.
3449
3450
Werner Lemberg110246c2006-09-26 21:55:44 +00003451Local Variables:
3452version-control: never
3453coding: utf-8
3454End:
3455
Werner Lembergab6d1072001-04-02 21:30:06 +00003456--- end of CHANGES ---