blob: dd121b6ef7474c5eff03f9fe7bbc2795f00b5882 [file] [log] [blame]
Werner Lemberg94168f02006-05-11 07:07:09 +00001CHANGES BETWEEN 2.2.1 and 2.2
Werner Lemberg1639c792006-05-06 16:44:58 +00002
3 I. IMPORTANT BUG FIXES
4
5 - Various integer overflows have been fixed.
6
7 - PFB fonts with MacOS resource fork weren't handled correctly on
8 non-MacOS platforms.
9
10
11======================================================================
12
Werner Lemberg94168f02006-05-11 07:07:09 +000013CHANGES BETWEEN 2.2 and 2.1.10
Werner Lemberg49f4d342005-06-16 19:07:08 +000014
Werner Lemberg1639c792006-05-06 16:44:58 +000015(not released officially)
16
Werner Lemberg49f4d342005-06-16 19:07:08 +000017 I. IMPORTANT BUG FIXES
18
19 - Vertical metrics for SFNT fonts were incorrect sometimes.
20
Werner Lemberg7e25c682005-09-09 18:00:06 +000021 - The FT_HAS_KERNING macro always returned 0.
22
Werner Lemberg083ba0b2005-12-23 15:10:54 +000023 - CFF OpenType fonts didn't return correct vertical metrics for
Werner Lembergcfc0cf22005-11-17 08:12:00 +000024 glyphs with outlines.
25
Werner Lemberg6c990452005-11-18 21:10:59 +000026 - If FreeType was compiled without hinters, all font formats based
27 on PS outlines weren't scaled correctly.
28
Werner Lemberg435046b2006-01-11 10:57:42 +000029
Werner Lemberg49f4d342005-06-16 19:07:08 +000030 II. IMPORTANT CHANGES
31
Werner Lemberge88d24c2006-02-28 21:49:54 +000032 - Version 2.2 no longer exposes its internals, this is, the header
33 files located in the `include/freetype/internal' directory of
34 the source package are not copied anymore by the `make install'
35 command. Consequently, a number of rogue clients which directly
36 access FreeType's internal functions and structures won't
37 compile without modification.
Werner Lemberg4db32ec2006-03-24 11:54:53 +000038
Werner Lemberge88d24c2006-02-28 21:49:54 +000039 We provide patches for most of those rogue clients. See the
40 following page for more information:
David Turnere9a47192006-02-28 09:26:58 +000041
Werner Lemberg94168f02006-05-11 07:07:09 +000042 http://www.freetype.org/freetype2/patches/rogue-patches.html
Werner Lemberge88d24c2006-02-28 21:49:54 +000043
44 Note that, as a convenience to our Unix desktop users, version
45 2.2 is *binary* compatible with FreeType 2.1.7, which means that
46 installing this release on an existing distribution shall not
47 break any working desktop.
David Turnere9a47192006-02-28 09:26:58 +000048
Werner Lemberg59939242006-01-31 20:17:42 +000049 - FreeType's build mechanism has been redesigned. With GNU make
50 it is now sufficient in most cases to edit two files:
51 `modules.cfg', to select the library components, and the
52 configuration file `include/freetype/config/ftoption.h' (which
53 can be copied to the objects directory). Removing unused module
54 directories to prevent its compilation and editing
55 `include/freetype/config/ftmodule.h' is no longer necessary.
56
Werner Lemberg083ba0b2005-12-23 15:10:54 +000057 - The LIGHT hinting algorithm produces more pleasant results.
58 Also, using the FT_LOAD_TARGET_LIGHT flags within FT_Load_Glyph
Werner Lemberg40917862006-04-01 18:49:07 +000059 always forces auto-hinting, as a special exception. This allows
60 you to experiment with it even if you have enabled the TrueType
David Turnercf603712006-04-01 16:22:06 +000061 bytecode interpreter in your build.
62
63 - The auto hinter now employs a new algorithm for CJK fonts, based
64 on Akito Hirai's patch. Note that this only works for fonts
65 with a Unicode charmap at the moment.
David Turnere6bb9532005-12-23 13:32:06 +000066
Werner Lemberg083ba0b2005-12-23 15:10:54 +000067 - The following callback function types have changed slightly (by
Werner Lemberg49f4d342005-06-16 19:07:08 +000068 adding the `const' keyword where appropriate):
69
70 FT_Outline_MoveToFunc
71 FT_Outline_LineToFunc
72 FT_Outline_ConicToFunc
73 FT_Outline_CubicToFunc
74 FT_SpanFunc
75 FT_Raster_RenderFunc
76
77 FT_Glyph_TransformFunc
78 FT_Renderer_RenderFunc
79 FT_Renderer_TransformFunc
80
Werner Lemberg4db32ec2006-03-24 11:54:53 +000081 Note that this doesn't affect binary backward compatibility.
Werner Lemberg49f4d342005-06-16 19:07:08 +000082
Werner Lemberg435046b2006-01-11 10:57:42 +000083 - On MacOS, new APIs have been added as replacements for legacy
84 APIs: `FT_New_Face_From_FSRef' for `FT_New_Face_From_FSSpec',
85 and `FT_GetFile_From_Mac_ATS_Name' for
86 `FT_GetFile_From_Mac_Name'. Legacy APIs are still available, if
87 FreeType is built without disabling them.
88
Werner Lemberg4db32ec2006-03-24 11:54:53 +000089 - A new API `FT_Select_Size' has been added to select a bitmap
90 strike by its index. Code using other functions to select
91 bitmap strikes should be updated to use this function.
Wu, Chia-I (吳佳一)e33dc2e2006-01-14 05:09:30 +000092
Werner Lemberg4db32ec2006-03-24 11:54:53 +000093 - A new API `FT_Get_SubGlyph_Info' has been added to retrieve
Werner Lemberg40917862006-04-01 18:49:07 +000094 subglyph data. This can be used by rogue clients which used to
David Turnercf603712006-04-01 16:22:06 +000095 access the internal headers to get the corresponding data.
Werner Lemberg4db32ec2006-03-24 11:54:53 +000096
97 - In 2.1.10, the behaviour of `FT_Set_Pixel_Sizes' was changed for
Werner Lemberge88d24c2006-02-28 21:49:54 +000098 BDF/PCF fonts, and only for them. This causes inconsistency.
99 In this release, we undo the change. The intent of the change
Wu, Chia-I (吳佳一)e33dc2e2006-01-14 05:09:30 +0000100 in 2.1.10 is to allow size selection through real dimensions,
101 which can now be done through `FT_Request_Size'.
102
Werner Lemberge88d24c2006-02-28 21:49:54 +0000103 - Some security issues were discovered and fixed in the CFF and
104 Type 1 loader, causing crashes of FreeType by malformed font
105 files.
106
Suzuki, Toshiya (鈴木俊哉)f8d16cc2006-01-11 09:28:38 +0000107
Werner Lemberg49f4d342005-06-16 19:07:08 +0000108 III. MISCELLANEOUS
109
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000110 - The documentation for FT_LOAD_TARGET_XXX and FT_RENDER_MODE_XXX
111 values now better reflects its usage and differences: One set is
David Turnerdad2a2d2006-03-20 11:48:13 +0000112 used to specify the hinting algorithm, the other to specify the
113 pixel rendering mode.
Werner Lemberge88d24c2006-02-28 21:49:54 +0000114
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000115 - FT_New_Face() and FT_New_Face_From_FSSpec() in ftmac.c have been
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000116 changed to count supported scalable faces (sfnt, LWFN) only, and
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000117 to return the number of available faces via face->num_faces.
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000118 Unsupported bitmap faces (fbit, NFNT) are ignored.
Suzuki, Toshiya (鈴木俊哉)53be6e92005-12-23 12:22:46 +0000119
Werner Lemberg435046b2006-01-11 10:57:42 +0000120 - builds/unix/configure has been improved for MacOS X. It now
121 automatically checks available functions in Carbon library, and
122 prepare to use newest functions by default. Options to specify
123 the dependencies of each Carbon APIs (FSSpec, FSRef, old/new
124 QuickDraw, ATS) are available too. By manual disabling of all
125 QuickDraw functionality, FreeType can be built without
126 `deprecated function' warnings on MacOS 10.4.x, but
127 FT_GetFile_Mac_Name in ftmac.c then is changed to a dummy
128 function, and returns an `unimplemented' error. For details see
129 builds/mac/README.
Suzuki, Toshiya (鈴木俊哉)f8d16cc2006-01-11 09:28:38 +0000130
Werner Lemberge88d24c2006-02-28 21:49:54 +0000131 - SFNT cmap handling has been improved, mainly to run much faster
David Turnere9a47192006-02-28 09:26:58 +0000132 with CJK fonts.
Werner Lemberg7734a1f2005-10-05 15:18:29 +0000133
Werner Lembergf99d8462006-02-26 17:50:59 +0000134 - A new function `FT_Get_TrueType_Engine_Type (declared in
135 `FT_MODULE_H') is provided to determine the status of the
136 TrueType bytecode interpreter compiled into the library
137 (patented, unpatented, unimplemented).
Werner Lemberg6cdab922006-01-08 22:34:01 +0000138
Wu, Chia-I (吳佳一)ea1e8d32006-01-15 15:01:45 +0000139 - Vertical metrics of glyphs are synthesized if the font does not
140 provide such information. You can tell whether the metrics are
141 synthesized or not by checking the FT_FACE_FLAG_VERTICAL flag of
142 the face.
143
Werner Lemberg7b33dca2005-06-23 20:31:48 +0000144 - The demo programs `ftview' and `ftstring' have been rewritten
Werner Lemberg1639c792006-05-06 16:44:58 +0000145 for better readability. `ftview' has a new switch `-p' to test
146 FT_New_Memory_Face (instead of FT_New_Face).
Wu, Chia-I (吳佳一)87f9bfc2005-06-22 03:56:14 +0000147
Werner Lemberg2752bd12005-08-22 07:11:31 +0000148 - FreeType now honours bit 1 in the `head' table of TrueType fonts
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000149 (meaning `left sidebearing point at x=0'). This helps with some
150 buggy fonts.
Werner Lemberg2752bd12005-08-22 07:11:31 +0000151
Werner Lembergb3feb802005-09-23 07:40:28 +0000152 - Rudimentary support for Adobe's new `SING Glyphlet' format. See
153
154 http://www.adobe.com/products/indesign/sing_gaiji.html
155
156 for more information.
Werner Lemberg49f4d342005-06-16 19:07:08 +0000157
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000158 - The `ftdump' program from the `ft2demos' bundle now shows some
159 information about charmaps. It also supports a new switch `-v'
Werner Lembergb797fdb2005-11-30 08:48:32 +0000160 to increase verbosity.
161
Wu, Chia-I (吳佳一)f9a69132006-02-11 12:12:02 +0000162 - Better AFM support. This includes track kerning support.
163
Wu, Chia-I (吳佳一)f9a69132006-02-11 12:12:02 +0000164
Werner Lemberg49f4d342005-06-16 19:07:08 +0000165======================================================================
166
Werner Lemberg94168f02006-05-11 07:07:09 +0000167CHANGES BETWEEN 2.1.10 and 2.1.9
Werner Lembergd232f592004-08-02 05:38:33 +0000168
169 I. IMPORTANT BUG FIXES
170
171 - The size comparison for BDF and PCF files could fail sometimes.
172
173 - Some CFF files were still not loaded correctly. Patch from
174 Derek Noonburg.
175
176 - The stroker still had some serious bugs.
177
Werner Lemberg33febc02004-10-09 07:07:43 +0000178 - Boris Letocha fixed a bug in the TrueType interpreter: The
179 NPUSHW instruction wasn't skipped correctly in IF clauses. Some
180 fonts like `Helvetica 75 Bold' failed.
181
Werner Lemberg4d1550e2004-11-19 14:12:48 +0000182 - Another serious bug in handling TrueType hints caused many
183 distortions. It has been introduced in version 2.1.8, and it is
184 highly recommended to upgrade.
Werner Lembergb9ff4152004-11-19 10:35:52 +0000185
Werner Lembergc9114b92005-02-10 08:18:27 +0000186 - FreeType didn't properly parse empty Type 1 glyphs.
David Turnere6bb9532005-12-23 13:32:06 +0000187
Werner Lembergebf55852005-03-16 01:49:54 +0000188 - An unbound dynamic buffer growth was fixed in the PFR loader.
David Turnere6bb9532005-12-23 13:32:06 +0000189
Werner Lembergebf55852005-03-16 01:49:54 +0000190 - Several bugs have been fixed in the cache sub-system.
David Turner58609c42005-03-15 23:31:48 +0000191
Werner Lembergebf55852005-03-16 01:49:54 +0000192 - FreeType behaved incorrectly when resizing two distinct but very
193 close character pixel sizes through `FT_Set_Char_Size' (Savannah
194 bug #12263).
David Turnere6bb9532005-12-23 13:32:06 +0000195
Werner Lembergebf55852005-03-16 01:49:54 +0000196 - The auto-hinter didn't work properly for fonts without a Unicode
197 charmap -- it even refused to load the glyphs.
Werner Lembergc9114b92005-02-10 08:18:27 +0000198
Werner Lembergd232f592004-08-02 05:38:33 +0000199
200 II. IMPORTANT CHANGES
201
Werner Lembergebf55852005-03-16 01:49:54 +0000202 - Many fixes have been applied to drastically reduce the amount of
203 heap memory used by FreeType, especially when using
204 memory-mapped font files (which is the default on Unix systems
205 which support them).
David Turner58609c42005-03-15 23:31:48 +0000206
Werner Lemberga37745b2005-03-23 16:45:24 +0000207 - The auto-hinter has been replaced with a new module, called the
208 `auto-fitter'. It consumes less memory than its predecessor,
209 and it is prepared to support non-latin scripts better in next
210 releases.
David Turner58609c42005-03-15 23:31:48 +0000211
Werner Lembergd232f592004-08-02 05:38:33 +0000212 - George Williams contributed code to read kerning data from PFM
213 files.
214
215 - FreeType now uses the TT_NAME_ID_PREFERRED_FAMILY and
216 TT_NAME_ID_PREFERRED_SUBFAMILY strings (if available) for
217 setting family and style in SFNT fonts (patch from Kornfeld
218 Eliyahu Peter).
219
Werner Lemberg17439422004-08-11 05:25:37 +0000220 - A new API `FT_Sfnt_Table_Info' (in FT_TRUETYPE_TABLES_H) has
221 been added to retrieve name and size information of SFNT tables.
222
Werner Lembergee95b6f2004-09-10 14:39:00 +0000223 - A new API `FT_OpenType_Validate' (in FT_OPENTYPE_VALIDATE_H) has
224 been added to validate OpenType tables (BASE, GDEF, GPOS, GSUB,
225 JSTF). After validation it is no longer necessary to check
Werner Lemberg33febc02004-10-09 07:07:43 +0000226 for errors in those tables while accessing them.
Werner Lembergee95b6f2004-09-10 14:39:00 +0000227
Werner Lemberg82b71922005-06-02 07:12:05 +0000228 Note that this module might be moved to another library in the
229 future to avoid a tight dependency between FreeType and the
230 OpenType specification.
231
Werner Lembergf2438e12004-12-14 16:01:29 +0000232 - A new API in FT_BITMAP_H (`FT_Bitmap_New', `FT_Bitmap_Convert',
Werner Lembergafb2ba52005-05-25 05:51:01 +0000233 `FT_Bitmap_Copy', `FT_Bitmap_Embolden', `FT_Bitmap_Done') has
234 been added. Its use is to convert an FT_Bitmap structure in
235 1bpp, 2bpp, 4bpp, or 8bpp format into another 8bpp FT_Bitmap,
236 probably using a different pitch, and to further manipulate it.
237
238 - A new API `FT_Outline_Embolden' (in FT_OUTLINE_H) gives finer
239 control how outlines are embolded.
240
241 - `FT_GlyphSlot_Embolden' (in FT_SYNTHESIS_H) now handles bitmaps
242 also (code contributed by Chia I Wu). Note that this function
243 is still experimental and may be replaced with a better API.
Werner Lembergf2438e12004-12-14 16:01:29 +0000244
Werner Lemberga76108b2005-04-03 20:11:42 +0000245 - The method how BDF and PCF bitmap fonts are accessed has been
246 refined. Formerly, FT_Set_Pixel_Sizes and FT_Set_Char_Size
247 were synonyms in FreeType's BDF and PCF interface. This has
248 changed now. FT_Set_Pixel_Sizes should be used to select the
249 actual font dimensions (the `strike', which is the sum of the
250 `FONT_ASCENT' and `FONT_DESCENT' properties), while
251 FT_Set_Char_Size selects the `nominal' size (the `PIXELSIZE'
252 property). In both functions, the width parameter is ignored.
253
Werner Lembergebf55852005-03-16 01:49:54 +0000254
Werner Lembergf2438e12004-12-14 16:01:29 +0000255 III. MISCELLANEOUS
256
257 - The BDF driver no longer converts all returned bitmaps with a
258 depth of 2bpp or 4bpp to a depth of 8bpp. The documentation has
259 not mentioned this explicitly, but implementors might have
260 relied on this after looking into the source files.
261
Werner Lembergc9114b92005-02-10 08:18:27 +0000262 - A new option `--ftversion' has been added to freetype-config to
263 return the FreeType version.
264
Werner Lemberga37745b2005-03-23 16:45:24 +0000265 - The memory debugger has been updated to dump allocation
266 statistics on all allocation sources in the library. This is
267 useful to spot greedy allocations when loading and processing
268 fonts.
David Turner58609c42005-03-15 23:31:48 +0000269
Werner Lemberga37745b2005-03-23 16:45:24 +0000270 - We removed a huge array of constant pointers to constant strings
271 in the `psnames' module. The problem was that compilations in
272 PIC mode (i.e., when generating a Unix shared object/dll) put
273 the array into the non-shared writable section of the library
David Turner58609c42005-03-15 23:31:48 +0000274 since absolute pointers are not relocatable by nature.
David Turnere6bb9532005-12-23 13:32:06 +0000275
Werner Lemberga37745b2005-03-23 16:45:24 +0000276 This reduces the memory consumption by approximately 16KByte per
277 process linked to FreeType. We now also store the array in a
278 compressed form (as a trie) which saves about 20KByte of code as
279 well.
David Turnerdb3faff2003-09-11 19:58:19 +0000280
Werner Lemberge623bfa2005-05-19 13:51:26 +0000281 - Kirill Smelkov provided patches to make src/raster/ftraster.c
Werner Lembergf9fccbe2005-05-19 07:20:24 +0000282 compile stand-alone again.
283
Werner Lembergebf55852005-03-16 01:49:54 +0000284
285======================================================================
286
Werner Lemberg94168f02006-05-11 07:07:09 +0000287CHANGES BETWEEN 2.1.9 and 2.1.8
Werner Lemberge95365b2004-04-24 14:43:37 +0000288
289 I. IMPORTANT BUG FIXES
290
291 - The function `FT_Get_CharMap_Index' was only declared, without
292 any real code. For consistency, it has been renamed to
293 `FT_Get_Charmap_Index'. (This function is needed to implement
294 cmap caches.)
295
Werner Lemberg7d62f522004-06-04 22:30:10 +0000296 - `FT_Outline_Get_BBox' sometimes returned incorrect values for
Werner Lemberg8ef41832004-06-22 12:28:17 +0000297 conic outlines (e.g., for TrueType fonts).
Werner Lemberg7d62f522004-06-04 22:30:10 +0000298
299 - Handling of `bhed' table has been fixed.
Werner Lemberge95365b2004-04-24 14:43:37 +0000300
Werner Lemberg11785f52004-06-21 23:32:31 +0000301 - The TrueType driver with enabled byte code interpreter sometimes
302 returned artifacts due to incorrect rounding. This bug has been
303 introduced after version 2.1.4.
304
Werner Lemberg8ef41832004-06-22 12:28:17 +0000305 - The BDF driver dropped the last glyph in the font.
306
307 - The BDF driver now uses the DEFAULT_CHAR property (if available)
308 to select a glyph shape for the undefined glyph.
309
Werner Lemberg43f0e262004-07-17 16:45:21 +0000310 - The stroker failed for closed outlines and single points.
311
Werner Lemberg11785f52004-06-21 23:32:31 +0000312
Werner Lembergcdb6e702004-04-26 08:09:30 +0000313 II. IMPORTANT CHANGES
314
315 - George Williams contributed code to handle Apple's font
316 distortion technology found in GX fonts (`avar', `cvar', `fvar',
317 and `gvar' tables; the Multiple Masters API has been slightly
Werner Lemberg7d62f522004-06-04 22:30:10 +0000318 extended to cope with the new functionality).
319
Werner Lembergfefd8742004-06-12 13:21:20 +0000320 - The `FT_GlyphSlotRec' structure has been extended: The elements
Werner Lemberg7d62f522004-06-04 22:30:10 +0000321 `lsb_delta' and `rsb_delta' give the difference between hinted
322 and unhinted left and right side bearings if autohinting is
323 active. Using those values can improve the inter-letter spacing
Werner Lembergfefd8742004-06-12 13:21:20 +0000324 considerably. See the documentation of `FT_GlyphSlotRec' and
Werner Lemberg7d62f522004-06-04 22:30:10 +0000325 the `ftstring' demo program how to use it.
Werner Lembergcdb6e702004-04-26 08:09:30 +0000326
Werner Lemberg43f0e262004-07-17 16:45:21 +0000327 - Loading TrueType and Type 1 fonts has been made much faster.
328
329 - The stroker is no longer experimental (but the cache subsystem
330 still is).
331
Werner Lembergcdb6e702004-04-26 08:09:30 +0000332
Werner Lembergeab92f12004-04-29 05:59:49 +0000333 III. MISCELLANEOUS
334
335 - A new documentation file `formats.txt' describes various font
336 formats supported (and not supported) by FreeType.
337
338
Werner Lemberge95365b2004-04-24 14:43:37 +0000339======================================================================
340
Werner Lemberg94168f02006-05-11 07:07:09 +0000341CHANGES BETWEEN 2.1.8 and 2.1.7
Werner Lemberg51ecb692003-11-13 10:19:27 +0000342
343 I. IMPORTANT BUG FIXES
344
Werner Lemberg4ff243d2003-11-25 09:30:57 +0000345 - The native TrueType hinter contained some bugs which prevented
346 some fonts to be rendered correctly, most notably Legendum.otf.
347
Werner Lembergba80d612004-04-16 09:56:30 +0000348 - The PostScript hinter now produces improved results.
Werner Lemberg460355a2004-02-24 07:52:45 +0000349
Werner Lemberg4ff243d2003-11-25 09:30:57 +0000350 - The linear advance width and height values were incorrectly
351 rounded, making them virtually unusable if not loaded with
352 FT_LOAD_LINEAR_DESIGN.
353
Werner Lemberg80cfbd72003-12-26 07:26:08 +0000354 - Indexing CID-keyed CFF fonts is now working: The glyph index is
355 correctly treated as a CID, similar to FreeType's CID driver
Werner Lemberg460355a2004-02-24 07:52:45 +0000356 module. Note that CID CMap support is still missing.
Werner Lembergb36d4a52003-12-12 15:38:39 +0000357
Werner Lembergc78df1e2004-04-21 07:36:38 +0000358 - The FT_FACE_FLAGS_GLYPH_NAMES flag is now set correctly for all
359 font formats.
Werner Lemberg7f1458a2003-12-17 21:57:56 +0000360
Werner Lemberg80cfbd72003-12-26 07:26:08 +0000361 - Some subsetted Type 1 fonts weren't parsed correctly. This bug
Werner Lemberg9cef4792004-02-08 09:07:08 +0000362 has been introduced in 2.1.7. In summary, the Type 1 parser has
363 become more robust.
Werner Lemberg48b6ddb2003-12-22 23:01:20 +0000364
Werner Lembergc78df1e2004-04-21 07:36:38 +0000365 - Non-decimal numbers weren't parsed correctly in PS fonts.
366
Werner Lemberg48b6ddb2003-12-22 23:01:20 +0000367 - The WinFNT driver now correctly reports FT_ENCODING_NONE for all
Werner Lemberg80cfbd72003-12-26 07:26:08 +0000368 but one encoding. Use the new FT_WinFNT_ID_XXX values together
Werner Lemberg48b6ddb2003-12-22 23:01:20 +0000369 with FT_Get_WinFNT_Header() to get the WinFNT charset ID.
370
Werner Lemberg9914b972004-01-02 16:33:04 +0000371 - The descender metrics (face->size->metrics.descender) for WinFNT
372 bitmap fonts had the wrong sign.
373
Werner Lembergc78df1e2004-04-21 07:36:38 +0000374 - The (emulated) `seac' support for CFF fonts was broken.
Werner Lemberg5972e9a2004-02-01 00:49:56 +0000375
Werner Lembergc78df1e2004-04-21 07:36:38 +0000376 - The `flex' operator didn't work for CFF fonts.
Werner Lemberg5972e9a2004-02-01 00:49:56 +0000377
Werner Lemberg460355a2004-02-24 07:52:45 +0000378 - PS glyphs which use the `hintmask' operator haven't been
379 rendered correctly in some cases.
Werner Lemberga5724ef2004-02-21 16:47:20 +0000380
Werner Lemberge0c50442004-02-08 16:30:37 +0000381 - Metrics for BDF and PCF bitmap font formats have been fixed.
382
Werner Lembergba80d612004-04-16 09:56:30 +0000383 - Autohinting is now disabled for glyphs which are vertically
384 distorted or mirrored (using a transformation matrix). This
385 fixes a bug which produced zero-height glyphs.
386
Werner Lemberg53a1edd2004-02-08 22:45:48 +0000387 - The `freetype-config' script now handles --prefix and
388 --exec-prefix correctly; it also returns the proper --rpath (or
389 -R) value if FreeType has been built as a shared library.
390
Werner Lemberg51ecb692003-11-13 10:19:27 +0000391
392 II. IMPORTANT CHANGES
393
394 - Both PCF and BDF drivers now handle the SETWIDTH_NAME and
395 ADD_STYLE_NAME properties. Values are appended to
396 face->style_name; example: `Bold SemiCondensed'.
397
Werner Lembergdfa46192004-03-05 09:26:24 +0000398 - The PCF driver now handles bitmap fonts compressed with the LZW
399 algorithm (extension .pcf.Z, compressed with `compress').
400
Werner Lemberg7f1458a2003-12-17 21:57:56 +0000401 - A new API function `FT_Get_CMap_Language_ID' (declared in
402 `tttables.h') is available to get the language ID of a
403 TrueType/SFNT cmap.
404
Werner Lembergef512e32004-01-23 19:52:40 +0000405 - The hexadecimal format of data after the `StartData' command in
406 CID-keyed Type 1 fonts is now supported. While this can't occur
407 in file-based fonts, it can happen in document-embedded
408 resources of PostScript documents.
409
Werner Lembergdfa46192004-03-05 09:26:24 +0000410 - Embedded bitmaps in SFNT-based CFF fonts are now supported.
411
Werner Lemberg460355a2004-02-24 07:52:45 +0000412 - A simple API is now available to control FreeType's tracing
413 mechanism if compiled with FT_DEBUG_LEVEL_TRACE. See the file
414 `ftdebug.h' for more details.
415
Werner Lemberg675431b2004-02-25 21:17:49 +0000416 - YAMATO Masatake contributed improved handling of MacOS resource
417 forks on non-MacOS platforms (for example, Linux can mount MacOS
418 file systems).
419
Werner Lemberge2455ba2004-02-26 21:56:27 +0000420 - Support for MacOS has been improved; there is now a new function
421 `FT_New_Face_From_FSSpec' similar to `FT_New_Face' except that
422 it accepts an FSSpec instead of a path.
423
Werner Lemberg80cfbd72003-12-26 07:26:08 +0000424 - The cache sub-system has been rewritten.
425
426 - There is now support for deinstallation of faces.
427
428 - A new API function `FTC_Manager_RemoveFaceID' has been added
429 to delete all `idle' nodes that correspond to a given
430 FTC_FaceID. All `locked' nodes (i.e., those with a reference
431 count > 0), will be modified to prevent them from appearing in
432 further lookups (they will be cleaned normally when their
433 reference count reaches 0).
434
435 - There is now support for point scaling (i.e., providing
436 character sizes in points + dpis, instead of pixels).
437
438 - Three abstract cache classes are now available:
439
440 FTC_GCache: Used to store one glyph item per cache node,
441 with the ability to group common attributes into
442 `families'. This replaces the old
443 FTC_GlyphCache class.
444
445 FTC_ICache: Used to store one FT_Glyph per cache node. This
446 extends FTC_GCache. Family definition, family
447 comparison, and glyph loading are however left
448 to sub-classes.
449
450 FTC_SCache: Used to store up to 16 small bitmaps per cache
451 node. This extends FTC_GCache. Family
452 definition, family comparison and glyph loading
453 are however left to sub-classes.
454
455 - The file `src/cache/ftcbasic.c' implements:
456
457 FTC_ImageCache: Extends FTC_ICache; implements family
458 definitions and glyph loading similar to the
459 old API.
460
461 FTC_SBitCache: Extends FTC_SCache, implements family
462 definitions and glyph loading similar to the
463 old API
464
465 Client applications should be able to extend FTC_GCache,
466 FTC_ICache, or FTC_SCache much more easily (i.e., less code to
467 write, and less callbacks). For example, one could envision
468 caches that are capable of storing transformed (obliqued),
469 stroked, emboldened, or colored glyph images. Use
470 `ftcbasic.c' as an example.
471
472 - All public APIs are now in `include/freetype/ftcache.h', (to
473 be accessed as `FT_CACHE_H'). The contents of
474 `include/freetype/cache/' is only needed by applications that
475 wish to implement their own caches.
476
477 - There were some major performance improvements through the use
478 of various programming tricks. Cache hits are up to 70%
479 faster than in the old code.
480
481 - The FTC_CMapCache has been simplied. Charmaps can only be
482 accessed by index right now. There is also a new API named
483 `FT_Charmap_GetIndex' for this purpose.
484
485 - The demo programs have been updated to the new code. The
486 previous versions will not work with the current one.
487
Werner Lemberg2630e542004-03-20 14:26:38 +0000488 - Using an invalid face index in FT_Open_Face and friends now
489 causes an error even if the font contains a single face only.
490
Werner Lemberg51ecb692003-11-13 10:19:27 +0000491
Werner Lemberge1075142003-12-16 06:04:44 +0000492 III. MISCELLANEOUS
493
494 - Wolfgang Domröse contributed support files for building FreeType
Werner Lembergb066c152003-12-16 06:42:11 +0000495 on the Atari using the PureC compiler. Note that the Atari is a
496 16bit platform.
Werner Lemberge1075142003-12-16 06:04:44 +0000497
Werner Lemberg9cef4792004-02-08 09:07:08 +0000498 - Vitaliy Pasternak contributed project files for VS.NET 2003.
499
Werner Lemberge1075142003-12-16 06:04:44 +0000500
Werner Lemberg51ecb692003-11-13 10:19:27 +0000501======================================================================
502
Werner Lemberg94168f02006-05-11 07:07:09 +0000503CHANGES BETWEEN 2.1.7 and 2.1.6
Werner Lemberge42dbce2003-11-09 08:37:14 +0000504
505 I. IMPORTANT BUG FIXES
506
507 - Updated to newest libtool version, fixing build problems on
508 various platforms.
509
510 - On Unix platforms, `make install' didn't copy the correct
511 `ftconfig.h' file.
512
513 Note that version 2.1.7 contains the same library C source code as
514 version 2.1.6.
515
516
517======================================================================
518
Werner Lemberg94168f02006-05-11 07:07:09 +0000519CHANGES BETWEEN 2.1.6 and 2.1.5
David Turnerdb3faff2003-09-11 19:58:19 +0000520
521 I. IMPORTANT BUG FIXES
522
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000523 - The PFR font driver didn't load kerning tables correctly, and
524 the functions in FT_PFR_H didn't work at all.
David Turnerdb3faff2003-09-11 19:58:19 +0000525
Werner Lemberg99ee4992003-09-20 17:23:36 +0000526 - Type 1 font files in binary format (PFB) with an end-of-file
527 indicator weren't accepted by the FreeType engine.
528
Werner Lemberg4795b362003-10-23 16:24:10 +0000529 - Fonts which contain /PaintType and /StrokeWidth no longer cause
530 a segfault. This bug has been introduced in version 2.1.5.
531
532 - Fonts loaded with FT_LOAD_RENDER no longer cause strange
533 results. This bug has been introduced in version 2.1.5.
534
535 - Some Windows (bitmap) FNT/FON files couldn't be handled
536 correctly.
537
Werner Lemberge42dbce2003-11-09 08:37:14 +0000538
David Turnerdb3faff2003-09-11 19:58:19 +0000539 II. IMPORTANT CHANGES
540
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000541 - The internal module API has been heavily changed in favor of
542 massive simplifications within the font engine. This also means
543 that authors of third-party modules must adapt their code to the
Werner Lemberge42dbce2003-11-09 08:37:14 +0000544 new scheme.
545
546 NOTE: THE NEW SCHEME IS NOT COMPLETED YET. PLEASE WAIT UNTIL A
547 FINAL ANNOUNCEMENT!
David Turnerdb3faff2003-09-11 19:58:19 +0000548
Werner Lemberg4795b362003-10-23 16:24:10 +0000549 - The PostScript parser has been enhanced to handle comments and
550 strings correctly. Additionally, more syntax forms are
551 recognized.
552
Werner Lemberge42dbce2003-11-09 08:37:14 +0000553 - Added the optional unpatented hinting system for TrueType. It
554 allows typefaces which need hinting to produce correct glyph
555 forms (e.g., Chinese typefaces from Dynalab) to work acceptably
556 without infringing Apple patents. This system is compiled only
557 if TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING is defined in
558 ftoption.h (activated by default).
David Turnerdb3faff2003-09-11 19:58:19 +0000559
Werner Lemberge42dbce2003-11-09 08:37:14 +0000560
561 III. MISCELLANEOUS
562
563 - There is now a guard in the public header files to protect
564 against inclusion of freetype.h from FreeType 1.
565
566 - Direct inclusion of freetype.h and other public header files no
567 longer works. You have to use the documented scheme
568
569 #include <ft2build.h>
570 #include FT_FREETYPE_H
571
572 to load freetype.h with a symbolic name. This protects against
573 renaming of public header files (which shouldn't happen but
574 actually has, avoiding two public header files with the same
575 name).
576
577
578======================================================================
David Turner7543f392003-09-01 21:18:03 +0000579
Werner Lemberg94168f02006-05-11 07:07:09 +0000580CHANGES BETWEEN 2.1.5 and 2.1.4
Werner Lembergf9d864a2003-07-25 05:57:21 +0000581
Werner Lembergf9d864a2003-07-25 05:57:21 +0000582 I. IMPORTANT BUG FIXES
583
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000584 - Parsing the /CIDFontName field now removes the leading slash to
Werner Lembergf9d864a2003-07-25 05:57:21 +0000585 be in sync with other font drivers.
586
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000587 - gzip support was buggy. Some fonts could not be read.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000588
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000589 - Fonts which have nested subglyphs more than one level deep no
Werner Lembergf9d864a2003-07-25 05:57:21 +0000590 longer cause a segfault.
591
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000592 - Creation of synthetic cmaps for fonts in CFF format was broken
Werner Lembergf9d864a2003-07-25 05:57:21 +0000593 partially.
594
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000595 - Numeric font dictionary entries for synthetic fonts are no
596 longer overwritten.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000597
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000598 - The font matrix wasn't applied to the advance width for Type1,
Werner Lemberg4795b362003-10-23 16:24:10 +0000599 CID, and CFF fonts. This caused problems when loading certain
600 synthetic Type 1 fonts like `Helvetica Narrow'.
Werner Lemberge8ff7692003-08-06 04:40:48 +0000601
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000602 - The test for the charset registry in BDF and PCF fonts is now
Werner Lembergf9d864a2003-07-25 05:57:21 +0000603 case-insensitive.
604
Werner Lemberg4795b362003-10-23 16:24:10 +0000605 - FT_Vector_Rotate sometimes returned strange values due to
606 rounding errors.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000607
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000608 - The PCF driver now returns the correct number of glyphs
609 (including an artificial `notdef' glyph at index 0).
Werner Lembergf9d864a2003-07-25 05:57:21 +0000610
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000611 - FreeType now supports buggy CMaps which are contained in many
612 CJK fonts from Dynalab.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000613
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000614 - Opening an invalid font on a Mac caused a segfault due to
Werner Lembergf9d864a2003-07-25 05:57:21 +0000615 double-freeing memory.
616
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000617 - BDF fonts with more than 32768 glyphs weren't supported
618 properly.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000619
620
621 II. IMPORTANT CHANGES
622
Werner Lembergf9d864a2003-07-25 05:57:21 +0000623 - Accessing bitmap font formats has been synchronized. To do that
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000624 the FT_Bitmap_Size structure has been extended to contain new
Werner Lembergf9d864a2003-07-25 05:57:21 +0000625 fields `size', `x_ppem', and `y_ppem'.
626
627 - The FNT driver now returns multiple faces, not multiple strikes.
628
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000629 - The `psnames' module has been updated to the Adobe Glyph List
Werner Lembergf9d864a2003-07-25 05:57:21 +0000630 version 2.0.
631
632 - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
633
634 - The algorithm for guessing the font style has been improved.
635
Werner Lemberg7f1458a2003-12-17 21:57:56 +0000636 - For fonts in SFNT format, root->height is no longer increased if
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000637 the line gap is zero. There exist fonts (containing e.g. form
638 drawing characters) which intentionally have a zero line gap
639 value.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000640
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000641 - ft_glyph_bbox_xxx flags are now deprecated in favour of
Werner Lembergf9d864a2003-07-25 05:57:21 +0000642 FT_GLYPH_BBOX_XXX.
643
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000644 - ft_module_xxx flags are now deprecated in favour of
645 FT_MODULE_XXX.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000646
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000647 - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now
648 deprecated in favour of
649 FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB} -- those encodings
650 are not specific to Microsoft.
Werner Lemberged2a8df2003-09-01 07:06:06 +0000651
Werner Lembergf9d864a2003-07-25 05:57:21 +0000652
653 III. MISCELLANEOUS
654
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000655 - The autohinter has been further improved; for example, `m'
656 glyphs now retain its vertical symmetry.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000657
Werner Lembergf9d864a2003-07-25 05:57:21 +0000658 - Partial support of Mac fonts on non-Mac platforms.
659
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000660 - `make refdoc' (after first `make') builds the HTML
661 documentation. You need Python for this.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000662
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000663 - The make build system should now work more reliably on DOS-like
Werner Lembergf9d864a2003-07-25 05:57:21 +0000664 platforms.
665
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000666 - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has
667 been added.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000668
669 - Better VMS build support.
670
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000671 - Support for the pkg-config package by providing a `freetype.pc'
Werner Lembergf9d864a2003-07-25 05:57:21 +0000672 file.
673
674 - New configure option --with-old-mac-fonts for Darwin.
675
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000676 - Some source files have been renamed (mainly to fit into the 8.3
Werner Lembergf9d864a2003-07-25 05:57:21 +0000677 naming scheme).
678
679
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000680======================================================================
Werner Lembergf9d864a2003-07-25 05:57:21 +0000681
Werner Lemberg94168f02006-05-11 07:07:09 +0000682CHANGES BETWEEN 2.1.4 and 2.1.3
David Turner9acb09e2003-01-24 08:30:36 +0000683
684 I. IMPORTANT BUG FIXES
685
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000686 - Updated to newest libtool version, fixing build problems on
687 various platforms.
David Turner9acb09e2003-01-24 08:30:36 +0000688
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000689 - A fix in the Gzip stream reader: It couldn't read certain .gz
690 files properly due to a small typo. In certain cases, FreeType
691 could also loop endlessly when trying to load tiny gzipped
692 files.
David Turner9acb09e2003-01-24 08:30:36 +0000693
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000694 - The configure script now tries to use the system-wide zlib when
695 it finds one (instead of the copy found in src/gzip). And
696 "freetype-config" has been updated to return relevant flags in
697 this case when invoked with "--libs" (e.g. "-lzlib").
David Turner9acb09e2003-01-24 08:30:36 +0000698
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000699 - Certain fonts couldn't be loaded by 2.1.3 because they lacked a
700 Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously
701 rejected them.
David Turner9acb09e2003-01-24 08:30:36 +0000702
Werner Lemberga16c4a72003-04-21 13:30:27 +0000703 - The CFF loader was modified to accept fonts which only contain a
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000704 subset of their reference charset. This prevented the correct
705 use of PDF-embedded fonts.
David Turner9acb09e2003-01-24 08:30:36 +0000706
Werner Lemberga16c4a72003-04-21 13:30:27 +0000707 - The logic to detect Unicode charmaps has been modified. This is
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000708 required to support fonts which include both 16-bit and 32-bit
709 charmaps (like very recent asian ones) using the new 10 and 12
710 SFNT formats.
David Turner9acb09e2003-01-24 08:30:36 +0000711
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000712 - The TrueType loader now limits the depth of composite glyphs.
713 This is necessary to prevent broken fonts to break the engine by
714 blowing the stack with recursive glyph definitions.
David Turner9acb09e2003-01-24 08:30:36 +0000715
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000716 - The CMap cache is now capable of managing UCS-4 character codes
717 that are mapped through extended charmaps in recent
718 TrueType/OpenType fonts.
David Turnerb848b682003-02-25 21:44:11 +0000719
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000720 - The cache sub-system now properly manages out-of-memory
721 conditions instead of blindly reporting them to the caller.
722 This means that it will try to empty the cache before restarting
723 its allocations to see if that can help.
David Turner66cbc202003-03-20 07:04:40 +0000724
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000725 - The PFR driver didn't return the list of available embedded
726 bitmaps properly.
David Turnerb848b682003-02-25 21:44:11 +0000727
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000728 - There was a nasty memory leak when using embedded bitmaps in
729 certain font formats.
David Turnerb6b63372003-04-09 06:55:57 +0000730
Werner Lemberga16c4a72003-04-21 13:30:27 +0000731
David Turner9acb09e2003-01-24 08:30:36 +0000732 II. IMPORTANT CHANGES
733
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000734 - David Chester contributed some enhancements to the auto-hinter
735 that significantly increase the quality of its output. The
736 Postscript hinter was also improved in several ways.
David Turner9acb09e2003-01-24 08:30:36 +0000737
Werner Lemberga16c4a72003-04-21 13:30:27 +0000738 - The FT_RENDER_MODE_LIGHT render mode was implemented.
David Turner9acb09e2003-01-24 08:30:36 +0000739
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000740 - A new API function called `FT_Get_BDF_Property' has been added
741 to FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font
742 files. THIS IS STILL EXPERIMENTAL, since it hasn't been
743 properly tested yet.
David Turner9acb09e2003-01-24 08:30:36 +0000744
Werner Lemberga16c4a72003-04-21 13:30:27 +0000745 - A Windows FNT specific API has been added, mostly to access font
746 headers. This is used by Wine.
David Turner9acb09e2003-01-24 08:30:36 +0000747
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000748 - TrueType tables without an "hmtx" table are now tolerated when
749 an incremental interface is used. This happens for certain
750 Type42 fonts passed from Ghostscript to FreeType.
David Turner9acb09e2003-01-24 08:30:36 +0000751
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000752 - The PFR font driver is now capable of returning the font family
753 and style names when they are available (instead of the sole
754 "FontID"). This is performed by parsing an *undocumented*
755 portion of the font file!
Werner Lemberga16c4a72003-04-21 13:30:27 +0000756
David Turnerb848b682003-02-25 21:44:11 +0000757
David Turner9acb09e2003-01-24 08:30:36 +0000758 III. MISCELLANEOUS
759
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000760 - The path stroker in FT_STROKER_H has entered beta stage. It now
761 works very well, but its interface might change a bit in the
762 future. More on this in later releases.
David Turner9acb09e2003-01-24 08:30:36 +0000763
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000764 - The documentation for FT_Size_Metrics didn't appear properly in
765 the API reference.
David Turner9acb09e2003-01-24 08:30:36 +0000766
Werner Lemberga16c4a72003-04-21 13:30:27 +0000767 - The file docs/VERSION.DLL has been updated to explain versioning
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000768 with FreeType (i.e., comparing release/libtool/so numbers, and
769 how to use them in autoconf scripts).
David Turner9acb09e2003-01-24 08:30:36 +0000770
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000771 - The installation documentation has been seriously revamped.
Werner Lemberga16c4a72003-04-21 13:30:27 +0000772 Everything is now in the "docs" directory.
773
David Turner66cbc202003-03-20 07:04:40 +0000774
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000775======================================================================
Werner Lemberga16c4a72003-04-21 13:30:27 +0000776
Werner Lemberg94168f02006-05-11 07:07:09 +0000777CHANGES BETWEEN 2.1.3 and 2.1.2
David Turner86e6a712002-08-29 23:18:56 +0000778
779 I. IMPORTANT BUG FIXES
780
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000781 - FT_Vector_Transform had been incorrectly modified in 2.1.2,
782 resulting in incorrect transformations being applied (for
783 example, rotations were processed in opposite angles).
David Turner86e6a712002-08-29 23:18:56 +0000784
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000785 - The format 8 and 12 TrueType charmap enumeration routines have
786 been fixed (FT_Get_Next_Char returned invalid values).
David Turner86e6a712002-08-29 23:18:56 +0000787
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000788 - The PFR font driver returned incorrect advance widths if the
789 outline and metrics resolution defined in the font file were
790 different.
David Turner86e6a712002-08-29 23:18:56 +0000791
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000792 - FT_Glyph_To_Bitmap now returns successfully when called with an
Werner Lemberg6b5c6692002-09-05 15:10:54 +0000793 FT_BitmapGlyph argument (it previously returned an error).
David Turner86e6a712002-08-29 23:18:56 +0000794
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000795 - A bug in the Type 1 loader that prevented valid font bounding
796 boxes to be loaded from multiple master fonts.
David Turner86e6a712002-08-29 23:18:56 +0000797
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000798 - The SFNT validation code has been rewritten. FreeType can now
799 load "broken" fonts that were usable on Windows, but not with
800 previous versions of the library.
David Turner86e6a712002-08-29 23:18:56 +0000801
Werner Lemberg6b5c6692002-09-05 15:10:54 +0000802 - The computation of bearings in the BDF driver has been fixed.
David Turner86e6a712002-08-29 23:18:56 +0000803
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000804 - The Postscript hinter crashed when trying to hint certain glyphs
805 (more precisely, when trying to apply hints to an empty glyph
806 outline).
David Turnerdb3d5c12002-09-18 07:53:22 +0000807
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000808 - The TrueType glyph loader now supports composites in "Apple
809 format" (they differ slightly from Microsoft/OpenType ones in
810 the way transformation offsets are computed).
Werner Lemberg98add9e2002-09-18 11:32:12 +0000811
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000812 - FreeType was very slow at opening certain asian CID/CFF fonts,
813 due to fixed increment in dynamic array re-allocations. This
814 has been changed to exponential behaviour to get acceptable
815 performance.
Werner Lemberga16c4a72003-04-21 13:30:27 +0000816
817
David Turner86e6a712002-08-29 23:18:56 +0000818
David Turnerb0b8df62002-09-25 00:10:27 +0000819 II. IMPORTANT CHANGES
David Turner86e6a712002-08-29 23:18:56 +0000820
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000821 - The PCF driver now supports gzip-compressed font files natively.
822 This means that you will be able to use all these bitmap fonts
823 that come with XFree86 with FreeType (and libXft/libXft2, by
824 extension).
David Turner6048e3d2002-11-13 23:28:08 +0000825
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000826 - The automatic and postscript hinters have both been updated.
827 This results in a relatively important increase of rendering
828 quality since many nasty defaults have been supressed. Please
829 visit the web page:
David Turnerdb3d5c12002-09-18 07:53:22 +0000830
David Turner6048e3d2002-11-13 23:28:08 +0000831 http://www.freetype.org/hinting/smooth-hinting.html
David Turnerdb3d5c12002-09-18 07:53:22 +0000832
Werner Lemberg98add9e2002-09-18 11:32:12 +0000833 for additional details on this topic.
David Turnerdb3d5c12002-09-18 07:53:22 +0000834
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000835 - The "load_flags" parameter of FT_Load_Glyph is now an FT_Int32
836 (instead of just being an FT_Int). This breaks source and
837 binary compatibility for 16bit systems only, while retaining
838 both of them for 32 and 64 bit ones.
David Turner86e6a712002-08-29 23:18:56 +0000839
Werner Lemberg6b5c6692002-09-05 15:10:54 +0000840 Some new flags have been added consequently:
David Turner86e6a712002-08-29 23:18:56 +0000841
Werner Lemberg6b5c6692002-09-05 15:10:54 +0000842 FT_LOAD_NO_AUTOHINT :: Disable the use of the auto-hinter
843 (but not native format hinters).
David Turner86e6a712002-08-29 23:18:56 +0000844
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000845 FT_LOAD_TARGET_NORMAL :: Hint and render for normal
846 anti-aliased displays.
David Turner86e6a712002-08-29 23:18:56 +0000847
Werner Lemberg6b5c6692002-09-05 15:10:54 +0000848 FT_LOAD_TARGET_MONO :: Hint and render for 1-bit displays.
David Turner86e6a712002-08-29 23:18:56 +0000849
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000850 FT_LOAD_TARGET_LCD :: Hint and render for horizontal RGB or
851 BGR sub-pixel displays (like LCD
852 screens). THIS IS STILL
853 EXPERIMENTAL!
David Turner86e6a712002-08-29 23:18:56 +0000854
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000855 FT_LOAD_TARGET_LCD_V :: Same as FT_LOAD_TARGET_LCD, for
856 vertical sub-pixel displays (like
857 rotated LCD screens). THIS IS STILL
858 EXPERIMENTAL!
David Turner86e6a712002-08-29 23:18:56 +0000859
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000860 FT_LOAD_MONOCHROME is still supported, but only affects
861 rendering, not the hinting.
David Turner86e6a712002-08-29 23:18:56 +0000862
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000863 Note that the `ftview' demo program available in the `ft2demos'
864 package has been updated to support LCD-optimized display on
865 non-paletted displays (under Win32 and X11).
David Turnerb0b8df62002-09-25 00:10:27 +0000866
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000867 - The PFR driver now supports embedded bitmaps (all formats
868 supported), and returns correct kerning metrics for all glyphs.
David Turner072f7f82002-10-05 15:00:36 +0000869
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000870 - The TrueType charmap loader now supports certain `broken' fonts
871 that load under Windows without problems.
David Turnerb0b8df62002-09-25 00:10:27 +0000872
Werner Lembergcfd5dec2002-09-27 18:17:17 +0000873 - The cache API has been slightly modified (it's still a beta!):
David Turnerb0b8df62002-09-25 00:10:27 +0000874
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000875 - The type FTC_ImageDesc has been removed; it is now replaced
876 by FTC_ImageTypeRec. Note that one of its fields is a
877 `load_flag' parameter for FT_Load_Glyph.
David Turnerb0b8df62002-09-25 00:10:27 +0000878
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000879 - The field "num_grays" of FT_SBitRec has been changed to
880 "max_grays" in order to fit within a single byte. Its
881 maximum value is thus 255 (instead of 256 as previously).
David Turnerb0b8df62002-09-25 00:10:27 +0000882
883
884 III. MISCELLANEOUS
885
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000886 - Added support for the DESTDIR variable during "make install".
887 This simplifies packaging of FreeType.
David Turnerb0b8df62002-09-25 00:10:27 +0000888
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000889 - Included modified copies of the ZLib sources in `src/gzip' in
890 order to support gzip-compressed PCF fonts. We do not use the
891 system-provided zlib for now, though this is a probable
892 enhancement for future releases.
David Turner6048e3d2002-11-13 23:28:08 +0000893
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000894 - The DocMaker tool used to generate the on-line API reference has
895 been completely rewritten. It is now located in
David Turnerb0b8df62002-09-25 00:10:27 +0000896 "src/tools/docmaker/docmaker.py". Features:
897
898 - better cross-referenced output
899 - more polished output
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000900 - uses Python regular expressions (though it didn't speed the
David Turnerb0b8df62002-09-25 00:10:27 +0000901 program)
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000902 - much more modular structure, which allows for different
903 "backends" in order to generate HTML, XML, or whatever
904 format.
David Turnerb0b8df62002-09-25 00:10:27 +0000905
906 One can regenerate the API reference by calling:
907
908 python src/tools/docmaker/docmaker.py \
909 --prefix=ft2 \
910 --title=FreeType-2.1.3 \
911 --output=<outputdirectory>
912 include/freetype/*.h \
913 include/freetype/config/*.h \
914 include/freetype/cache/*.h
915
916 - A new, experimental, support for incremental font loading (i.e.,
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000917 loading of fonts where the glyphs are not in the font file
918 itself, but provided by an external component, like a Postscript
919 interpreter) has been added by Graham Asher. This is still work
920 in progress, however.
David Turnerb0b8df62002-09-25 00:10:27 +0000921
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000922 - A new, EXPERIMENTAL, path stroker has been added. It doesn't
923 suffer from severe rounding errors and treat bezier arcs
924 directly. Still work in progress (i.e. not part of the official
925 API). See the file <freetype/ftstroker.h> for some of the
926 details.
David Turnerb0b8df62002-09-25 00:10:27 +0000927
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000928 - The massive re-formatting of sources and internal re-design is
929 still under-way. Many internal functions, constants, and types
930 have been renamed.
David Turnerb0b8df62002-09-25 00:10:27 +0000931
David Turner86e6a712002-08-29 23:18:56 +0000932
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000933======================================================================
David Turner86e6a712002-08-29 23:18:56 +0000934
Werner Lemberg94168f02006-05-11 07:07:09 +0000935CHANGES BETWEEN 2.1.2 and 2.1.1
David Turnerd490e372002-05-28 23:40:37 +0000936
937 I. IMPORTANT BUG FIXES
938
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000939 - Many font drivers didn't select a Unicode charmap by default
940 when a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS
941 options enabled), causing many applications to not be able to
942 display text correctly with the 2.1.x releases.
David Turner86e6a712002-08-29 23:18:56 +0000943
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000944 - The PFR driver had a bug in its composite loading code that
945 produces incorrectly placed accents with many fonts.
David Turner86e6a712002-08-29 23:18:56 +0000946
Werner Lemberg9cbb1662002-06-22 13:35:41 +0000947 - The Type42 driver crashed sometimes due to a nasty bug.
David Turner86e6a712002-08-29 23:18:56 +0000948
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000949 - The Type 1 custom encoding charmap didn't handle the case where
950 the first glyph index wasn't 0.
David Turner38f8e892002-06-21 07:33:23 +0000951
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000952 - A serious typo in the TrueType composite loader produced
953 incorrectly placed glyphs in fonts like "Wingdings" and a few
954 others.
David Turner38f8e892002-06-21 07:33:23 +0000955
956
957 II. MISCELLANEOUS
958
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000959 - The Win32 Visual C++ project file has been updated to include
960 the PFR driver as well.
David Turner38f8e892002-06-21 07:33:23 +0000961
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000962 - "freetype.m4" is now installed by default by "make install" on
963 Unix systems.
David Turner38f8e892002-06-21 07:33:23 +0000964
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000965 - The function FT_Get_PS_Font_Info now works with CID and Type42
966 fonts as well.
Werner Lemberg9cbb1662002-06-22 13:35:41 +0000967
David Turnera0d8abf2002-06-21 07:42:50 +0000968
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000969======================================================================
Werner Lemberg9cbb1662002-06-22 13:35:41 +0000970
Werner Lemberg94168f02006-05-11 07:07:09 +0000971CHANGES BETWEEN 2.1.1 and 2.1.0
David Turner38f8e892002-06-21 07:33:23 +0000972
973 I. IMPORTANT BUG FIXES
974
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000975 - The `version_info' returned by `freetype-config' in 2.1.0
976 returned an invalid value. It now returns 9:1:3 (2.0.9 returned
977 9:0:3).
David Turnerd490e372002-05-28 23:40:37 +0000978
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000979 - Version 2.1.0 couldn't be linked against applications on Win32
980 and Amiga systems due to a new debug function that wasn't
981 properly propagated to the system-specific directory in
982 `builds'.
David Turnerd490e372002-05-28 23:40:37 +0000983
Werner Lemberg5bbb4942002-05-30 19:22:14 +0000984 - Various MacOS and Mac OS X specific fixes.
David Turnerd490e372002-05-28 23:40:37 +0000985
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000986 - Fixed a bug in the TrueType charmap validation routines that
987 made version 2.1.0 too restrictive -- many popular fonts have
988 been rejected.
David Turnerd490e372002-05-28 23:40:37 +0000989
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000990 - There was still a very small difference between the monochrome
991 glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the
992 bytecode interpreter enabled. This was caused by an invalid
993 flag setting in the TrueType glyph loader, making the rasterizer
994 change its drop-out control mode. Now theresults should
995 _really_ be completely identical.
David Turnerd490e372002-05-28 23:40:37 +0000996
Werner Lemberg5bbb4942002-05-30 19:22:14 +0000997 - The TrueType name table loader has been improved to support many
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000998 popular though buggy Asian fonts. It now ignores empty name
999 entries, invalid pointer offsets and a few other incorrect
1000 subtleties. Moreover, name strings are now loaded on demand,
1001 which reduces the memory load of many faces (e.g. the ARIAL.TTF
1002 font file contains a 10kByte name table with 70 names).
David Turnerd490e372002-05-28 23:40:37 +00001003
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001004 - Fixed a bug in the Postscript hinter that prevented family blues
David Turnerd490e372002-05-28 23:40:37 +00001005 substitution to happen correctly.
1006
1007
1008 II. NEW FEATURES
1009
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001010 - Three new font drivers in this release:
David Turnerd490e372002-05-28 23:40:37 +00001011
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001012 * A BDF font driver, contributed by Franco Zappa Nardelli,
1013 heavily modified by Werner Lemberg. It also supports
1014 anti-aliased bitmaps (using a slightly extended BDF format).
David Turnerd490e372002-05-28 23:40:37 +00001015
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001016 * A Type42 font driver, contributed by Roberto Alameda. It is
David Turnerb1d8f732002-06-10 22:41:57 +00001017 still experimental but seems to work relatively well.
David Turnerd490e372002-05-28 23:40:37 +00001018
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001019 * A PFR font driver, contributed by David Turner himself. It
1020 doesn't support PFR hinting -- note that BitStream has at
1021 least two patents on this format!
David Turnerd490e372002-05-28 23:40:37 +00001022
1023
David Turnerb1d8f732002-06-10 22:41:57 +00001024 III. MISCELLANEOUS
1025
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001026 - The cache sub-system has been optimized in important ways.
1027 Cache hits are now significantly faster. For example, using the
1028 CMap cache is about twice faster than calling FT_Get_Char_Index
1029 on most platforms. Similarly, using an SBit cache is about five
1030 times faster than loading the bitmaps from a bitmap file, and
1031 300 to 500 times faster than generating them from a scalable
1032 format.
David Turnerb1d8f732002-06-10 22:41:57 +00001033
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001034 Note that you should recompile your sources if you designed a
1035 custom cache class for the FT2 Cache subsystem, since the
1036 changes performed are source, but not binary, compatible.
David Turnerb1d8f732002-06-10 22:41:57 +00001037
1038
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001039======================================================================
David Turnerd490e372002-05-28 23:40:37 +00001040
Werner Lemberg94168f02006-05-11 07:07:09 +00001041CHANGES BETWEEN 2.1.0 and 2.0.9
David Turner498eed22002-04-15 12:01:10 +00001042
1043 I. IMPORTANT BUG FIXES
1044
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001045 - The TrueType bytecode interpreter has been fixed to produce
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001046 _exactly_ the same output as FreeType 1.x. Previous differences
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001047 were due to slightly distinct fixed-point computation routines
David Turner498eed22002-04-15 12:01:10 +00001048 used to perform dot products and vector length measurements.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001049
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001050 It seems that native TrueType hinting is _extremely_ sensitive
1051 to rounding errors. The required vector computation routines
1052 have been optimized and placed within the "ttinterp.c" file.
David Turner498eed22002-04-15 12:01:10 +00001053
Werner Lemberg6e188b42002-04-17 22:42:13 +00001054 - Fixed the parsing of accelerator tables in the PCF font driver.
David Turnerd490e372002-05-28 23:40:37 +00001055
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001056 - Fixed the Type1 glyph loader routine used to compute the font's
David Turner11cfdd02002-04-17 09:37:59 +00001057 maximum advance width.
David Turner498eed22002-04-15 12:01:10 +00001058
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001059
David Turner498eed22002-04-15 12:01:10 +00001060 II. NEW FEATURES
1061
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001062 - The `configure' script used on Unix systems has been modified to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001063 check that GNU Make is being used to build the library.
1064 Otherwise, it will display a message proposing to use the
1065 GNUMAKE environment variable to name it.
David Turner498eed22002-04-15 12:01:10 +00001066
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001067 The Unix-specific file README.UNX has been modified accordingly.
1068
1069
David Turner498eed22002-04-15 12:01:10 +00001070 III. MISCELLANEOUS
1071
Werner Lemberg56c368c2005-06-04 23:00:25 +00001072 - The FreeType License in `docs/FTL.TXT' has been updated to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001073 include a proposed preferred disclaimer. If you are using
1074 FreeType in your products, you are encouraged (but not mandated)
1075 to use the following text in your documentation:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001076
1077 """
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001078 Portions of this software are copyright © 1996-2002 The
1079 FreeType Project (www.freetype.org). All rights reserved.
David Turner498eed22002-04-15 12:01:10 +00001080 """
1081
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001082 - The default size of the render pool has been reduced to 16kByte.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001083 This shouldn't result in any noticeable performance penalty,
1084 unless you are using the engine as-is to render very large and
1085 complex glyphs.
David Turner498eed22002-04-15 12:01:10 +00001086
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001087 - The FreeType 2 redesign has begun. More information can be
1088 found at this URL:
David Turner498eed22002-04-15 12:01:10 +00001089
David Turner498eed22002-04-15 12:01:10 +00001090 http://www.freetype.org/freetype2/redesign.html
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001091
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001092 The following internal changes have been performed within the
1093 sources of this release:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001094
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001095 - Many internal types have been renamed to increase
1096 consistency. The following should be true, except for
1097 public types:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001098
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001099 * All structure types have a name ending in "Rec" (short
1100 for `record').
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001101
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001102 * A pointer-to-structure type has the same name as the
David Turner498eed22002-04-15 12:01:10 +00001103 structure, _without_ the "Rec" suffix.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001104
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001105 Example:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001106
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001107 typedef struct FooRec_
1108 {
1109 ...
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001110
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001111 } FooRec, *Foo;
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001112
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001113 - Many internal macros have been renamed to increase
1114 consistency. The following should be true:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001115
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001116 * All macros have a name beginning with "FT_". This
1117 required a few changes like
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001118
1119 ALLOC => FT_ALLOC
1120 FREE => FT_FREE
1121 REALLOC => FT_REALLOC
1122
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001123 * All macros are completely UPPERCASE. This required a
1124 few changes like:
David Turner498eed22002-04-15 12:01:10 +00001125
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001126 READ_Short => FT_READ_SHORT
1127 NEXT_Short => FT_NEXT_SHORT
1128 GET_ULongLE => FT_GET_ULONG_LE
1129 MEM_Set => FT_MEM_SET
1130 MEM_Copy => FT_MEM_COPY
1131 etc.
David Turner498eed22002-04-15 12:01:10 +00001132
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001133 * Whenever possible, all macro names follow the
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001134 FT_<OBJECT>_<METHOD> pattern. For example
David Turner498eed22002-04-15 12:01:10 +00001135
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001136 ACCESS_Frame => FT_FRAME_ENTER
1137 FORGET_Frame => FT_FRAME_EXIT
1138 EXTRACT_Frame => FT_FRAME_EXTRACT
1139 RELEASE_Frame => FT_FRAME_RELEASE
David Turner498eed22002-04-15 12:01:10 +00001140
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001141 FILE_Pos => FT_STREAM_POS
1142 FILE_Seek => FT_STREAM_SEEK
1143 FILE_Read => FT_STREAM_READ
1144 FILE_ReadAt => FT_STREAM_READ_AT
1145 READ_Fields => FT_STREAM_READ_FIELDS
David Turner498eed22002-04-15 12:01:10 +00001146
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001147 - Many internal functions have been renamed to follow the
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001148 FT_<Object>_<Method> pattern. For example:
David Turner498eed22002-04-15 12:01:10 +00001149
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001150 FT_Seek_Stream => FT_Stream_Seek
1151 FT_Read_Stream_At => FT_Stream_ReadAt
1152 FT_Done_Stream => FT_Stream_Close
1153 FT_New_Stream => FT_Stream_Open
1154 FT_New_Memory_Stream => FT_Stream_OpenMemory
1155 FT_Extract_Frame => FT_Stream_ExtractFrame
David Turner498eed22002-04-15 12:01:10 +00001156
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001157 Note that method names do not contain "_".
1158
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001159 - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced
1160 with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a
1161 type as the fourth argument. Instead, the array element
1162 type size is computed automatically from the type of the
1163 target pointer used.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001164
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001165 - A new object class, FT_CMap, has been introduced. These
1166 internal objects are used to model character maps. This
1167 eases the support of additional charmap types within the
1168 engine.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001169
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001170 - A new configuration file named "ftstdlib.h" has been added
1171 to `include/freetype/config'. It is used to define aliases
1172 for _every_ routine of the ISO C library that the font
1173 engine uses. Each aliases has a "ft_" prefix
1174 (e.g. "ft_strlen" is an alias for "strlen").
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001175
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001176 This is used to ease the porting of FreeType 2 to exotic
1177 runtime environments where the ISO C Library isn't available
1178 (e.g. XFree86 extension modules).
David Turner498eed22002-04-15 12:01:10 +00001179
David Turner498eed22002-04-15 12:01:10 +00001180 More details are available in the "ChangeLog" file.
1181
1182
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001183======================================================================
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001184
Werner Lemberg94168f02006-05-11 07:07:09 +00001185CHANGES BETWEEN 2.0.9 and 2.0.8
David Turner2c7558c2002-04-11 14:21:16 +00001186
1187 I. IMPORTANT BUG FIXES
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001188
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001189 - Certain fonts like "foxjump.ttf" contain broken name tables with
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001190 invalid entries and wild offsets. This caused FreeType to crash
1191 when trying to load them.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001192
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001193 The SFNT `name' table loader has been fixed to be able to
1194 support these strange fonts.
David Turner2c7558c2002-04-11 14:21:16 +00001195
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001196 Moreover, the code in charge of processing this table has been
1197 changed to always favour Windows-formatted entries over other
1198 ones. Hence, a font that works on Windows but not on the Mac
1199 will load cleanly in FreeType and report accurate values for
1200 Family & PostScript names.
David Turner2c7558c2002-04-11 14:21:16 +00001201
1202 - The CID font driver has been fixed. It unfortunately returned a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001203 Postscript Font name with a leading slash, as in
David Turner2c7558c2002-04-11 14:21:16 +00001204 "/MunhwaGothic-Regular".
1205
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001206 - FreeType 2 should now compile fine on AIX 4.3.3 as a shared
1207 library.
David Turner2c7558c2002-04-11 14:21:16 +00001208
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001209 - A bug in the Postscript hinter has been found and fixed,
1210 removing un-even stem widths at small pixel sizes (like 14-17).
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001211
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001212 This improves the quality of a certain number of Postscript
1213 fonts.
David Turner2c7558c2002-04-11 14:21:16 +00001214
1215
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001216 II. NEW FEATURES
David Turner2c7558c2002-04-11 14:21:16 +00001217
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001218 - A new function named `FT_Library_Version' has been added to
1219 return the current library's major, minor, and patch version
1220 numbers. This is important since the macros FREETYPE_MAJOR,
1221 FREETYPE_MINOR, and FREETYPE_PATCH cannot be used when the
1222 library is dynamically linked by a program.
David Turner2c7558c2002-04-11 14:21:16 +00001223
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001224 - Two new APIs have been added: `FT_Get_First_Char' and
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001225 `FT_Get_Next_Char'.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001226
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001227 Together, these can be used to iterate efficiently over the
1228 currently selected charmap of a given face. Read the API
1229 reference for more details.
David Turner2c7558c2002-04-11 14:21:16 +00001230
1231
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001232 III. MISCELLANEOUS
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001233
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001234 - The FreeType sources are under heavy internal re-factoring. As
1235 a consequence, we have created a branch named "STABLE" on the
1236 CVS to hold all future releases/fixes in the 2.0.x family.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001237
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001238 The HEAD branch now contains the re-factored sources and
1239 shouldn't be used for testing or packaging new releases. In
1240 case you would like to access the 2.0.9 sources from our CVS
1241 repository, use the tag `VER-2-0-9'.
David Turner2c7558c2002-04-11 14:21:16 +00001242
1243
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001244======================================================================
David Turner2c7558c2002-04-11 14:21:16 +00001245
Werner Lemberg94168f02006-05-11 07:07:09 +00001246CHANGES BETWEEN 2.0.8 and 2.0.7
David Turner1c6af482002-02-08 14:00:20 +00001247
1248 I. IMPORTANT BUG FIXES
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001249
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001250 - There was a small but nasty bug in "freetype-config.in" which
David Turner1c6af482002-02-08 14:00:20 +00001251 caused the "freetype-config" script to fail on Unix.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001252
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001253 This didn't prevent the installation of the library or even its
1254 execution, but caused problems when trying to compile many Unix
1255 packages that depend on it.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001256
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001257 - Some TrueType or OpenType fonts embedded in PDF documents do not
1258 have a 'cmap', 'post' and 'name' as is required by the
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001259 specification. FreeType no longer refuses to load such fonts.
David Turner1c6af482002-02-08 14:00:20 +00001260
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001261 - Various fixes to the PCF font driver.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001262
David Turner1c6af482002-02-08 14:00:20 +00001263
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001264======================================================================
David Turner1c6af482002-02-08 14:00:20 +00001265
Werner Lemberg94168f02006-05-11 07:07:09 +00001266CHANGES BETWEEN 2.0.7 and 2.0.6
David Turner944b7292002-01-31 17:42:05 +00001267
1268 I. IMPORTANT BUG FIXES
1269
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001270 - Fixed two bugs in the Type 1 font driver. The first one
1271 resulted in a memory leak in subtle cases. The other one caused
1272 FreeType to crash when trying to load ".gsf" files (Ghostscript
1273 so-called Postscript fonts).
David Turner944b7292002-01-31 17:42:05 +00001274
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001275 (This made _many_ KDE applications crash on certain systems.
1276 FreeType _is_ becoming a critical system component on Linux :-)
David Turner944b7292002-01-31 17:42:05 +00001277
Werner Lemberg32b53462002-02-01 01:20:11 +00001278 - Fixed a memory leak in the CFF font driver.
David Turner944b7292002-01-31 17:42:05 +00001279
Werner Lemberg32b53462002-02-01 01:20:11 +00001280 - Fixed a memory leak in the PCF font driver.
David Turner944b7292002-01-31 17:42:05 +00001281
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001282 - Fixed the Visual C++ project file
1283 "builds/win32/visualc/freetype.dsp" since it didn't include the
1284 Postscript hinter component, causing errors at build time.
David Turner944b7292002-01-31 17:42:05 +00001285
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001286 - Fixed a small rendering bug in the anti-aliased renderer that
1287 only occurred when trying to draw thin (less than 1 pixel)
1288 strokes.
David Turner944b7292002-01-31 17:42:05 +00001289
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001290 - Fixed "builds/unix/freetype2.a4" which is used to generate a
1291 valid "freetype2.m4" for use with autoconf.
Werner Lemberg32b53462002-02-01 01:20:11 +00001292
1293 - Fixed the OpenVMS Makefiles.
David Turner944b7292002-01-31 17:42:05 +00001294
1295
1296 II. MISCELLANEOUS
1297
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001298 - Added "configure" and "install" scripts to the top-level
1299 directory. A GNU-style installation is thus now easily possible
1300 with
Werner Lemberg32b53462002-02-01 01:20:11 +00001301
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001302 ./configure <options>
1303 make
1304 make install
David Turner944b7292002-01-31 17:42:05 +00001305
1306
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001307======================================================================
David Turner944b7292002-01-31 17:42:05 +00001308
Werner Lemberg94168f02006-05-11 07:07:09 +00001309CHANGES BETWEEN 2.0.6 and 2.0.5
David Turnerafa38542001-10-18 13:22:01 +00001310
Werner Lembergf41e71a2001-12-20 21:22:02 +00001311 I. IMPORTANT BUG FIXES
David Turner640078d2001-12-10 10:47:47 +00001312
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001313 - It wasn't possible to load embedded bitmaps when the auto-hinter
1314 was used. This is now fixed.
David Turner640078d2001-12-10 10:47:47 +00001315
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001316 - The TrueType font driver didn't load some composites properly
1317 (the sub-glyphs were slightly shifted, and this was only
1318 noticeable when using monochrome rendering).
David Turnerafa38542001-10-18 13:22:01 +00001319
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001320 - Various fixes to the auto-hinter. They merely improve the
1321 output of sans-serif fonts. Note that there are still problems
1322 with serifed fonts and composites (accented characters).
David Turnerafa38542001-10-18 13:22:01 +00001323
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001324 - All scalable font drivers erroneously returned un-fitted glyph
1325 advances when hinting was requested. This created problems for
1326 a number of layout applications. This is a very old bug that
1327 got undetected mainly because most test/demo program perform
1328 rounding explicitly or implicitly (through the cache).
Werner Lembergf41e71a2001-12-20 21:22:02 +00001329
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001330 - FT_Glyph_To_Bitmap() did erroneously modify the source glyph in
Werner Lembergf41e71a2001-12-20 21:22:02 +00001331 certain cases.
1332
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001333 - "glnames.py" still contained a bug that made FreeType return
1334 invalid names for certain glyphs.
David Turnerafa38542001-10-18 13:22:01 +00001335
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001336 - The library crashed when loading certain Type 1 fonts like
1337 "sadn.pfb" ("Stalingrad Normal"), which appear to contain
1338 pathetic font info dictionaries.
David Turner6096b5a2002-01-07 10:40:48 +00001339
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001340 - The TrueType glyph loader is now much more paranoid and checks
1341 everything when loading a given glyph image. This was necessary
1342 to avoid problems (crashes and/or memory overwrites) with broken
1343 fonts that came from a really buggy automatic font converter.
David Turner6096b5a2002-01-07 10:40:48 +00001344
1345
Werner Lembergf41e71a2001-12-20 21:22:02 +00001346 II. IMPORTANT UPDATES AND NEW FEATURES
David Turner0fcb4122001-12-20 13:33:03 +00001347
Werner Lembergf41e71a2001-12-20 21:22:02 +00001348 - Important updates to the Mac-specific parts of the library.
David Turner0fcb4122001-12-20 13:33:03 +00001349
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001350 - The caching sub-system has been completely re-designed, and its
Werner Lemberg4db32ec2006-03-24 11:54:53 +00001351 API has evolved (the old one is still supported for backward
Werner Lembergf41e71a2001-12-20 21:22:02 +00001352 compatibility).
David Turner0fcb4122001-12-20 13:33:03 +00001353
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001354 The documentation for it is not yet completed, sorry. For now,
1355 you are encouraged to continue using the old API. However, the
1356 ftview demo program in the ft2demos package has already been
1357 updated to use the new caching functions.
David Turner0fcb4122001-12-20 13:33:03 +00001358
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001359 - A new charmap cache is provided too. See FTC_CMapCache(). This
1360 is useful to perform character code -> glyph index translations
1361 quickly, without the need for an opened FT_Face.
David Turner0fcb4122001-12-20 13:33:03 +00001362
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001363 - A NEW POSTSCRIPT HINTER module has been added to support native
1364 hints in the following formats: PostScript Type 1, PostScript
1365 CID, and CFF/CEF.
Werner Lembergf41e71a2001-12-20 21:22:02 +00001366
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001367 Please test! Note that the auto-hinter produces better results
1368 for a number of badly-hinted fonts (mostly auto-generated ones)
1369 though.
Werner Lembergf41e71a2001-12-20 21:22:02 +00001370
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001371 - A memory debugger is now part of the standard FreeType sources.
1372 To enable it, define FT_DEBUG_MEMORY in
1373 <freetype/config/ftoption.h>, and recompile the library.
Werner Lembergf41e71a2001-12-20 21:22:02 +00001374
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001375 Additionally, define the _environment_ variable FT_DEBUG_MEMORY
1376 and run any program using FreeType. When the library is exited,
1377 a summary of memory footprints and possible leaks will be
1378 displayed.
Werner Lembergf41e71a2001-12-20 21:22:02 +00001379
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001380 This works transparently with _any_ program that uses FreeType.
1381 However, you will need a lot of memory to use this (allocated
1382 blocks are never released to the heap to detect double deletes
1383 easily).
David Turner0fcb4122001-12-20 13:33:03 +00001384
1385
Werner Lembergf41e71a2001-12-20 21:22:02 +00001386 III. MISCELLANEOUS
David Turner0fcb4122001-12-20 13:33:03 +00001387
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001388 - We are aware of subtle differences between the output of
1389 FreeType versions 1 and 2 when it comes to monochrome
1390 TrueType-hinted glyphs. These are most probably due to small
1391 differences in the monochrome rasterizers and will be worked out
1392 in an upcoming release.
David Turner0fcb4122001-12-20 13:33:03 +00001393
David Turner6096b5a2002-01-07 10:40:48 +00001394 - We have decided to fork the sources in a "stable" branch, and an
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001395 "unstable" one, since FreeType is becoming a critical component
1396 of many Unix systems.
Werner Lemberg32b53462002-02-01 01:20:11 +00001397
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001398 The next bug-fix releases of the library will be named 2.0.7,
1399 2.0.8, etc., while the "2.1" branch will contain a version of
1400 the sources where we will start major reworking of the library's
1401 internals, in order to produce FreeType 2.2.0 (or even 3.0) in a
1402 more distant future.
Werner Lemberg32b53462002-02-01 01:20:11 +00001403
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001404 We also hope that this scheme will allow much more frequent
1405 releases than in the past.
David Turner6096b5a2002-01-07 10:40:48 +00001406
David Turner0fcb4122001-12-20 13:33:03 +00001407
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001408======================================================================
David Turnerafa38542001-10-18 13:22:01 +00001409
Werner Lemberg94168f02006-05-11 07:07:09 +00001410CHANGES BETWEEN 2.0.5 and 2.0.4
David Turner1cd4f852001-10-09 07:32:50 +00001411
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001412 NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER. THIS MODULE
1413 WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
David Turner1cd4f852001-10-09 07:32:50 +00001414
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001415 - Fixed a bug that made certain glyphs, like "Cacute", "cacute" and
1416 "lslash" unavailable from Unicode charmaps of Postscript fonts.
1417 This prevented the correct display of Polish text, for example.
David Turner1cd4f852001-10-09 07:32:50 +00001418
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001419 - The kerning table of Type 1 fonts was loaded by FreeType, when its
1420 AFM file was attached to its face, but the
1421 FT_FACE_FLAG_HAS_KERNING bit flags was not set correctly,
1422 preventing FT_Get_Kerning to return meaningful values.
David Turner1cd4f852001-10-09 07:32:50 +00001423
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001424 - Improved SFNT (TrueType & OpenType) charmap support. Slightly
1425 better performance, as well as support for the new formats defined
1426 by the OpenType 1.3 specification (8, 10, and 12)
David Turner1cd4f852001-10-09 07:32:50 +00001427
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001428 - Fixed a serious typo in "src/base/ftcalc.c" which caused invalid
Werner Lemberg80b8d772001-10-10 19:56:42 +00001429 computations in certain rare cases, producing ugly artefacts.
1430
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001431 - The size of the EM square is computed with a more accurate
1432 algorithm for Postscript fonts. The old one caused slight errors
1433 with embedded fonts found in PDF documents.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001434
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001435 - Fixed a bug in the cache manager that prevented normal LRU
1436 behaviour within the cache manager, causing unnecessary reloads
1437 (for FT_Face and FT_Size objects only).
Werner Lemberg80b8d772001-10-10 19:56:42 +00001438
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001439 - Added a new function named "FT_Get_Name_Index" to retrieve the
1440 glyph index of a given glyph name, when found in a face.
David Turner1cd4f852001-10-09 07:32:50 +00001441
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001442 - Added a new function named "FT_Get_Postscript_Name" to retrieve
1443 the "unique" Postscript font name of a given face.
David Turner034a1932001-10-17 13:57:02 +00001444
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001445 - Added a new public header size named FT_SIZES_H (or
1446 <freetype/ftsizes.h>) providing new FT_Size-management functions:
Werner Lembergf41e71a2001-12-20 21:22:02 +00001447 FT_New_Size, FT_Activate_Size, FT_Done_Size.
David Turner034a1932001-10-17 13:57:02 +00001448
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001449 - Fixed a reallocation bug that generated a dangling pointer (and
1450 possibly memory leaks) with Postscript fonts (in
1451 src/psaux/psobjs.c).
David Turner1cd4f852001-10-09 07:32:50 +00001452
Werner Lemberg80b8d772001-10-10 19:56:42 +00001453 - Many fixes for 16-bit correctness.
David Turner1cd4f852001-10-09 07:32:50 +00001454
Werner Lemberg80b8d772001-10-10 19:56:42 +00001455 - Removed many pedantic compiler warnings from the sources.
1456
1457 - Added an Amiga build directory in "builds/amiga".
David Turner1cd4f852001-10-09 07:32:50 +00001458
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001459
1460======================================================================
David Turner1cd4f852001-10-09 07:32:50 +00001461
Werner Lemberg94168f02006-05-11 07:07:09 +00001462CHANGES BETWEEN 2.0.4 and 2.0.3
David Turner995ff202001-06-22 08:45:31 +00001463
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001464 - Fixed a rather annoying bug that was introduced in 2.0.3. Namely,
1465 the font transformation set through FT_Set_Transform was applied
1466 twice to auto-hinted glyphs, resulting in incorrectly rotated text
1467 output.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001468
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001469 - Fixed _many_ compiler warnings. FT2 should now compile cleanly
1470 with Visual C++'s most pedantic warning level (/W4). It already
1471 compiled fine with GCC and a few other compilers.
David Turner995ff202001-06-22 08:45:31 +00001472
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001473 - Fixed a bug that prevented the linear advance width of composite
Werner Lemberg80b8d772001-10-10 19:56:42 +00001474 TrueType glyphs to be correctly returned.
David Turner21939452001-10-05 14:23:03 +00001475
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001476 - Fixed the Visual C++ project files located in
1477 "builds/win32/visualc" (previous versions used older names of the
1478 library).
Werner Lemberg80b8d772001-10-10 19:56:42 +00001479
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001480 - Many 32-bit constants have an "L" appended to their value, in
1481 order to improve the 16-bitness of the code. Someone is actually
1482 trying to use FT2 on an Atari ST machine!
David Turner995ff202001-06-22 08:45:31 +00001483
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001484 - Updated the "builds/detect.mk" file in order to automatically
1485 build FT2 on AIX systems. AIX uses "/usr/sbin/init" instead of
1486 "/sbin/init" and wasn't previously detected as a Unix platform by
1487 the FreeType build system.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001488
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001489 - Updated the Unix-specific portions of the build system (new
1490 libtool version, etc.).
David Turner995ff202001-06-22 08:45:31 +00001491
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001492 - The SFNT kerning lodaer now ensures that the table is sorted
1493 (since some problem fonts do not meet this requirement).
David Turnerc40f3862001-06-27 12:42:10 +00001494
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001495
1496=======================================================================
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001497
Werner Lemberg94168f02006-05-11 07:07:09 +00001498CHANGES BETWEEN 2.0.3 and 2.0.2
David Turner4312f422001-05-24 15:00:19 +00001499
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001500 I. CHANGES TO THE MODULES / FONT DRIVERS
Werner Lemberg80b8d772001-10-10 19:56:42 +00001501
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001502 - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix
1503 several annoying artefacts, mainly:
Werner Lemberg80b8d772001-10-10 19:56:42 +00001504
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001505 - Blue zone alignement of horizontal stems wasn't performed
1506 correctly, resulting in artefacts like the "d" being placed
1507 one pixel below the "b" in some fonts like Time New Roman.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001508
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001509 - Overshoot thresholding wasn't performed correctly, creating
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001510 unpleasant artefacts at large character pixel sizes.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001511
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001512 - Composite glyph loading has been simplified. This gets rid
1513 of various artefacts where the components of a composite
1514 glyphs were not correctly spaced.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001515
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001516 These are the last changes to the current auto-hinting module.
1517 A new hinting sub-system is currently in the work in order to
1518 support native hints in Type 1 / CFF / OpenType fonts, as well
1519 as globally improve rendering.
David Turner4312f422001-05-24 15:00:19 +00001520
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001521 - The PCF driver has been fixed. It reported invalid glyph
1522 dimensions for the fonts available on Solaris.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001523
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001524 - The Type 1, CID and CFF drivers have been modified to fix the
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001525 computation of the EM size.
David Turner4312f422001-05-24 15:00:19 +00001526
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001527 - The Type 1 driver has been fixed to avoid a dangerous bug that
1528 crashed the library with non-conforming fonts (i.e. ones that do
1529 not place the .notdef glyph at position 0).
David Turner4312f422001-05-24 15:00:19 +00001530
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001531 - The TrueType driver had a rather subtle bug (dangling pointer
1532 when loading composite glyphs) that could crash the library in
1533 rare occasions!
David Turner4312f422001-05-24 15:00:19 +00001534
1535
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001536 II. HIGH-LEVEL API CHANGES
Werner Lemberg80b8d772001-10-10 19:56:42 +00001537
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001538 - The error code enumeration values have been changed. An error
1539 value is decomposed in a generic error code, and a module
1540 number. see <freetype/fterrors.h> for details.
David Turner4312f422001-05-24 15:00:19 +00001541
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001542 - A new public header file has been introduced, named
1543 FT_TRIGONOMETRY_H (include/freetype/fttrig.h), providing
1544 trigonometric functions to compute sines, cosines, arctangents,
1545 etc. with 16.16 fixed precision. The implementation is based on
1546 the CORDIC algorithm and is very fast while being sufficiently
1547 accurate.
David Turner4312f422001-05-24 15:00:19 +00001548
1549
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001550 III. INTERNALS
Werner Lemberg80b8d772001-10-10 19:56:42 +00001551
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001552 - Added BeOS-specific files in the old build sub-system. Note
1553 that no changes were required to compile the library with Jam.
David Turner4312f422001-05-24 15:00:19 +00001554
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001555 - The configuration is now capable of automatically detecting
1556 64-bit integers on a set of predefined compilers (GCC, Visual
1557 C++, Borland C++) and will use them by default. This provides a
1558 small performance boost.
David Turner4312f422001-05-24 15:00:19 +00001559
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001560 - A small memory leak that happened when opening 0-sized files
1561 (duh!) have been fixed.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001562
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001563 - Fixed bezier stack depth bug in the routines provided by the
1564 FT_BBOX_H header file. Also fixed similar bugs in the
1565 rasterizers.
David Turner4312f422001-05-24 15:00:19 +00001566
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001567 - The outline bounding box code has been rewritten to use direct
1568 computations, instead of bezier sub-division, to compute the
1569 exact bounding box of glyphs. This is slightly slower but more
1570 accurate.
David Turner4312f422001-05-24 15:00:19 +00001571
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001572 - The build system has been improved and fixed, mainly to support
1573 "make" on Windows 2000 correctly, avoid problems with "make
1574 distclean" on non Unix systems, etc.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001575
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001576 - Hexadecimal constants have been suffixed with "U" to avoid
1577 problems with certain compilers on 64-bit platforms.
David Turner4312f422001-05-24 15:00:19 +00001578
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001579 - A new directory named "src/tools" has been created. It contains
David Turner4312f422001-05-24 15:00:19 +00001580 Python scripts and simple unit test programs used to develop the
1581 library.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001582
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001583 - The DocMaker tool has been moved from "docs" to "src/tools" and
David Turner4312f422001-05-24 15:00:19 +00001584 has been updated with the following:
Werner Lemberg80b8d772001-10-10 19:56:42 +00001585
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001586 - Now accepts the "--title=XXXX" or "-t XXXX" option from the
1587 command line to set the project's name in the generated API
1588 reference.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001589
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001590 - Now accepts the "--output=DIR" or "-o DIR" option from the
1591 command line to set the output directory for all generated
1592 HTML files.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001593
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001594 - Now accepts the "--prefix=XXXX" or "-p XXX" option from the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001595 command line to set the file prefix to use for all
1596 generated HTML files.
David Turner4312f422001-05-24 15:00:19 +00001597
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001598 - Now generates the current time/data on each generated page
David Turner4312f422001-05-24 15:00:19 +00001599 in order to distinguish between versions.
1600
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001601 DocMaker can be used with other projects now, not only FT2
1602 (e.g. MLib, FTLayout, etc.).
Werner Lemberg80b8d772001-10-10 19:56:42 +00001603
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001604
1605======================================================================
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001606
Werner Lemberg94168f02006-05-11 07:07:09 +00001607CHANGES BETWEEN 2.0.2 and 2.0.1
David Turnerd3c8e062000-12-04 22:53:55 +00001608
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001609 I. CHANGES TO THE MODULES / FONT DRIVERS
David Turnera0f89552001-03-23 12:28:59 +00001610
1611 - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
Werner Lembergab6d1072001-04-02 21:30:06 +00001612 avoid legal problems with the Apple patents. It seems that we
1613 mistakenly turned this option on in previous releases of the
1614 build.
David Turnera0f89552001-03-23 12:28:59 +00001615
Werner Lembergab6d1072001-04-02 21:30:06 +00001616 Note that if you want to use the bytecode interpreter in order
1617 to get high-quality TrueType rendering, you will need to toggle
1618 by hand the definition of the
1619 TT_CONFIG_OPTION_BYTECODE_INTERPRETER macro in the file
1620 "include/freetype/config/ftoption.h".
1621
1622 - The CFF driver has been improved by Tom Kacvinsky and Sander van
1623 der Wal:
1624
1625 * Support for "seac" emulation.
1626 * Support for "dotsection".
1627 * Support for retrieving glyph names through
1628 "FT_Get_Glyph_Name".
David Turnera0f89552001-03-23 12:28:59 +00001629
1630 The first two items are necessary to correctly a large number of
Werner Lembergab6d1072001-04-02 21:30:06 +00001631 Type 1 fonts converted to the CFF formats by Adobe Acrobat.
David Turnera0f89552001-03-23 12:28:59 +00001632
Werner Lembergab6d1072001-04-02 21:30:06 +00001633 - The Type 1 driver was also improved by Tom & others:
David Turnera0f89552001-03-23 12:28:59 +00001634
Werner Lembergab6d1072001-04-02 21:30:06 +00001635 * Better EM size computation.
1636 * Better support for synthetic (transformed) fonts.
1637 * The Type 1 driver returns the charstrings corresponding to
1638 each glyph in the "glyph->control_data" field after a call to
1639 "FT_Load_Glyph" (thanks Ha Shao).
David Turnera0f89552001-03-23 12:28:59 +00001640
Werner Lembergab6d1072001-04-02 21:30:06 +00001641 - Various other bugfixes, including the following:
David Turnera0f89552001-03-23 12:28:59 +00001642
Werner Lembergab6d1072001-04-02 21:30:06 +00001643 * Fixed a nasty memory leak in the Type 1 driver.
1644 * The autohinter and the pcf driver used static writable data
1645 when they shouldn't.
1646 * Many casts were added to make the code more 64-bits safe. It
1647 also now compiles on Windows XP 64-bits without warnings.
1648 * Some incorrect writable statics were removed in the "autohint"
1649 and "pcf" drivers. FreeType 2 now compiles on Epoc again.
David Turnera0f89552001-03-23 12:28:59 +00001650
1651
1652 II. CHANGES TO THE HIGH-LEVEL API
David Turnera0f89552001-03-23 12:28:59 +00001653
Werner Lembergab6d1072001-04-02 21:30:06 +00001654 - The library header files inclusion scheme has been changed. The
1655 old scheme looked like:
1656
1657 #include <freetype/freetype.h>
1658 #include <freetype/ftglyph.h>
1659 #include <freetype/ftcache.h>
1660 #include <freetype/cache/ftimage.h>
1661
1662 Now you should use:
1663
1664 #include <ft2build.h>
1665 #include FT_FREETYPE_H
1666 #include FT_GLYPH_H
1667 #include FT_CACHE_H
1668 #include FT_CACHE_IMAGE_H
1669
1670 NOTE THAT THE OLD INCLUSION SCHEME WILL STILL WORK WITH THIS
1671 RELEASE. HOWEVER, WE DO NOT GUARANTEE THAT THIS WILL STILL BE
1672 TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1).
1673
1674 The file <ft2build.h> is used to define the header filename
1675 macros. The complete and commented list of macros is available
1676 in the API reference under the section name "Header File Macros"
1677 in Chapter I.
David Turnera0f89552001-03-23 12:28:59 +00001678
David Turnerf876b242001-03-23 18:09:09 +00001679 For more information, see section I of the following document:
David Turnerf876b242001-03-23 18:09:09 +00001680
Werner Lembergab6d1072001-04-02 21:30:06 +00001681 http://www.freetype.org/
1682 freetype2/docs/tutorial/step1.html
David Turnerf876b242001-03-23 18:09:09 +00001683
Werner Lembergab6d1072001-04-02 21:30:06 +00001684 or
David Turnera0f89552001-03-23 12:28:59 +00001685
Werner Lembergab6d1072001-04-02 21:30:06 +00001686 http://freetype.sourceforge.net/
1687 freetype2/docs/tutorial/step1.html
1688
1689 - Many, many comments have been added to the public source file in
1690 order to automatically generate the API Reference through the
1691 "docmaker.py" Python script.
1692
1693 The latter has been updated to support the grouping of sections
1694 in chapters and better index sort. See:
1695
1696 http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
David Turnera0f89552001-03-23 12:28:59 +00001697
1698
1699 III. CHANGES TO THE BUILD PROCESS
David Turnerb8f56fa2001-03-20 15:04:30 +00001700
Werner Lembergab6d1072001-04-02 21:30:06 +00001701 - If you are not building FreeType 2 with its own build system
1702 (but with your own Makefiles or project files), you will need to
1703 be aware that the build process has changed a little bit.
David Turnera0f89552001-03-23 12:28:59 +00001704
Werner Lembergab6d1072001-04-02 21:30:06 +00001705 You don't need to put the "src" directory in the include path
1706 when compiling any FT2 component. Instead, simply put the
1707 component's directory in the current include path.
1708
1709 So, if you were doing something like:
1710
1711 cc -c -Iinclude -Isrc src/base/ftbase.c
1712
1713 change the line to:
1714
1715 cc -c -Iinclude -Isrc/base src/base/ftbase.c
1716
1717 If you were doing something like:
1718
1719 cd src/base
1720 cc -c -I../../include -I.. ftbase.c
1721
1722 change it to:
1723
1724 cd src/base
1725 cc -c -I../../include ftbase.c
1726
1727
1728======================================================================
1729
Werner Lemberg94168f02006-05-11 07:07:09 +00001730CHANGES BETWEEN 2.0.1 and 2.0
Werner Lembergab6d1072001-04-02 21:30:06 +00001731
David Turneraaac8132000-12-01 18:55:22 +00001732 2.0.1 introduces a few changes:
1733
Werner Lembergab6d1072001-04-02 21:30:06 +00001734 - Fixed many bugs related to the support of CFF / OpenType fonts.
1735 These formats are now much better supported though there is
1736 still work planned to deal with charset tables and PDF-embedded
1737 CFF files that use the old "seac" command.
1738
1739 - The library could not be compiled in debug mode with a very
1740 small number of C compilers whose pre-processors didn't
1741 implement the "##" directive correctly (i.e. per se the ANSI C
1742 specification!) An elegant fix was found.
1743
1744 - Added support for the free Borland command-line C++ Builder
1745 compiler. Use "make setup bcc32". Also fixed a few source
1746 lines that generated new warnings with BCC32.
1747
1748 - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
Werner Lemberg2e82c932000-12-01 21:56:47 +00001749 a conic Bezier arc.
David Turneraaac8132000-12-01 18:55:22 +00001750
Werner Lembergab6d1072001-04-02 21:30:06 +00001751 - Updated the INSTALL file to add IDE compilation.
David Turneraaac8132000-12-01 18:55:22 +00001752
Werner Lembergab6d1072001-04-02 21:30:06 +00001753 - Other minor bug fixes, from invalid Type 1 style flags to
1754 correct support of synthetic (obliqued) fonts in the
1755 auto-hinter, better support for embedded bitmaps in a SFNT font.
David Turneraaac8132000-12-01 18:55:22 +00001756
Werner Lembergab6d1072001-04-02 21:30:06 +00001757 - Fixed some problems with "freetype-config".
David Turneraaac8132000-12-01 18:55:22 +00001758
1759 Finally, the "standard" scheme for including FreeType headers is now
Werner Lembergab6d1072001-04-02 21:30:06 +00001760 gradually changing, but this will be explained in a later release
1761 (probably 2.0.2).
David Turneraaac8132000-12-01 18:55:22 +00001762
Werner Lembergab6d1072001-04-02 21:30:06 +00001763 And very special thanks to Tom Kacvinsky and YAMANO-UCHI Hidetoshi
1764 for their contributions!
David Turneraaac8132000-12-01 18:55:22 +00001765
Werner Lembergab6d1072001-04-02 21:30:06 +00001766
1767======================================================================
1768
David Turneraaac8132000-12-01 18:55:22 +00001769CHANGES BETWEEN beta8 and 2.0
David Turnerf9b8dec2000-06-16 19:34:52 +00001770
Werner Lembergab6d1072001-04-02 21:30:06 +00001771 - Changed the default installation path for public headers from
David Turner27c88272000-11-09 19:10:22 +00001772 "include/freetype" to "include/freetype2".
1773
Werner Lembergab6d1072001-04-02 21:30:06 +00001774 Also added a new "freetype-config" that is automatically generated
1775 and installed on Unix and Cygwin systems. The script itself is
1776 used to retrieve the current install path, C compilation flags as
1777 well as linker flags.
David Turner27c88272000-11-09 19:10:22 +00001778
Werner Lembergab6d1072001-04-02 21:30:06 +00001779 - Fixed several small bugs:
David Turner27c88272000-11-09 19:10:22 +00001780
Werner Lembergab6d1072001-04-02 21:30:06 +00001781 * Incorrect max advance width for fixed-pitch Type 1 fonts.
1782 * Incorrect glyph names for certain TrueType fonts.
1783 * The glyph advance was not copied when FT_Glyph_To_Bitmap was
1784 called.
1785 * The linearHoriAdvance and linerVertAdvance fields were not
1786 correctly returned for glyphs processed by the auto-hinter.
1787 * "type1z" renamed back to "type1"; the old "type1" module has
1788 been removed.
David Turner27c88272000-11-09 19:10:22 +00001789
Werner Lembergab6d1072001-04-02 21:30:06 +00001790 - Revamped the build system to make it a lot more generic. This
1791 will allow us to re-use nearly un-modified in lots of other
1792 projects (including FreeType Layout).
David Turner27c88272000-11-09 19:10:22 +00001793
Werner Lembergab6d1072001-04-02 21:30:06 +00001794 - Changed "cid" to use "psaux" too.
David Turner27c88272000-11-09 19:10:22 +00001795
Werner Lembergab6d1072001-04-02 21:30:06 +00001796 - Added the cache sub-system. See <freetype/ftcache.h> as well as
1797 the sources in "src/cache". Note that it compiles but is still
1798 untested for now.
David Turner27c88272000-11-09 19:10:22 +00001799
Werner Lembergab6d1072001-04-02 21:30:06 +00001800 - Updated "docs/docmaker.py", a draft API reference is available at
1801 http://www.freetype.org/ft2api.html.
Werner Lembergb5084e12000-10-28 17:10:06 +00001802
Werner Lembergab6d1072001-04-02 21:30:06 +00001803 - Changed "type1" to use "psaux".
David Turner046f7a02000-09-15 22:42:06 +00001804
Werner Lembergab6d1072001-04-02 21:30:06 +00001805 - Created a new module named "psaux" to hold the Type 1 & Type 2
1806 parsing routines. It should be used by "type1", "cid", and "cff"
1807 in the future.
David Turner34f1c2f2000-08-23 22:47:44 +00001808
Werner Lembergab6d1072001-04-02 21:30:06 +00001809 - Fixed an important bug in "FT_Glyph_Get_CBox".
David Turner3b2c50e2000-08-23 21:11:13 +00001810
Werner Lembergab6d1072001-04-02 21:30:06 +00001811 - Fixed some compiler warnings that happened since the TrueType
1812 bytecode decoder was deactivated by default.
David Turnera39acf52000-08-23 02:47:57 +00001813
Werner Lembergab6d1072001-04-02 21:30:06 +00001814 - Fixed two memory leaks:
David Turnera39acf52000-08-23 02:47:57 +00001815
Werner Lembergab6d1072001-04-02 21:30:06 +00001816 * The memory manager (16 bytes) isn't released in
1817 FT_Done_FreeType!
1818 * Using custom input streams, the copy of the original stream was
1819 never released.
David Turnera39acf52000-08-23 02:47:57 +00001820
Werner Lembergab6d1072001-04-02 21:30:06 +00001821 - Fixed the auto-hinter by performing automatic computation of the
1822 "filling direction" of each glyph. This is done through a simple
1823 and fast approximation, and seems to work (problems spotted by
1824 Werner though). The Arphic fonts are a lot nicer though there are
1825 still a lot of things to do to handle Asian fonts correctly.
David Turnera39acf52000-08-23 02:47:57 +00001826
David Turnerb1693412000-07-27 21:48:48 +00001827
Werner Lembergab6d1072001-04-02 21:30:06 +00001828======================================================================
Werner Lemberge4b32a52000-10-31 20:42:18 +00001829
David Turnerc5cdf8b2000-07-27 21:40:22 +00001830BETA-8 (RELEASE CANDIDATE) CHANGES
1831
Werner Lembergab6d1072001-04-02 21:30:06 +00001832 - Deactivated the TrueType bytecode interpreter by default.
Werner Lemberge4b32a52000-10-31 20:42:18 +00001833
Werner Lembergab6d1072001-04-02 21:30:06 +00001834 - Deactivated the "src/type1" font driver. Now "src/type1z" is used
1835 by default.
David Turner5f5b4462000-07-26 19:13:51 +00001836
Werner Lembergab6d1072001-04-02 21:30:06 +00001837 - Updates to the build system. We now compile the library correctly
1838 under Unix system through "configure" which is automatically
1839 called on the first "make" invocation.
Werner Lemberge4b32a52000-10-31 20:42:18 +00001840
Werner Lembergab6d1072001-04-02 21:30:06 +00001841 - Added the auto-hinting module! Fixing some bugs here and there.
David Turner5fe4c002000-07-26 19:04:08 +00001842
Werner Lembergab6d1072001-04-02 21:30:06 +00001843 - Found some bugs in the composite loader (seac) of the Type1-based
1844 font drivers.
David Turner49bd4f02000-07-12 16:57:37 +00001845
Werner Lembergab6d1072001-04-02 21:30:06 +00001846 - Renamed the directory "freetype2/config" to "freetype2/builds" and
1847 updated all relevant files.
David Turner1ca6f2d2000-07-08 00:49:43 +00001848
Werner Lembergab6d1072001-04-02 21:30:06 +00001849 - Found a memory leak in the "type1" driver.
Werner Lemberge4b32a52000-10-31 20:42:18 +00001850
Werner Lembergab6d1072001-04-02 21:30:06 +00001851 - Incorporated Tom's patches to support flex operators correctly in
1852 OpenType/CFF fonts. Now all I need is to support pure CFF and CEF
1853 fonts to be done with this driver :-)
David Turner9b3d1c72000-07-07 19:47:34 +00001854
Werner Lembergab6d1072001-04-02 21:30:06 +00001855 - Added the Windows FNT/FON driver in "src/winfonts". For now, it
1856 always "simulates" a Unicode charmap, so it shouldn't be
1857 considered completed right now.
Werner Lemberge4b32a52000-10-31 20:42:18 +00001858
Werner Lembergab6d1072001-04-02 21:30:06 +00001859 It is there to be more a proof of concept than anything else
1860 anyway. The driver is a single C source file, that compiles to 3
1861 Kb of code.
Werner Lemberge4b32a52000-10-31 20:42:18 +00001862
Werner Lembergab6d1072001-04-02 21:30:06 +00001863 I'm still working on the PCF/BDF drivers, but I'm too lazy to
1864 finish them now.
David Turner9b3d1c72000-07-07 19:47:34 +00001865
David Turnerc06aba22000-06-30 23:38:23 +00001866 - CHANGES TO THE HIGH-LEVEL API
Werner Lemberge4b32a52000-10-31 20:42:18 +00001867
Werner Lembergab6d1072001-04-02 21:30:06 +00001868 * FT_Get_Kerning has a new parameter that allows you to select the
1869 coordinates of the kerning vector (font units, scaled, scaled +
1870 grid-fitted).
1871 * The outline functions are now in <freetype/ftoutln.h> and not
1872 part of <freetype/freetype.h> anymore.
1873 * <freetype/ftmodule.h> now contains declarations for
1874 FT_New_Library, FT_Done_Library, FT_Add_Default_Modules.
1875 * The so-called convenience functions have moved from "ftoutln.c"
1876 to "ftglyph.c", and are thus available with this optional
1877 component of the library. They are declared in
1878 <freetype/ftglyph.h> now.
1879 * Anti-aliased rendering is now the default for FT_Render_Glyph
David Turnerc06aba22000-06-30 23:38:23 +00001880 (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
1881 To generate a monochrome bitmap, use ft_render_mode_mono, or the
Werner Lembergab6d1072001-04-02 21:30:06 +00001882 FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char.
David Turnerc06aba22000-06-30 23:38:23 +00001883 FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
Werner Lembergab6d1072001-04-02 21:30:06 +00001884 * <freetype/freetype.h> now include <freetype/config/ftconfig.h>,
David Turnerc06aba22000-06-30 23:38:23 +00001885 solving a few headaches :-)
Werner Lembergab6d1072001-04-02 21:30:06 +00001886 * The type FT_GlyphSlotRec has now a "library" field.
David Turnerc06aba22000-06-30 23:38:23 +00001887
1888 - CHANGES TO THE "ftglyph.h" API
Werner Lemberge4b32a52000-10-31 20:42:18 +00001889
Werner Lembergab6d1072001-04-02 21:30:06 +00001890 This API has been severely modified in order to make it simpler,
1891 clearer, and more efficient. It certainly now looks like a real
1892 "glyph factory" object, and allows client applications to manage
1893 (i.e. transform, bbox and render) glyph images without ever
1894 knowing their original format.
David Turnerc06aba22000-06-30 23:38:23 +00001895
Werner Lembergab6d1072001-04-02 21:30:06 +00001896 - Added support for CID-keyed fonts to the CFF driver. Maybe
1897 support for pure CFF + CEF fonts should come in?
David Turner9d636b62000-06-27 23:32:27 +00001898
Werner Lembergab6d1072001-04-02 21:30:06 +00001899 - Cleaned up source code in order to avoid two functions with the
1900 same name. Also changed the names of the files in "type1z" from
David Turner9d636b62000-06-27 23:32:27 +00001901 "t1XXXX" to "z1XXXX" in order to avoid any conflicts.
Werner Lemberge4b32a52000-10-31 20:42:18 +00001902
David Turner9d636b62000-06-27 23:32:27 +00001903 "make multi" now works well :-)
Werner Lemberge4b32a52000-10-31 20:42:18 +00001904
David Turner81bb4ad2000-06-28 04:19:49 +00001905 Also removed the use of "cidafm" for now, even if the source files
Werner Lembergab6d1072001-04-02 21:30:06 +00001906 are still there. This functionality will certainly go into a
1907 specific module.
David Turnerc06aba22000-06-30 23:38:23 +00001908
Werner Lemberge4b32a52000-10-31 20:42:18 +00001909 - ADDED SUPPORT FOR THE AUTO-HINTER
1910
Werner Lembergab6d1072001-04-02 21:30:06 +00001911 It works :-) I have a demo program which simply is a copy of
1912 "ftview" that does a `FT_Add_Module(library,
1913 &autohinter_module_class)' after library initialization, and Type
1914 1 & OpenType/CFF fonts are now hinted.
Werner Lemberge4b32a52000-10-31 20:42:18 +00001915
Werner Lembergab6d1072001-04-02 21:30:06 +00001916 CID fonts are not hinted, as they include no charmap and the
1917 auto-hinter doesn't include "generic" global metrics computations
1918 yet.
Werner Lemberge4b32a52000-10-31 20:42:18 +00001919
Werner Lembergab6d1072001-04-02 21:30:06 +00001920 Now, I need to release this thing to the FreeType 2 source.
David Turner9d636b62000-06-27 23:32:27 +00001921
1922 - CHANGES TO THE RENDERER MODULES
Werner Lemberge4b32a52000-10-31 20:42:18 +00001923
Werner Lembergab6d1072001-04-02 21:30:06 +00001924 The monochrome and smooth renderers are now in two distinct
1925 directories, namely "src/raster1" and "src/smooth". Note that the
1926 old "src/renderer" is now gone.
Werner Lemberge4b32a52000-10-31 20:42:18 +00001927
Werner Lembergab6d1072001-04-02 21:30:06 +00001928 I ditched the 5-gray-levels renderers. Basically, it involved a
1929 simple #define toggle in 'src/raster1/ftraster.c'.
Werner Lemberge4b32a52000-10-31 20:42:18 +00001930
Werner Lembergab6d1072001-04-02 21:30:06 +00001931 FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now
1932 select the best renderer available, depending on render mode. If
1933 the current renderer for a given glyph image format isn't capable
1934 of supporting the render mode, another one will be found in the
1935 library's list. This means that client applications do not need
1936 to switch or set the renderers themselves (as in the latest
1937 change), they'll get what they want automatically. At last.
Werner Lemberge4b32a52000-10-31 20:42:18 +00001938
Werner Lembergab6d1072001-04-02 21:30:06 +00001939 Changed the demo programs accordingly.
David Turner9d636b62000-06-27 23:32:27 +00001940
David Turnerf0df85b2000-06-22 00:17:42 +00001941 - MAJOR INTERNAL REDESIGN:
Werner Lemberge4b32a52000-10-31 20:42:18 +00001942
Werner Lembergab6d1072001-04-02 21:30:06 +00001943 A lot of internal modifications have been performed lately on the
David Turnerf0df85b2000-06-22 00:17:42 +00001944 source in order to provide the following enhancements:
Werner Lemberge4b32a52000-10-31 20:42:18 +00001945
Werner Lembergab6d1072001-04-02 21:30:06 +00001946 * More generic module support:
Werner Lemberge4b32a52000-10-31 20:42:18 +00001947
Werner Lembergab6d1072001-04-02 21:30:06 +00001948 The FT_Module type is now defined to represent a handle to a
1949 given module. The file <freetype/ftmodule.h> contains the
1950 FT_Module_Class definition, as well as the module-loading public
1951 API.
David Turnerf0df85b2000-06-22 00:17:42 +00001952
Werner Lembergab6d1072001-04-02 21:30:06 +00001953 The FT_Driver type is still defined, and still represents a
1954 pointer to a font driver. Note that FT_Add_Driver is replaced
1955 by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc.
1956
1957 * Support for generic glyph image types:
1958
1959 The FT_Renderer type is a pointer to a module used to perform
1960 various operations on glyph image.
1961
1962 Each renderer is capable of handling images in a single format
1963 (e.g. ft_glyph_format_outline). Its functions are used to:
1964
1965 - transform an glyph image
1966 - render a glyph image into a bitmap
1967 - return the control box (dimensions) of a given glyph image
1968
1969 The scan converters "ftraster.c" and "ftgrays.c" have been moved
1970 to the new directory "src/renderer", and are used to provide two
1971 default renderer modules.
1972
1973 One corresponds to the "standard" scan-converter, the other to
1974 the "smooth" one.
1975
1976 he current renderer can be set through the new function
1977 FT_Set_Renderer.
1978
1979 The old raster-related function FT_Set_Raster, FT_Get_Raster and
1980 FT_Set_Raster_Mode have now disappeared, in favor of the new:
1981
1982 FT_Get_Renderer
1983 FT_Set_Renderer
1984
1985 See the file <freetype/ftrender.h> for more details.
1986
1987 These changes were necessary to properly support different
1988 scalable formats in the future, like bi-color glyphs, etc.
1989
1990 * Glyph loader object:
1991
1992 A new internal object, called a 'glyph loader' has been
1993 introduced in the base layer. It is used by all scalable format
1994 font drivers to load glyphs and composites.
1995
1996 This object has been created to reduce the code size of each
1997 driver, as each one of them basically re-implemented its
1998 functionality.
1999
2000 See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
2001 more information.
2002
2003 * FT_GlyphSlot has new fields:
2004
2005 In order to support extended features (see below), the
2006 FT_GlyphSlot structure has a few new fields:
2007
2008 linearHoriAdvance:
2009
2010 This field gives the linearly scaled (i.e. scaled but
2011 unhinted) advance width for the glyph, expressed as a 16.16
2012 fixed pixel value. This is useful to perform WYSIWYG text.
2013
2014 linearVertAdvance:
2015 This field gives the linearly scaled advance height for the
2016 glyph (relevant in vertical glyph layouts only). This is
2017 useful to perform WYSIWYG text.
2018
2019 Note that the two above field replace the removed "metrics2"
2020 field in the glyph slot.
2021
2022 advance:
2023 This field is a vector that gives the transformed advance for
2024 the glyph. By default, it corresponds to the advance width,
2025 unless FT_LOAD_VERTICAL_LAYOUT was specified when calling
2026 FT_Load_Glyph or FT_Load_Char.
2027
2028 bitmap_left:
2029 This field gives the distance in integer pixels from the
2030 current pen position to the left-most pixel of a glyph image
2031 IF IT IS A BITMAP. It is only valid when the "format" field
2032 is set to "ft_glyph_format_bitmap", for example, after calling
2033 the new function FT_Render_Glyph.
2034
2035 bitmap_top:
2036 This field gives the distance in integer pixels from the
2037 current pen position (located on the baseline) to the top-most
2038 pixel of the glyph image IF IT IS A BITMAP. Positive values
2039 correspond to upwards Y.
2040
2041 loader:
2042 This is a new private field for the glyph slot. Client
2043 applications should not touch it.
David Turnerf0df85b2000-06-22 00:17:42 +00002044
2045
Werner Lembergab6d1072001-04-02 21:30:06 +00002046 * Support for transforms and direct rendering in FT_Load_Glyph:
David Turnerf0df85b2000-06-22 00:17:42 +00002047
Werner Lembergab6d1072001-04-02 21:30:06 +00002048 Most of the functionality found in <freetype/ftglyph.h> has been
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002049 moved to the core library. Hence, the following:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002050
Werner Lembergab6d1072001-04-02 21:30:06 +00002051 - A transform can be specified for a face through
2052 FT_Set_Transform. this transform is applied by FT_Load_Glyph
2053 to scalable glyph images (i.e. NOT TO BITMAPS) before the
2054 function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM
2055 was set in the load flags.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002056
Werner Lembergab6d1072001-04-02 21:30:06 +00002057 - Once a glyph image has been loaded, it can be directly
2058 converted to a bitmap by using the new FT_Render_Glyph
2059 function. Note that this function takes the glyph image from
2060 the glyph slot, and converts it to a bitmap whose properties
2061 are returned in "face.glyph.bitmap", "face.glyph.bitmap_left"
2062 and "face.glyph.bitmap_top". The original native image might
2063 be lost after the conversion.
2064
2065 - When using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph
2066 and FT_Load_Char functions will call FT_Render_Glyph
2067 automatically when needed.
2068
2069 - Reformatted all modules source code in order to get rid of the
2070 basic data types redifinitions (i.e. "TT_Int" instead of "FT_Int",
2071 "T1_Fixed" instead of "FT_Fixed"). Hence the format-specific
2072 prefixes like "TT_", "T1_", "T2_" and "CID_" are only used for
2073 relevant structures.
David Turnerf0df85b2000-06-22 00:17:42 +00002074
2075
Werner Lembergab6d1072001-04-02 21:30:06 +00002076======================================================================
Werner Lemberge4b32a52000-10-31 20:42:18 +00002077
David Turnerf9b8dec2000-06-16 19:34:52 +00002078OLD CHANGES FOR BETA 7
David Turner3475e7f2000-05-17 20:56:01 +00002079
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002080 - bug-fixed the OpenType/CFF parser. It now loads and displays my
Werner Lembergab6d1072001-04-02 21:30:06 +00002081 two fonts nicely, but I'm pretty certain that more testing is
2082 needed :-)
Werner Lemberge4b32a52000-10-31 20:42:18 +00002083
David Turner2b9be992000-06-07 23:41:17 +00002084 - fixed the crummy Type 1 hinter, it now handles accented characters
Werner Lembergab6d1072001-04-02 21:30:06 +00002085 correctly (well, the accent is not always well placed, but that's
David Turner2b9be992000-06-07 23:41:17 +00002086 another problem..)
2087
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002088 - added the CID-keyed Type 1 driver in "src/cid". Works pretty well
Werner Lembergab6d1072001-04-02 21:30:06 +00002089 for only 13 Kb of code ;-) Doesn't read AFM files though, nor the
2090 really useful CMAP files..
David Turner04aa8002000-06-01 03:27:48 +00002091
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002092 - fixed two bugs in the smooth renderer (src/base/ftgrays.c).
2093 Thanks to Boris Letocha for spotting them and providing a fix.
David Turner04aa8002000-06-01 03:27:48 +00002094
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002095 - fixed potential "divide by zero" bugs in ftcalc.c.
David Turner4f99c3c2000-05-29 20:55:13 +00002096
Werner Lembergab6d1072001-04-02 21:30:06 +00002097 - added source code for the OpenType/CFF driver (still incomplete
2098 though..)
David Turner4f99c3c2000-05-29 20:55:13 +00002099
Werner Lembergab6d1072001-04-02 21:30:06 +00002100 - modified the SFNT driver slightly to perform more robust header
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002101 checks in TT_Load_SFNT_Header. This prevents certain font files
Werner Lembergab6d1072001-04-02 21:30:06 +00002102 (e.g. some Type 1 Multiple Masters) from being incorrectly
2103 "recognized" as TrueType font files..
David Turner4f99c3c2000-05-29 20:55:13 +00002104
Werner Lembergab6d1072001-04-02 21:30:06 +00002105 - moved a lot of stuff from the TrueType driver to the SFNT module,
2106 this allows greater code re-use between font drivers
2107 (e.g. TrueType, OpenType, Compact-TrueType, etc..)
David Turner2e421312000-05-26 22:13:17 +00002108
2109 - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
2110 to minimally speed it up..
2111
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002112 - added support for Multiple Master fonts in "type1z". There is
2113 also a new file named <freetype/ftmm.h> which defines functions to
David Turner11187202000-05-26 17:13:23 +00002114 manage them from client applications.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002115
David Turner11187202000-05-26 17:13:23 +00002116 The new file "src/base/ftmm.c" is also optional to the engine..
2117
Werner Lembergab6d1072001-04-02 21:30:06 +00002118 - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) +
David Turner11187202000-05-26 17:13:23 +00002119 small bug fixes in FT_Load_Glyph, the "type1" driver, etc..
2120
David Turnerf5dcdd52000-05-23 22:16:27 +00002121 - a minor fix to the Type 1 driver to let them apply the font matrix
2122 correctly (used for many oblique fonts..)
2123
David Turner51179f02000-05-18 16:18:05 +00002124 - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002125 to use %p instead of %lx). Thanks to Karl Robillard.
David Turner51179f02000-05-18 16:18:05 +00002126
Werner Lembergab6d1072001-04-02 21:30:06 +00002127 - fixed some bugs in the sbit loader (src/base/sfnt/ttsbit.c) +
2128 added a new flag, FT_LOAD_CROP_BITMAP to query that bitmaps be
2129 cropped when loaded from a file (maybe I should move the bitmap
2130 cropper to the base layer ??).
David Turner109fcf62000-05-17 23:35:37 +00002131
Werner Lembergab6d1072001-04-02 21:30:06 +00002132 - changed the default number of gray levels of the smooth renderer
2133 to 256 (instead of the previous 128). Of course, the human eye
2134 can't see any difference ;-)
David Turner3475e7f2000-05-17 20:56:01 +00002135
Werner Lembergab6d1072001-04-02 21:30:06 +00002136 - removed TT_MAX_SUBGLYPHS, there is no static limit on the number
2137 of subglyphs in a TrueType font now..
David Turner3475e7f2000-05-17 20:56:01 +00002138
Werner Lembergab6d1072001-04-02 21:30:06 +00002139
2140======================================================================
2141
David Turner3475e7f2000-05-17 20:56:01 +00002142OLD CHANGES 16 May 2000
David Turnerefce08d2000-05-11 18:23:52 +00002143
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002144 - tagged "BETA-6" in the CVS tree. This one is a serious release
Werner Lembergab6d1072001-04-02 21:30:06 +00002145 candidate even though it doesn't incorporate the auto-hinter yet..
David Turner968f0c32000-05-16 23:26:01 +00002146
2147 - various obsolete files were removed, and copyright header updated
2148
Werner Lembergab6d1072001-04-02 21:30:06 +00002149 - finally updated the standard raster to fix the monochrome
2150 rendering bug + re-enable support for 5-gray levels anti-aliasing
2151 (suck, suck..)
David Turner968f0c32000-05-16 23:26:01 +00002152
2153 - created new header files, and modified sources accordingly:
David Turnere49ab252000-05-16 23:44:38 +00002154
Werner Lembergab6d1072001-04-02 21:30:06 +00002155 <freetype/fttypes.h>
2156 - simple FreeType types, without the API
2157 <freetype/internal/ftmemory.h>
2158 - definition of memory-management macros
David Turner968f0c32000-05-16 23:26:01 +00002159
Werner Lembergab6d1072001-04-02 21:30:06 +00002160 - added the "DSIG" (OpenType Digital Signature) tag to
2161 <freetype/tttags.h>
David Turner968f0c32000-05-16 23:26:01 +00002162
Werner Lembergab6d1072001-04-02 21:30:06 +00002163 - light update/cleaning of the build system + changes to the sources
2164 in order to get rid of _all_ compiler warnings with three
2165 compilers, i.e:
David Turnerc30aea92000-05-12 15:01:18 +00002166
Werner Lembergab6d1072001-04-02 21:30:06 +00002167 gcc with "-ansi -pedantic -Wall -W", Visual C++ with "/W3 /WX" and
2168 LCC
David Turnerc30aea92000-05-12 15:01:18 +00002169
Werner Lembergab6d1072001-04-02 21:30:06 +00002170 IMPORTANT NOTE FOR WIN32-LCC USERS:
2171 |
2172 | It seems the C pre-processor that comes with LCC is broken, it
2173 | doesn't recognize the ANSI standard directives # and ##
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002174 | correctly when one of the argument is a macro. Also,
2175 | something like:
Werner Lembergab6d1072001-04-02 21:30:06 +00002176 |
2177 | #define F(x) print##x
2178 |
2179 | F(("hello"))
2180 |
2181 | will get incorrectly translated to:
2182 |
2183 | print "hello")
2184 |
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002185 | by its pre-processor. For this reason, you simply cannot build
Werner Lembergab6d1072001-04-02 21:30:06 +00002186 | FreeType 2 in debug mode with this compiler..
David Turnerc30aea92000-05-12 15:01:18 +00002187
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002188 - yet another massive grunt work. I've changed the definition of
2189 the EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These
2190 now take an argument, which is the function's return value type.
David Turnere49ab252000-05-16 23:44:38 +00002191
Werner Lembergab6d1072001-04-02 21:30:06 +00002192 This is necessary to compile FreeType as a DLL on Windows and
2193 OS/2. Depending on the compiler used, a compiler-specific keyword
2194 like __export or __system must be placed before (VisualC++) or
2195 after (BorlandC++) the type..
David Turnere49ab252000-05-16 23:44:38 +00002196
David Turnerbfe2f982000-05-12 12:17:15 +00002197 Of course, this needed a lot of changes throughout the source code
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002198 to make it compile again... All cleaned up now, apparently..
David Turnerbfe2f982000-05-12 12:17:15 +00002199
Werner Lembergab6d1072001-04-02 21:30:06 +00002200 Note also that there is a new EXPORT_VAR macro defined to allow
2201 the _declaration_ of an exportable public (constant)
2202 variable. This is the case of the raster interfaces (see
2203 ftraster.h and ftgrays.h), as well as each module's interface (see
2204 sfdriver.h, psdriver.h, etc..)
David Turnerbfe2f982000-05-12 12:17:15 +00002205
Werner Lembergab6d1072001-04-02 21:30:06 +00002206 - new feature: it is now possible to pass extra parameters to font
2207 drivers when creating a new face object. For now,
2208 this capability is unused. It could however prove to
2209 be useful in a near future..
David Turnerbfe2f982000-05-12 12:17:15 +00002210
Werner Lembergab6d1072001-04-02 21:30:06 +00002211 the FT_Open_Args structure was changes, as well as the internal
2212 driver interface (the specific "init_face" module function has
2213 now a different signature).
David Turnerbfe2f982000-05-12 12:17:15 +00002214
2215 - updated the tutorial (not finished though).
Werner Lembergab6d1072001-04-02 21:30:06 +00002216
David Turnerc30aea92000-05-12 15:01:18 +00002217 - updated the top-level BUILD document
David Turnerbfe2f982000-05-12 12:17:15 +00002218
Werner Lembergab6d1072001-04-02 21:30:06 +00002219 - fixed a potential memory leak that could occur when loading
2220 embedded bitmaps.
David Turnerc60c61c2000-05-12 15:26:58 +00002221
Werner Lembergab6d1072001-04-02 21:30:06 +00002222 - added the declaration of FT_New_Memory_Face in
2223 <freetype/freetype.h>, as it was missing from the public header
2224 (the implementation was already in "ftobjs.c").
David Turnerbfe2f982000-05-12 12:17:15 +00002225
Werner Lembergab6d1072001-04-02 21:30:06 +00002226 - the file <freetype/fterrors.h> has been seriously updated in order
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002227 to allow the automatic generation of error message tables. See
2228 the comments within it for more information.
David Turnerbfe2f982000-05-12 12:17:15 +00002229
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002230 - major directory hierarchy re-organisation. This was done for two
Werner Lembergab6d1072001-04-02 21:30:06 +00002231 things:
David Turnere49ab252000-05-16 23:44:38 +00002232
Werner Lembergab6d1072001-04-02 21:30:06 +00002233 * first, to ease the "manual" compilation of the library by
2234 requiring at lot less include paths :-)
David Turnerbfe2f982000-05-12 12:17:15 +00002235
Werner Lembergab6d1072001-04-02 21:30:06 +00002236 * second, to allow external programs to effectively access
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002237 internal data fields. For example, this can be extremely
Werner Lembergab6d1072001-04-02 21:30:06 +00002238 useful if someone wants to write a font producer or a font
2239 manager on top of FreeType.
David Turnera9c251c2000-05-11 18:36:19 +00002240
Werner Lembergab6d1072001-04-02 21:30:06 +00002241 Basically, you should now use the 'freetype/' prefix for header
2242 inclusion, as in:
David Turnere49ab252000-05-16 23:44:38 +00002243
David Turnera9c251c2000-05-11 18:36:19 +00002244 #include <freetype/freetype.h>
2245 #include <freetype/ftglyph.h>
2246
2247 Some new include sub-directories are available:
David Turnere49ab252000-05-16 23:44:38 +00002248
Werner Lembergab6d1072001-04-02 21:30:06 +00002249 a. the "freetype/config" directory, contains two files used to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002250 configure the build of the library. Client applications
2251 should not need to look at these normally, but they can if
2252 they want.
David Turnere49ab252000-05-16 23:44:38 +00002253
David Turnera9c251c2000-05-11 18:36:19 +00002254 #include <freetype/config/ftoption.h>
2255 #include <freetype/config/ftconfig.h>
David Turnere49ab252000-05-16 23:44:38 +00002256
Werner Lembergab6d1072001-04-02 21:30:06 +00002257 b. the "freetype/internal" directory, contains header files that
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002258 describes library internals. These are the header files that
Werner Lembergab6d1072001-04-02 21:30:06 +00002259 were previously found in the "src/base" and "src/shared"
2260 directories.
David Turnera9c251c2000-05-11 18:36:19 +00002261
2262
Werner Lembergab6d1072001-04-02 21:30:06 +00002263 As usual, the build system and the demos have been updated to
2264 reflect the change..
David Turnere49ab252000-05-16 23:44:38 +00002265
David Turnera9c251c2000-05-11 18:36:19 +00002266 Here's a layout of the new directory hierarchy:
David Turnere49ab252000-05-16 23:44:38 +00002267
Werner Lemberg89df58f2002-06-14 08:09:25 +00002268 TOP_DIR
David Turnera9c251c2000-05-11 18:36:19 +00002269 include/
2270 freetype/
2271 freetype.h
2272 ...
2273 config/
2274 ftoption.h
2275 ftconfig.h
2276 ftmodule.h
David Turnere49ab252000-05-16 23:44:38 +00002277
David Turnera9c251c2000-05-11 18:36:19 +00002278 internal/
2279 ftobjs.h
2280 ftstream.h
2281 ftcalc.h
2282 ...
David Turnere49ab252000-05-16 23:44:38 +00002283
David Turnera9c251c2000-05-11 18:36:19 +00002284 src/
2285 base/
2286 ...
David Turnere49ab252000-05-16 23:44:38 +00002287
David Turnera9c251c2000-05-11 18:36:19 +00002288 sfnt/
2289 psnames/
2290 truetype/
2291 type1/
2292 type1z/
2293
2294
Werner Lembergab6d1072001-04-02 21:30:06 +00002295 Compiling a module is now much easier, for example, the following
Werner Lemberg89df58f2002-06-14 08:09:25 +00002296 should work when in the TOP_DIR directory on an ANSI build:
David Turnere49ab252000-05-16 23:44:38 +00002297
David Turnera9c251c2000-05-11 18:36:19 +00002298 gcc -c -I./include -I./src/base src/base/ftbase.c
2299 gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
2300 etc..
2301
2302 (of course, using -Iconfig/<system> if you provide system-specific
2303 configuration files).
David Turnerefce08d2000-05-11 18:23:52 +00002304
Werner Lembergab6d1072001-04-02 21:30:06 +00002305 - updated the structure of FT_Outline_Funcs in order to allow direct
2306 coordinate scaling within the outline decomposition routine (this
2307 is important for virtual "on" points with TrueType outlines) +
2308 updates to the rasters to support this..
David Turnerefce08d2000-05-11 18:23:52 +00002309
Werner Lembergab6d1072001-04-02 21:30:06 +00002310 - updated the OS/2 table loading code in "src/sfnt/ttload.c" in
2311 order to support version 2 of the table (see OpenType 1.2 spec)
David Turnerefce08d2000-05-11 18:23:52 +00002312
Werner Lembergab6d1072001-04-02 21:30:06 +00002313 - created "include/tttables.h" and "include/t1tables.h" to allow
2314 client applications to access some of the SFNT and T1 tables of a
2315 face with a procedural interface (see FT_Get_Sfnt_Table()) +
2316 updates to internal source files to reflect the change..
David Turnerefce08d2000-05-11 18:23:52 +00002317
Werner Lembergab6d1072001-04-02 21:30:06 +00002318 - some cleanups in the source code to get rid of warnings when
2319 compiling with the "-Wall -W -ansi -pedantic" options in gcc.
David Turnerefce08d2000-05-11 18:23:52 +00002320
2321 - debugged and moved the smooth renderer to "src/base/ftgrays.c" and
2322 its header to "include/ftgrays.h"
2323
Werner Lembergab6d1072001-04-02 21:30:06 +00002324 - updated TT_MAX_SUBGLYPHS to 96 as some CJK fonts have composites
2325 with up to 80 sub-glyphs !! Thanks to Werner
David Turnerefce08d2000-05-11 18:23:52 +00002326
Werner Lembergab6d1072001-04-02 21:30:06 +00002327
2328======================================================================
2329
David Turnerefce08d2000-05-11 18:23:52 +00002330OLD CHANGES - 14-apr-2000
David Turner77054f22000-04-14 20:49:52 +00002331
Werner Lembergab6d1072001-04-02 21:30:06 +00002332 - fixed a bug in the TrueType glyph loader that prevented the
2333 correct loading of some CJK glyphs in mingli.ttf
David Turnere49ab252000-05-16 23:44:38 +00002334
David Turner77054f22000-04-14 20:49:52 +00002335 - improved the standard Type 1 hinter in "src/type1"
David Turnere49ab252000-05-16 23:44:38 +00002336
Werner Lembergab6d1072001-04-02 21:30:06 +00002337 - fixed two bugs in the experimental Type 1 driver in "src/type1z"
David Turner77054f22000-04-14 20:49:52 +00002338 to handle the new XFree86 4.0 fonts (and a few other ones..)
2339
Werner Lembergab6d1072001-04-02 21:30:06 +00002340 - the smooth renderer is now complete and supports sub-banding to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002341 render large glyphs at high speed. However, it is still located
2342 in "demos/src/ftgrays.c" and should move to the library itself in
2343 the next beta. NOTE: The smooth renderer doesn't compile in
David Turner77054f22000-04-14 20:49:52 +00002344 stand-alone mode anymore, but this should be fixed RSN..
David Turnere49ab252000-05-16 23:44:38 +00002345
Werner Lembergab6d1072001-04-02 21:30:06 +00002346 - introduced convenience functions to more easily deal with glyph
2347 images, see "include/ftglyph.h" for more details, as well as the
2348 new demo program named "demos/src/ftstring.c" that demonstrates
David Turner77054f22000-04-14 20:49:52 +00002349 its use
2350
Werner Lembergab6d1072001-04-02 21:30:06 +00002351 - implemented FT_LOAD_NO_RECURSE in both the TrueType and Type 1
2352 drivers (this is required by the auto-hinter to improve its
2353 results).
David Turner77054f22000-04-14 20:49:52 +00002354
Werner Lembergab6d1072001-04-02 21:30:06 +00002355 - changed the raster interface, in order to allow client
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002356 applications to provide their own span-drawing callbacks.
2357 However, only the smooth renderer supports this. See
2358 "FT_Raster_Params" in the file "include/ftimage.h".
David Turner77054f22000-04-14 20:49:52 +00002359
Werner Lembergab6d1072001-04-02 21:30:06 +00002360 - fixed a small bug in FT_MulFix that caused incorrect transform
2361 computation!
David Turner77054f22000-04-14 20:49:52 +00002362
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002363 - Note: The tutorial is out-of-date.
David Turner77054f22000-04-14 20:49:52 +00002364
Werner Lembergab6d1072001-04-02 21:30:06 +00002365
2366======================================================================
2367
David Turner77054f22000-04-14 20:49:52 +00002368OLD CHANGES - 12-mar-2000
David Turnerc3c7e7f2000-03-13 14:19:31 +00002369
Werner Lembergab6d1072001-04-02 21:30:06 +00002370 - changed the layout of configuration files : now, all ANSI
2371 configuration files are located in
2372 "freetype2/config". System-specific over-rides can be placed in
2373 "freetype2/config/<system>".
David Turnere49ab252000-05-16 23:44:38 +00002374
David Turnerc3c7e7f2000-03-13 14:19:31 +00002375 - moved all configuration macros to "config/ftoption.h"
David Turnere49ab252000-05-16 23:44:38 +00002376
David Turnerc3c7e7f2000-03-13 14:19:31 +00002377 - improvements in the Type 1 driver with AFM support
David Turnere49ab252000-05-16 23:44:38 +00002378
Werner Lembergab6d1072001-04-02 21:30:06 +00002379 - changed the fields in the FT_Outline structure : the old "flags"
David Turnerc3c7e7f2000-03-13 14:19:31 +00002380 array is re-named "tags", while all ancient flags are encoded into
2381 a single unsigned int named "flags".
2382
Werner Lembergab6d1072001-04-02 21:30:06 +00002383 - introduced new flags in FT_Outline.flags (see
2384 ft_outline_.... enums in "ftimage.h").
David Turnerc3c7e7f2000-03-13 14:19:31 +00002385
2386 - changed outline functions to "FT_Outline_<action>" syntax
2387
2388 - added a smooth anti-alias renderer to the demonstration programs
Werner Lembergab6d1072001-04-02 21:30:06 +00002389
David Turnerc3c7e7f2000-03-13 14:19:31 +00002390 - added Mac graphics driver (thanks Just)
David Turnere49ab252000-05-16 23:44:38 +00002391
Werner Lembergab6d1072001-04-02 21:30:06 +00002392 - FT_Open_Face changed in order to received a pointer to a
2393 FT_Open_Args descriptor..
David Turnere49ab252000-05-16 23:44:38 +00002394
Werner Lembergab6d1072001-04-02 21:30:06 +00002395 - various cleanups, a few more API functions implemented (see
2396 FT_Attach_File)
David Turnerc3c7e7f2000-03-13 14:19:31 +00002397
2398 - updated some docs
2399
Werner Lembergab6d1072001-04-02 21:30:06 +00002400
2401======================================================================
2402
David Turnerc3c7e7f2000-03-13 14:19:31 +00002403OLD CHANGES - 22-feb-2000
David Turner58c10b52000-02-22 14:31:42 +00002404
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002405 - introduced the "psnames" module. It is used to:
David Turner58c10b52000-02-22 14:31:42 +00002406
Werner Lembergab6d1072001-04-02 21:30:06 +00002407 o convert a Postscript glyph name into the equivalent Unicode
2408 character code (used by the Type 1 driver(s) to synthetize on
2409 the fly a Unicode charmap).
David Turner58c10b52000-02-22 14:31:42 +00002410
Werner Lembergab6d1072001-04-02 21:30:06 +00002411 o provide an interface to retrieve the Postscript names of the
2412 Macintosh, Adobe Standard & Adobe Expert character codes.
2413 (the Macintosh names are used by the SFNT-module postscript
2414 names support routines, while the other two tables are used by
2415 the Type 1 driver(s)).
David Turner58c10b52000-02-22 14:31:42 +00002416
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002417 - introduced the "type1z" alternate Type 1 driver. This is a (still
Werner Lembergab6d1072001-04-02 21:30:06 +00002418 experimental) driver for the Type 1 format that will ultimately
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002419 replace the one in "src/type1". It uses pattern matching to load
2420 data from the font, instead of a finite state analyzer. It works
2421 much better than the "old" driver with "broken" fonts. It is also
David Turner58c10b52000-02-22 14:31:42 +00002422 much smaller (under 15 Kb).
2423
Werner Lembergab6d1072001-04-02 21:30:06 +00002424 - the Type 1 drivers (both in "src/type1" and "src/type1z") are
2425 nearly complete. They both provide automatic Unicode charmap
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002426 synthesis through the "psnames" module. No re-encoding vector is
Werner Lembergab6d1072001-04-02 21:30:06 +00002427 needed. (note that they still leak memory due to some code
David Turner58c10b52000-02-22 14:31:42 +00002428 missing, and I'm getting lazy).
2429
Werner Lembergab6d1072001-04-02 21:30:06 +00002430 Trivial AFM support has been added to read kerning information but
2431 wasn't exactly tested as it should ;-)
David Turner58c10b52000-02-22 14:31:42 +00002432
Werner Lembergab6d1072001-04-02 21:30:06 +00002433 - The TrueType glyph loader has been seriously rewritten (see the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002434 file "src/truetype/ttgload.c". It is now much, much simpler as
Werner Lembergab6d1072001-04-02 21:30:06 +00002435 well as easier to read, maintain and understand :-) Preliminary
2436 versions introduced a memory leak that has been reported by Jack
David Turner58c10b52000-02-22 14:31:42 +00002437 Davis, and is now fixed..
2438
Werner Lembergab6d1072001-04-02 21:30:06 +00002439 - introduced the new "ft_glyph_format_plotter", used to represent
2440 stroked outlines like Windows "Vector" fonts, and certain Type 1
2441 fonts like "Hershey". The corresponding raster will be written
David Turner58c10b52000-02-22 14:31:42 +00002442 soon.
2443
Werner Lembergab6d1072001-04-02 21:30:06 +00002444 - FT_New_Memory_Face is gone. Likewise, FT_Open_Face has a new
2445 interface that uses a structure to describe the input stream, the
2446 driver (if required), etc..
2447
David Turner58c10b52000-02-22 14:31:42 +00002448
2449TODO
Werner Lembergab6d1072001-04-02 21:30:06 +00002450
David Turner58c10b52000-02-22 14:31:42 +00002451 - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
2452
Werner Lembergab6d1072001-04-02 21:30:06 +00002453 - Add a function like FT_Load_Character( face, char_code, load_flags
2454 ) that would really embbed a call to FT_Get_Char_Index then
2455 FT_Load_Glyph to ease developer's work.
David Turner58c10b52000-02-22 14:31:42 +00002456
Werner Lembergab6d1072001-04-02 21:30:06 +00002457 - Update the tutorial!
2458
2459 - consider adding support for Multiple Master fonts in the Type 1
David Turner58c10b52000-02-22 14:31:42 +00002460 drivers.
2461
Werner Lembergab6d1072001-04-02 21:30:06 +00002462 - Test the AFM routines of the Type 1 drivers to check that kerning
David Turner58c10b52000-02-22 14:31:42 +00002463 information is returned correctly.
2464
Werner Lembergab6d1072001-04-02 21:30:06 +00002465 - write a decent auto-gridding component !! We need this to release
David Turner58c10b52000-02-22 14:31:42 +00002466 FreeType 2.0 gold !
2467
2468
Werner Lembergab6d1072001-04-02 21:30:06 +00002469less urgent needs:
2470
David Turner58c10b52000-02-22 14:31:42 +00002471 - add a CFF/Type2 driver
2472 - add a BDF driver
2473 - add a FNT/PCF/HBF driver
2474 - add a Speedo driver from the X11 sources
2475
2476
Werner Lembergab6d1072001-04-02 21:30:06 +00002477======================================================================
2478
David Turner58c10b52000-02-22 14:31:42 +00002479OLDER CHANGES - 27-jan-2000
David Turner633da992000-01-27 14:07:33 +00002480
Werner Lembergab6d1072001-04-02 21:30:06 +00002481 - updated the "sfnt" module interface to allow several SFNT-based
David Turner633da992000-01-27 14:07:33 +00002482 drivers to co-exist peacefully
David Turnere49ab252000-05-16 23:44:38 +00002483
Werner Lembergab6d1072001-04-02 21:30:06 +00002484 - updated the "T1_Face" type to better separate Postscript font
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002485 content from the rest of the FT_Face structure. Might be used
Werner Lembergab6d1072001-04-02 21:30:06 +00002486 later by the CFF/Type2 driver..
David Turnere49ab252000-05-16 23:44:38 +00002487
David Turner633da992000-01-27 14:07:33 +00002488 - added an experimental replacement Type 1 driver featuring advanced
2489 (and speedy) pattern matching to retrieve the data from postscript
2490 fonts.
2491
Werner Lembergab6d1072001-04-02 21:30:06 +00002492 - very minor changes in the implementation of FT_Set_Char_Size and
2493 FT_Set_Pixel_Sizes (they now implement default to ligthen the font
2494 driver's code).
David Turner633da992000-01-27 14:07:33 +00002495
2496
Werner Lembergab6d1072001-04-02 21:30:06 +00002497======================================================================
2498
David Turner633da992000-01-27 14:07:33 +00002499OLD MESSAGE
2500
Werner Lembergab6d1072001-04-02 21:30:06 +00002501This file summarizes the changes that occured since the last "beta" of
2502FreeType 2. Because the list is important, it has been divided into
2503separate sections:
David Turnerd2b1f351999-12-16 23:11:37 +00002504
David Turner5951ce91999-12-29 00:53:44 +00002505Table Of Contents:
2506
2507 I High-Level Interface (easier !)
2508 II Directory Structure
2509 III Glyph Image Formats
2510 IV Build System
2511 V Portability
2512 VI Font Drivers
David Turnerd2b1f351999-12-16 23:11:37 +00002513
David Turnerd2b1f351999-12-16 23:11:37 +00002514
Werner Lembergab6d1072001-04-02 21:30:06 +00002515----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00002516
Werner Lembergab6d1072001-04-02 21:30:06 +00002517High-Level Interface:
David Turnere49ab252000-05-16 23:44:38 +00002518
Werner Lembergab6d1072001-04-02 21:30:06 +00002519 The high-level API has been considerably simplified. Here is how:
David Turnere49ab252000-05-16 23:44:38 +00002520
Werner Lembergab6d1072001-04-02 21:30:06 +00002521 - resource objects have disappeared. this means that face objects
2522 can now be created with a single function call (see FT_New_Face
2523 and FT_Open_Face)
David Turnere49ab252000-05-16 23:44:38 +00002524
Werner Lembergab6d1072001-04-02 21:30:06 +00002525 - when calling either FT_New_Face & FT_Open_Face, a size object
2526 and a glyph slot object are automatically created for the face,
2527 and can be accessed through "face->glyph" and "face->size" if
2528 one really needs to. In most cases, there's no need to call
2529 FT_New_Size or FT_New_Glyph.
2530
2531 - similarly, FT_Load_Glyph now only takes a "face" argument
2532 (instead of a glyph slot and a size). Also, it's "result"
2533 parameter is gone, as the glyph image type is returned in the
2534 field "face->glyph.format"
2535
2536 - the list of available charmaps is directly accessible through
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002537 "face->charmaps", counting "face->num_charmaps" elements. Each
Werner Lembergab6d1072001-04-02 21:30:06 +00002538 charmap has an 'encoding' field which specifies which known
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002539 encoding it deals with. Valid values are, for example:
David Turnere49ab252000-05-16 23:44:38 +00002540
David Turnerd2b1f351999-12-16 23:11:37 +00002541 ft_encoding_unicode (for ASCII, Latin-1 and Unicode)
2542 ft_encoding_apple_roman
2543 ft_encoding_sjis
2544 ft_encoding_adobe_standard
David Turner5951ce91999-12-29 00:53:44 +00002545 ft_encoding_adobe_expert
David Turnere49ab252000-05-16 23:44:38 +00002546
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002547 other values may be added in the future. Each charmap still
Werner Lembergab6d1072001-04-02 21:30:06 +00002548 holds its "platform_id" and "encoding_id" values in case the
2549 encoding is too exotic for the current library
David Turnerd2b1f351999-12-16 23:11:37 +00002550
2551
Werner Lembergab6d1072001-04-02 21:30:06 +00002552----------------------------------------------------------------------
2553
David Turnerd2b1f351999-12-16 23:11:37 +00002554Directory Structure:
2555
2556 Should seem obvious to most of you:
2557
2558 freetype/
2559 config/ -- configuration sub-makefiles
2560 ansi/
David Turner5951ce91999-12-29 00:53:44 +00002561 unix/ -- platform-specific configuration files
David Turnerd2b1f351999-12-16 23:11:37 +00002562 win32/
2563 os2/
2564 msdos/
2565
Werner Lembergab6d1072001-04-02 21:30:06 +00002566 include/ -- public header files, those to be included
2567 directly by client apps
David Turnerd2b1f351999-12-16 23:11:37 +00002568
2569 src/ -- sources of the library
2570 base/ -- the base layer
Werner Lembergab6d1072001-04-02 21:30:06 +00002571 sfnt/ -- the sfnt "driver" (see the drivers section
2572 below)
David Turnerd2b1f351999-12-16 23:11:37 +00002573 truetype/ -- the truetype driver
2574 type1/ -- the type1 driver
2575 shared/ -- some header files shared between drivers
2576
2577 demos/ -- demos/tools
2578
2579 docs/ -- documentation (a bit empty for now)
2580
David Turnerd2b1f351999-12-16 23:11:37 +00002581
Werner Lembergab6d1072001-04-02 21:30:06 +00002582----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00002583
Werner Lembergab6d1072001-04-02 21:30:06 +00002584Glyph Image Formats:
David Turnerd2b1f351999-12-16 23:11:37 +00002585
Werner Lembergab6d1072001-04-02 21:30:06 +00002586 Drivers are now able to register new glyph image formats within the
2587 library. For now, the base layer supports of course bitmaps and
2588 vector outlines, but one could imagine something different like
2589 colored bitmaps, bi-color vectors or wathever else (Metafonts anyone
2590 ??).
David Turnerd2b1f351999-12-16 23:11:37 +00002591
Werner Lembergab6d1072001-04-02 21:30:06 +00002592 See the file `include/ftimage.h'. Note also that the type
2593 FT_Raster_Map is gone, and is now replaced by FT_Bitmap, which
2594 should encompass all known bitmap types.
2595
2596 Each new image format must provide at least one "raster", i.e. a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002597 module capable of transforming the glyph image into a bitmap. It's
Werner Lembergab6d1072001-04-02 21:30:06 +00002598 also possible to change the default raster used for a given glyph
2599 image format.
2600
2601 The default outline scan-converter now uses 128 levels of grays by
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002602 default, which tends to smooth many things. Note that the demo
Werner Lembergab6d1072001-04-02 21:30:06 +00002603 programs have been updated significantly in order to display these..
David Turnerd2b1f351999-12-16 23:11:37 +00002604
2605
Werner Lembergab6d1072001-04-02 21:30:06 +00002606----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00002607
Werner Lembergab6d1072001-04-02 21:30:06 +00002608Build system:
David Turnerd2b1f351999-12-16 23:11:37 +00002609
Werner Lembergab6d1072001-04-02 21:30:06 +00002610 You still need GNU Make to build the library. The build system has
2611 been very seriously re-vamped in order to provide things like :
2612
2613 - automatic host platform detection (reverting to 'config/ansi' if
2614 it is not detected, with pseudo-standard compilation flags)
David Turnerd2b1f351999-12-16 23:11:37 +00002615
2616 - the ability to compile from the Makefiles with very different and
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002617 exotic compilers. Note that linking the library can be difficult
Werner Lembergab6d1072001-04-02 21:30:06 +00002618 for some platforms.
David Turnerd2b1f351999-12-16 23:11:37 +00002619
2620 For example, the file `config/win32/lcclib.bat' is invoked by the
2621 build system to create the ".lib" file with LCC-Win32 because its
Werner Lembergab6d1072001-04-02 21:30:06 +00002622 librarian has too many flaws to be invoked directly from the
2623 Makefile.
David Turnerd2b1f351999-12-16 23:11:37 +00002624
Werner Lembergab6d1072001-04-02 21:30:06 +00002625 Here's how it works:
David Turnerd2b1f351999-12-16 23:11:37 +00002626
Werner Lembergab6d1072001-04-02 21:30:06 +00002627 - the first time you type `make', the build system runs a series of
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002628 sub-makefiles in order to detect your host platform. It then
2629 dumps what it found, and creates a file called `config.mk' in the
2630 current directory. This is a sub-Makefile used to define many
Werner Lembergab6d1072001-04-02 21:30:06 +00002631 important Make variables used to build the library.
David Turnerd2b1f351999-12-16 23:11:37 +00002632
Werner Lembergab6d1072001-04-02 21:30:06 +00002633 - the second time, the build system detects the `config.mk' then use
2634 it to build the library. All object files go into 'obj' by
2635 default, as well as the library file, but this can easily be
2636 changed.
David Turnerd2b1f351999-12-16 23:11:37 +00002637
Werner Lembergab6d1072001-04-02 21:30:06 +00002638 Note that you can run "make setup" to force another host platform
2639 detection even if a `config.mk' is present in the current
2640 directory. Another solution is simply to delete the file, then
2641 re-run make.
David Turnerd2b1f351999-12-16 23:11:37 +00002642
Werner Lembergab6d1072001-04-02 21:30:06 +00002643 Finally, the default compiler for all platforms is gcc (for now,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002644 this will hopefully changed in the future). You can however specify
Werner Lembergab6d1072001-04-02 21:30:06 +00002645 a different compiler by specifying it after the 'setup' target as
2646 in:
David Turnerd2b1f351999-12-16 23:11:37 +00002647
2648 gnumake setup lcc on Win32 to use the LCC compiler
2649 gnumake setup visualc on Win32 to use Visual C++
2650
Werner Lembergab6d1072001-04-02 21:30:06 +00002651 See the file `config/<system>/detect.mk' for a list of supported
2652 compilers for your platforms.
David Turnerd2b1f351999-12-16 23:11:37 +00002653
Werner Lembergab6d1072001-04-02 21:30:06 +00002654 It should be relatively easy to write new detection rules files and
David Turnerd2b1f351999-12-16 23:11:37 +00002655 config.mk..
2656
Werner Lembergab6d1072001-04-02 21:30:06 +00002657 Finally, to build the demo programs, go to `demos' and launch GNU
2658 Make, it will use the `config.mk' in the top directory to build the
2659 test programs..
David Turnerd2b1f351999-12-16 23:11:37 +00002660
David Turnerd2b1f351999-12-16 23:11:37 +00002661
Werner Lembergab6d1072001-04-02 21:30:06 +00002662----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00002663
Werner Lembergab6d1072001-04-02 21:30:06 +00002664Portability:
David Turnerd2b1f351999-12-16 23:11:37 +00002665
Werner Lembergab6d1072001-04-02 21:30:06 +00002666 In the previous beta, a single FT_System object was used to
2667 encompass all low-level operations like thread synchronisation,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002668 memory management and i/o access. This has been greatly simplified:
Werner Lembergab6d1072001-04-02 21:30:06 +00002669
2670 - thread synchronisation has been dropped, for the simple reason
2671 that the library is already re-entrant, and that if you really
2672 need two threads accessing the same FT_Library, you should
2673 really synchronize access to it yourself with a simple mutex.
2674
2675 - memory management is performed through a very simple object
2676 called "FT_Memory", which really is a table containing a table
2677 of pointers to functions like malloc, realloc and free as well
2678 as some user data (closure).
David Turnerd2b1f351999-12-16 23:11:37 +00002679
2680 - resources have disappeared (they created more problems than they
Werner Lembergab6d1072001-04-02 21:30:06 +00002681 solved), and i/o management have been simplified greatly as a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002682 result. Streams are defined through FT_Stream objects, which
2683 can be either memory-based or disk-based.
David Turnerd2b1f351999-12-16 23:11:37 +00002684
Werner Lembergab6d1072001-04-02 21:30:06 +00002685 Note that each face has its own stream, which is closed only
2686 when the face object is destroyed. Hence, a function like
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002687 TT_Flush_Face in 1.x cannot be directly supported. However, if
Werner Lembergab6d1072001-04-02 21:30:06 +00002688 you really need something like this, you can easily tailor your
2689 own streams to achieve the same feature at a lower level (and
2690 use FT_Open_Face instead of FT_New_Face to create the face).
David Turnerd2b1f351999-12-16 23:11:37 +00002691
Werner Lembergab6d1072001-04-02 21:30:06 +00002692 See the file "include/ftsystem.h" for more details, as well as the
David Turnerd2b1f351999-12-16 23:11:37 +00002693 implementations found in "config/unix" and "config/ansi".
2694
2695
Werner Lembergab6d1072001-04-02 21:30:06 +00002696----------------------------------------------------------------------
David Turnere49ab252000-05-16 23:44:38 +00002697
Werner Lembergab6d1072001-04-02 21:30:06 +00002698Font Drivers:
David Turner5951ce91999-12-29 00:53:44 +00002699
Werner Lembergab6d1072001-04-02 21:30:06 +00002700 The Font Driver interface has been modified in order to support
David Turner5951ce91999-12-29 00:53:44 +00002701 extensions & versioning.
2702
2703
Werner Lembergab6d1072001-04-02 21:30:06 +00002704 The list of the font drivers that are statically linked to the
2705 library at compile time is managed through a new configuration file
David Turner5951ce91999-12-29 00:53:44 +00002706 called `config/<platform>/ftmodule.h'.
2707
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002708 This file is autogenerated when invoking `make modules'. This
2709 target will parse all sub-directories of 'src', looking for a
2710 "module.mk" rules file, used to describe the driver to the build
2711 system.
David Turner5951ce91999-12-29 00:53:44 +00002712
Werner Lembergab6d1072001-04-02 21:30:06 +00002713 Hence, one should call `make modules' each time a font driver is
2714 added or removed from the `src' directory.
David Turner5951ce91999-12-29 00:53:44 +00002715
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002716 Finally, this version provides a "pseudo-driver" in `src/sfnt'.
2717 This driver doesn't support font files directly, but provides
2718 services used by all TrueType-like font drivers. Hence, its code is
2719 shared between the TrueType & OpenType font formats, and possibly
2720 more formats to come if we're lucky..
David Turnerd2b1f351999-12-16 23:11:37 +00002721
Werner Lembergab6d1072001-04-02 21:30:06 +00002722
2723----------------------------------------------------------------------
2724
2725Extensions support:
David Turner5951ce91999-12-29 00:53:44 +00002726
2727 The extensions support is inspired by the one found in 1.x.
2728
Werner Lembergab6d1072001-04-02 21:30:06 +00002729 Now, each font driver has its own "extension registry", which lists
2730 which extensions are available for the font faces managed by the
2731 driver.
David Turner5951ce91999-12-29 00:53:44 +00002732
Werner Lembergab6d1072001-04-02 21:30:06 +00002733 Extension ids are now strings, rather than 4-byte tags, as this is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002734 usually more readable.
David Turner5951ce91999-12-29 00:53:44 +00002735
2736 Each extension has:
2737 - some data, associated to each face object
2738 - an interface (table of function pointers)
2739
Werner Lembergab6d1072001-04-02 21:30:06 +00002740 An extension that is format-specific should simply register itself
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002741 to the correct font driver. Here is some example code:
David Turner5951ce91999-12-29 00:53:44 +00002742
2743 // Registering an extensions
2744 //
2745 FT_Error FT_Init_XXXX_Extension( FT_Library library )
2746 {
2747 FT_DriverInterface* tt_driver;
2748
2749 driver = FT_Get_Driver( library, "truetype" );
2750 if (!driver) return FT_Err_Unimplemented_Feature;
2751
David Turnere49ab252000-05-16 23:44:38 +00002752 return FT_Register_Extension( driver, &extension_class );
David Turner5951ce91999-12-29 00:53:44 +00002753 }
2754
David Turnere49ab252000-05-16 23:44:38 +00002755
David Turner5951ce91999-12-29 00:53:44 +00002756 // Implementing the extensions
2757 //
2758 FT_Error FT_Proceed_Extension_XXX( FT_Face face )
2759 {
2760 FT_XXX_Extension ext;
2761 FT_XXX_Extension_Interface ext_interface;
2762
2763 ext = FT_Get_Extension( face, "extensionid", &ext_interface );
2764 if (!ext) return error;
2765
2766 return ext_interface->do_it(ext);
2767 }
David Turnerd2b1f351999-12-16 23:11:37 +00002768
Werner Lemberg56c368c2005-06-04 23:00:25 +00002769------------------------------------------------------------------------
2770
Werner Lemberg6cdab922006-01-08 22:34:01 +00002771Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006 by
Werner Lemberg56c368c2005-06-04 23:00:25 +00002772David Turner, Robert Wilhelm, and Werner Lemberg.
2773
2774This file is part of the FreeType project, and may only be used,
2775modified, and distributed under the terms of the FreeType project
2776license, LICENSE.TXT. By continuing to use, modify, or distribute this
2777file you indicate that you have read the license and understand and
2778accept it fully.
2779
2780
Werner Lembergab6d1072001-04-02 21:30:06 +00002781--- end of CHANGES ---