blob: 1c42b86571b1a22b9e20010a4a6b1569fd519f1b [file] [log] [blame]
Werner Lembergdf49e692007-05-04 06:30:05 +00001
Werner Lembergef915c32007-07-16 20:46:05 +00002CHANGES BETWEEN 2.3.6 and 2.3.5
3
4 II. IMPORTANT CHANGES
5
6 - The new function `FT_Get_CID_Registry_Ordering_Supplement' gives
7 access to those fields in a CID-keyed font. The code has been
8 contributed by Derek Clegg.
9
10
11======================================================================
12
13
Werner Lembergdf49e692007-05-04 06:30:05 +000014CHANGES BETWEEN 2.3.5 and 2.3.4
15
Werner Lembergc1d22572007-05-19 07:24:55 +000016 I. IMPORTANT BUG FIXES
17
18 - Some subglyphs in TrueType fonts were handled incorrectly due to
19 a missing graphics state reinitialization.
20
Werner Lemberg1c8980e2007-05-25 07:11:12 +000021 - Large .Z files (as distributed with some X11 packages) weren't
22 handled correctly, making FreeType increase the heap stack in an
23 endless loop.
24
Werner Lembergaa52eab2007-07-02 15:14:50 +000025 - A large number of bugs have been fixed to avoid crashes and
26 endless loops with invalid fonts.
27
Werner Lembergc1d22572007-05-19 07:24:55 +000028
29 II. IMPORTANT CHANGES
30
Werner Lemberg1c8980e2007-05-25 07:11:12 +000031 - The two new cache functions `FTC_ImageCache_LookupScaler' and
32 `FTC_SBit_Cache_LookupScaler' have been added to allow lookup of
33 glyphs using an `FTC_Scaler' object; this makes it possible to
Werner Lemberg99e0c182007-05-29 07:00:23 +000034 use fractional pixel sizes in the cache. The demo programs have
35 been updated accordingly to use this feature.
Werner Lemberg1c8980e2007-05-25 07:11:12 +000036
Werner Lemberg99e0c182007-05-29 07:00:23 +000037 - A new API `FT_Get_CMap_Format' has been added to get the cmap
Werner Lemberg79944112007-05-19 14:10:06 +000038 format of a TrueType font. This is useful in handling PDF
Werner Lembergc1d22572007-05-19 07:24:55 +000039 files. The code has been contributed by Derek Clegg.
40
Werner Lemberg99e0c182007-05-29 07:00:23 +000041 - The auto-hinter now produces better output by default for
42 non-Latin scripts like Indic. This was done by using the CJK
43 hinting module as the default instead of the Latin one. Thanks
44 to Rahul Bhalerao for this suggestion.
45
Werner Lembergf6c120f2007-06-11 04:55:58 +000046 - A new API `FT_Face_CheckTrueTypePatents' has been added to find
47 out whether a given TrueType font uses patented bytecode
Werner Lemberge9f47992007-06-16 09:32:31 +000048 instructions. The `ft2demos' bundle contains a new program
49 called `ftpatchk' which demonstrates its usage.
Werner Lembergf6c120f2007-06-11 04:55:58 +000050
Werner Lembergaa52eab2007-07-02 15:14:50 +000051 - A new API `FT_Face_SetUnpatentedHinting' has been added to
52 enable or disable the unpatented hinter.
53
Werner Lembergab1604b2007-06-16 07:59:39 +000054 - Support for Windows FON files in PE format has been contributed
55 by Dmitry Timoshkov.
56
Werner Lembergc1d22572007-05-19 07:24:55 +000057
58 III. MISCELLANEOUS
Werner Lembergdf49e692007-05-04 06:30:05 +000059
60 - Vincent Richomme contributed Visual C++ project files for Pocket
61 PCs.
62
63
64======================================================================
65
Werner Lemberg14bf82e2007-04-10 04:09:49 +000066CHANGES BETWEEN 2.3.4 and 2.3.3
67
68 I. IMPORTANT BUG FIXES
69
70 - A serious bug in the handling of bitmap fonts (and bitmap
71 strikes of outline fonts) has been introduced in 2.3.3.
72
73
74======================================================================
75
David Turner23553d62007-03-26 13:37:17 +000076CHANGES BETWEEN 2.3.3 and 2.3.2
77
78 I. IMPORTANT BUG FIXES
79
80 - Remove a serious regression in the TrueType bytecode interpreter
Werner Lemberg644b1ad2007-03-28 21:17:11 +000081 that was introduced in version 2.3.2. Note that this does not
Werner Lemberg79944112007-05-19 14:10:06 +000082 disable the improvements introduced to the interpreter in
83 version 2.3.2, only some ill cases that occurred with certain
84 fonts (though a few popular ones).
David Turner23553d62007-03-26 13:37:17 +000085
Werner Lemberg644b1ad2007-03-28 21:17:11 +000086 - The auto-hinter now ignores single-point contours for computing
87 blue zones. This bug created `wavy' baselines when rendering
88 text with various fonts that use these contours to model
89 mark-attach points (these are points that are never rasterized
90 and are placed outside of the glyph's real outline).
David Turner23553d62007-03-26 13:37:17 +000091
Werner Lemberg79944112007-05-19 14:10:06 +000092 - The `rsb_delta' and `lsb_delta' glyph slot fields are now set to
Werner Lemberg99e0c182007-05-29 07:00:23 +000093 zero for mono-spaced fonts. Otherwise code that uses them would
David Turner23553d62007-03-26 13:37:17 +000094 essentially ruin the fixed-advance property.
95
Werner Lemberg79944112007-05-19 14:10:06 +000096 - Fix CVE-2007-1351 which can cause an integer overflow while
97 parsing BDF fonts, leading to a potentially exploitable heap
Werner Lemberg9f83e052007-04-05 02:28:23 +000098 overflow condition.
99
Werner Lemberg99e0c182007-05-29 07:00:23 +0000100
Werner Lemberg644b1ad2007-03-28 21:17:11 +0000101 II. MISCELLANEOUS
102
103 - Fixed compilation issues on some 64-bit platforms (see ChangeLog
104 for details).
105
106 - A new demo program `ftdiff' has been added to compare TrueType
107 hinting, FreeType's auto hinting, and rendering without hinting
108 in three columns.
109
110
David Turner23553d62007-03-26 13:37:17 +0000111======================================================================
Werner Lemberg644b1ad2007-03-28 21:17:11 +0000112
David Turner121cad52007-03-08 16:43:50 +0000113CHANGES BETWEEN 2.3.2 and 2.3.1
114
115 I. IMPORTANT BUG FIXES
116
Werner Lemberg25d592a2007-03-09 07:59:35 +0000117 - FreeType returned incorrect kerning information from TrueType
118 fonts when the bytecode interpreter was enabled. This happened
119 due to a typo introduced in version 2.3.0.
David Turner121cad52007-03-08 16:43:50 +0000120
Werner Lemberg25d592a2007-03-09 07:59:35 +0000121 - Negative kerning values from PFM files are now reported
122 correctly (they were read as 16-bit unsigned values from the
123 file).
David Turner121cad52007-03-08 16:43:50 +0000124
Werner Lemberg25d592a2007-03-09 07:59:35 +0000125 - Fixed a small memory leak when `FT_Init_FreeType' failed for
126 some reason.
David Turner121cad52007-03-08 16:43:50 +0000127
Werner Lemberg25d592a2007-03-09 07:59:35 +0000128 - The Postscript hinter placed and sized very thin and ghost stems
129 incorrectly.
David Turner121cad52007-03-08 16:43:50 +0000130
Werner Lemberg25d592a2007-03-09 07:59:35 +0000131 - The TrueType bytecode interpreter has been fixed to get rid of
132 most of the rare differences seen in comparison to the Windows
133 font loader.
134
David Turner121cad52007-03-08 16:43:50 +0000135
136 II. IMPORTANT CHANGES
137
Werner Lemberg25d592a2007-03-09 07:59:35 +0000138 - The auto-hinter now better deals with serifs and corner cases
139 (e.g., glyph '9' in Arial at 9pt, 96dpi). It also improves
140 spacing adjustments and doesn't change widths for non-spacing
141 glyphs.
David Turner121cad52007-03-08 16:43:50 +0000142
Werner Lemberg25d592a2007-03-09 07:59:35 +0000143 - Many Mac-specific functions are deprecated (but still
144 available); modern replacements have been provided for them.
145 See the documentation in file `ftmac.h'.
146
David Turner121cad52007-03-08 16:43:50 +0000147
148======================================================================
149
Werner Lemberg53935932007-01-31 08:53:02 +0000150CHANGES BETWEEN 2.3.1 and 2.3.0
Werner Lemberg555258f2007-01-21 09:46:37 +0000151
152 I. IMPORTANT BUG FIXES
153
154 - The TrueType interpreter sometimes returned incorrect horizontal
155 metrics due to a bug in the handling of the SHZ instruction.
156
Werner Lembergb1be9e82007-01-25 11:50:00 +0000157 - A typo in a security check introduced after version 2.2.1
158 prevented FreeType to render some glyphs in CFF fonts.
159
Werner Lembergd7855662007-01-25 13:53:56 +0000160
Werner Lemberg555258f2007-01-21 09:46:37 +0000161======================================================================
162
Werner Lemberg17432b52007-01-12 09:28:44 +0000163CHANGES BETWEEN 2.3.0 and 2.2.1
David Turnere3d6e942006-09-26 16:58:21 +0000164
165 I. IMPORTANT BUG FIXES
166
Werner Lemberg110246c2006-09-26 21:55:44 +0000167 - The PCF font loader is now much more robust while loading
168 malformed font files.
David Turnere3d6e942006-09-26 16:58:21 +0000169
Werner Lemberg110246c2006-09-26 21:55:44 +0000170 - Various memory leaks have been found and fixed.
171
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000172 - The TrueType name loader now deals properly with some fonts that
173 encode their names in UTF-16 (the specification was vague, and
174 the code incorrectly assumed UCS-4).
David Turnere3d6e942006-09-26 16:58:21 +0000175
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000176 - Fixed the TrueType bytecode loader to deal properly with subtle
177 monochrome/gray issues when scaling the CVT. Some fonts
178 exhibited bad rendering artifacts otherwise.
David Turner4f7496e2007-01-09 09:21:16 +0000179
Werner Lembergb4142d52007-01-17 12:45:26 +0000180 - `FT_GlyphSlot_Embolden' now supports vertical layouts correctly
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000181 (it mangled the vertical advance height).
182
Werner Lembergb4142d52007-01-17 12:45:26 +0000183 - Fixed byte endian issues of `ftmac.c' to support Mac OS X on
184 i386.
185
186 - The PFR font loader no longer erroneously tags font files
187 without any outlines as FT_FACE_FLAG_SCALABLE.
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000188
David Turner4f7496e2007-01-09 09:21:16 +0000189
190 II. NEW API FUNCTIONS
191
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000192 - `FT_Library_SetLcdFilter' allows you to select a special filter
193 to be applied to the bitmaps generated by `FT_Render_Glyph' if
194 one of the FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V modes has
195 been selected. This filter is used to reduce color fringes;
196 several settings are available through the FT_LCD_FILTER_XXX
197 enumeration.
David Turner4f7496e2007-01-09 09:21:16 +0000198
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000199 Its declaration and documentation can be found in file
200 `include/freetype/ftlcdfil.h' (to be accessed with macro
201 FT_LCD_FILTER_H).
David Turner4f7496e2007-01-09 09:21:16 +0000202
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000203 *IMPORTANT*: This function returns an error
204 (FT_Err_Unimplemented_Feature) in default builds of the library
205 for patent reasons. See below.
David Turner4f7496e2007-01-09 09:21:16 +0000206
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000207 - `FT_Get_Gasp' allows you to query the flags of the TrueType
208 `gasp' table for a given character pixel size. This is useful
Werner Lembergb4142d52007-01-17 12:45:26 +0000209 to duplicate the text rendering of MS Windows when the native
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000210 bytecode interpreter is enabled (which isn't the default for
211 other patent reasons).
David Turner4f7496e2007-01-09 09:21:16 +0000212
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000213 Its declaration and documentation can be found in file
214 `include/freetype/ftgasp.h' (to be accessed with macro
215 FT_GASP_H).
David Turner4f7496e2007-01-09 09:21:16 +0000216
217
218 III. IMPORTANT CHANGES
219
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000220 - The auto-hinter has been tuned a lot to improve its results with
221 serif fonts, resulting in much better font rendering of many web
222 pages.
David Turnere3d6e942006-09-26 16:58:21 +0000223
Werner Lemberg110246c2006-09-26 21:55:44 +0000224 - The unpatented hinter is now part of the default build of the
225 library; we have added code to automatically support `tricky'
David Turnere3d6e942006-09-26 16:58:21 +0000226 fonts that need it.
227
Werner Lemberg110246c2006-09-26 21:55:44 +0000228 This means that FreeType should `just work' with certain Asian
229 fonts, like MingLiU, which cannot properly be loaded without a
230 bytecode interpreter, but which fortunately do not use any of
231 the patented bytecode opcodes. We detect these fonts by name,
232 so please report any font file that doesn't seem to work with
233 FreeType, and we shall do what we can to support it in a next
234 release.
David Turnere3d6e942006-09-26 16:58:21 +0000235
Werner Lemberg110246c2006-09-26 21:55:44 +0000236 Note that the API hasn't changed, so you can still force
Werner Lembergb4142d52007-01-17 12:45:26 +0000237 unpatented hinting with a special parameter to `FT_Open_Face' as
Werner Lemberg110246c2006-09-26 21:55:44 +0000238 well. This might be useful in same cases; for example, a PDF
239 reader might present a user option to activate it to deal with
240 certain `tricky' embedded fonts which cannot be clearly
241 identified.
David Turnere3d6e942006-09-26 16:58:21 +0000242
Werner Lemberg110246c2006-09-26 21:55:44 +0000243 If you are a developer for embedded systems, you might want to
244 *disable* the feature to save code space by undefining
Werner Lembergb4142d52007-01-17 12:45:26 +0000245 TT_CONFIG_OPTION_UNPATENTED_HINTING in file `ftoption.h'.
David Turnere3d6e942006-09-26 16:58:21 +0000246
Werner Lembergb4142d52007-01-17 12:45:26 +0000247 - LCD-optimized rendering is now *disabled* in all default builds
248 of the library, mainly due to patent issues. For more
249 information see:
David Turnere3d6e942006-09-26 16:58:21 +0000250
251 http://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html
252
Werner Lemberg110246c2006-09-26 21:55:44 +0000253 A new configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING
Werner Lembergb4142d52007-01-17 12:45:26 +0000254 has been introduced in `ftoption.h'; manually define it in this
Werner Lemberg110246c2006-09-26 21:55:44 +0000255 file if you want to re-enable the feature.
David Turnere3d6e942006-09-26 16:58:21 +0000256
Werner Lemberg110246c2006-09-26 21:55:44 +0000257 The change only affects the implementation, not the FreeType
258 API. This means that clients don't need to be modified, because
259 the library still generates LCD decimated bitmaps, but with the
260 added constraint that R=G=B on each triplet.
David Turnere3d6e942006-09-26 16:58:21 +0000261
Werner Lemberg110246c2006-09-26 21:55:44 +0000262 The displayed result should be equal to normal anti-aliased
David Turnere3d6e942006-09-26 16:58:21 +0000263 rendering.
264
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000265 Additionally, if FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
266 defined, the new `FT_Library_SetLcdFilter' function returns the
267 FT_Err_Unimplemented_Feature error code.
David Turner4f7496e2007-01-09 09:21:16 +0000268
Werner Lemberg110246c2006-09-26 21:55:44 +0000269 - Some computation bugs in the TrueType bytecode interpreter were
270 found, which allow us to get rid of very subtle and rare
271 differences we had experienced with the Windows renderer.
272
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000273 - It is now possible to cross-compile the library easily. See the
Werner Lembergb4142d52007-01-17 12:45:26 +0000274 file `docs/INSTALL.CROSS' for details.
David Turner4f7496e2007-01-09 09:21:16 +0000275
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000276 - The file `src/base/ftmac.c' now contains code for Mac OS X only;
277 its deprecated function `FT_GetFile_From_Mac_Font_Name' always
Werner Lembergb4142d52007-01-17 12:45:26 +0000278 returns an error even if the QuickDraw framework is available.
279 The previous version has been moved to `builds/mac/ftmac.c'.
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000280
281 Selecting configure option `--with-quickdraw-carbon' makes the
282 build process use the original `ftmac.c' file instead of the Mac
283 OS X-only version.
284
David Turner4f7496e2007-01-09 09:21:16 +0000285
Werner Lemberg8c4120d2007-01-15 06:42:40 +0000286 IV. MISCELLANEOUS
David Turnere3d6e942006-09-26 16:58:21 +0000287
David Turner4f7496e2007-01-09 09:21:16 +0000288 - Various performance and memory footprint optimizations have been
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000289 performed on the TrueType and CFF font loaders, sometimes with
290 very drastic benefits (e.g., the TrueType loader is now about
291 25% faster; FreeType should use less heap memory under nearly
Werner Lembergb4142d52007-01-17 12:45:26 +0000292 all conditions).
David Turnere3d6e942006-09-26 16:58:21 +0000293
Werner Lemberg110246c2006-09-26 21:55:44 +0000294 - The anti-aliased rasterizer has been optimized and is now 15% to
295 25% percent faster than in previous versions, depending on
296 content.
David Turnere3d6e942006-09-26 16:58:21 +0000297
Werner Lemberg110246c2006-09-26 21:55:44 +0000298 - The Type 1 loader has been improved; as an example, it now skips
299 top-level dictionaries properly.
300
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000301 - Better support for Mac fonts on POSIX systems, plus compilation
302 fixes for Mac OS X on ppc64 where `ftmac.c' cannot be built.
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000303
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000304 - Configuration without `--with-old-mac-fonts' does not include
305 `ftmac.c' (this was the behaviour in FreeType version 2.1.10).
Werner Lembergb0398be2007-01-13 08:52:27 +0000306
Werner Lemberg17432b52007-01-12 09:28:44 +0000307 - The TrueTypeGX validator (gxvalid) checks the order of glyph IDs
308 in the kern table.
309
David Turnere3d6e942006-09-26 16:58:21 +0000310
311======================================================================
312
Werner Lemberg94168f02006-05-11 07:07:09 +0000313CHANGES BETWEEN 2.2.1 and 2.2
Werner Lemberg1639c792006-05-06 16:44:58 +0000314
315 I. IMPORTANT BUG FIXES
316
317 - Various integer overflows have been fixed.
318
319 - PFB fonts with MacOS resource fork weren't handled correctly on
320 non-MacOS platforms.
321
322
323======================================================================
324
Werner Lemberg94168f02006-05-11 07:07:09 +0000325CHANGES BETWEEN 2.2 and 2.1.10
Werner Lemberg49f4d342005-06-16 19:07:08 +0000326
Werner Lemberg1639c792006-05-06 16:44:58 +0000327(not released officially)
328
Werner Lemberg49f4d342005-06-16 19:07:08 +0000329 I. IMPORTANT BUG FIXES
330
331 - Vertical metrics for SFNT fonts were incorrect sometimes.
332
Werner Lemberg7e25c682005-09-09 18:00:06 +0000333 - The FT_HAS_KERNING macro always returned 0.
334
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000335 - CFF OpenType fonts didn't return correct vertical metrics for
Werner Lembergcfc0cf22005-11-17 08:12:00 +0000336 glyphs with outlines.
337
Werner Lemberg6c990452005-11-18 21:10:59 +0000338 - If FreeType was compiled without hinters, all font formats based
339 on PS outlines weren't scaled correctly.
340
Werner Lemberg435046b2006-01-11 10:57:42 +0000341
Werner Lemberg49f4d342005-06-16 19:07:08 +0000342 II. IMPORTANT CHANGES
343
Werner Lemberge88d24c2006-02-28 21:49:54 +0000344 - Version 2.2 no longer exposes its internals, this is, the header
345 files located in the `include/freetype/internal' directory of
346 the source package are not copied anymore by the `make install'
347 command. Consequently, a number of rogue clients which directly
348 access FreeType's internal functions and structures won't
349 compile without modification.
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000350
Werner Lemberge88d24c2006-02-28 21:49:54 +0000351 We provide patches for most of those rogue clients. See the
352 following page for more information:
David Turnere9a47192006-02-28 09:26:58 +0000353
Werner Lemberg94168f02006-05-11 07:07:09 +0000354 http://www.freetype.org/freetype2/patches/rogue-patches.html
Werner Lemberge88d24c2006-02-28 21:49:54 +0000355
356 Note that, as a convenience to our Unix desktop users, version
357 2.2 is *binary* compatible with FreeType 2.1.7, which means that
358 installing this release on an existing distribution shall not
359 break any working desktop.
David Turnere9a47192006-02-28 09:26:58 +0000360
Werner Lemberg59939242006-01-31 20:17:42 +0000361 - FreeType's build mechanism has been redesigned. With GNU make
362 it is now sufficient in most cases to edit two files:
363 `modules.cfg', to select the library components, and the
364 configuration file `include/freetype/config/ftoption.h' (which
365 can be copied to the objects directory). Removing unused module
366 directories to prevent its compilation and editing
367 `include/freetype/config/ftmodule.h' is no longer necessary.
368
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000369 - The LIGHT hinting algorithm produces more pleasant results.
370 Also, using the FT_LOAD_TARGET_LIGHT flags within FT_Load_Glyph
Werner Lemberg40917862006-04-01 18:49:07 +0000371 always forces auto-hinting, as a special exception. This allows
372 you to experiment with it even if you have enabled the TrueType
David Turnercf603712006-04-01 16:22:06 +0000373 bytecode interpreter in your build.
374
375 - The auto hinter now employs a new algorithm for CJK fonts, based
376 on Akito Hirai's patch. Note that this only works for fonts
377 with a Unicode charmap at the moment.
David Turnere6bb9532005-12-23 13:32:06 +0000378
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000379 - The following callback function types have changed slightly (by
Werner Lemberg49f4d342005-06-16 19:07:08 +0000380 adding the `const' keyword where appropriate):
381
382 FT_Outline_MoveToFunc
383 FT_Outline_LineToFunc
384 FT_Outline_ConicToFunc
385 FT_Outline_CubicToFunc
386 FT_SpanFunc
387 FT_Raster_RenderFunc
388
389 FT_Glyph_TransformFunc
390 FT_Renderer_RenderFunc
391 FT_Renderer_TransformFunc
392
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000393 Note that this doesn't affect binary backward compatibility.
Werner Lemberg49f4d342005-06-16 19:07:08 +0000394
Werner Lemberg435046b2006-01-11 10:57:42 +0000395 - On MacOS, new APIs have been added as replacements for legacy
396 APIs: `FT_New_Face_From_FSRef' for `FT_New_Face_From_FSSpec',
397 and `FT_GetFile_From_Mac_ATS_Name' for
398 `FT_GetFile_From_Mac_Name'. Legacy APIs are still available, if
399 FreeType is built without disabling them.
400
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000401 - A new API `FT_Select_Size' has been added to select a bitmap
402 strike by its index. Code using other functions to select
403 bitmap strikes should be updated to use this function.
Wu, Chia-I (吳佳一)e33dc2e2006-01-14 05:09:30 +0000404
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000405 - A new API `FT_Get_SubGlyph_Info' has been added to retrieve
Werner Lemberg40917862006-04-01 18:49:07 +0000406 subglyph data. This can be used by rogue clients which used to
David Turnercf603712006-04-01 16:22:06 +0000407 access the internal headers to get the corresponding data.
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000408
409 - In 2.1.10, the behaviour of `FT_Set_Pixel_Sizes' was changed for
Werner Lemberge88d24c2006-02-28 21:49:54 +0000410 BDF/PCF fonts, and only for them. This causes inconsistency.
411 In this release, we undo the change. The intent of the change
Wu, Chia-I (吳佳一)e33dc2e2006-01-14 05:09:30 +0000412 in 2.1.10 is to allow size selection through real dimensions,
413 which can now be done through `FT_Request_Size'.
414
Werner Lemberge88d24c2006-02-28 21:49:54 +0000415 - Some security issues were discovered and fixed in the CFF and
416 Type 1 loader, causing crashes of FreeType by malformed font
417 files.
418
Suzuki, Toshiya (鈴木俊哉)f8d16cc2006-01-11 09:28:38 +0000419
Werner Lemberg49f4d342005-06-16 19:07:08 +0000420 III. MISCELLANEOUS
421
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000422 - The documentation for FT_LOAD_TARGET_XXX and FT_RENDER_MODE_XXX
423 values now better reflects its usage and differences: One set is
David Turnerdad2a2d2006-03-20 11:48:13 +0000424 used to specify the hinting algorithm, the other to specify the
425 pixel rendering mode.
Werner Lemberge88d24c2006-02-28 21:49:54 +0000426
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000427 - `FT_New_Face' and `FT_New_Face_From_FSSpec' in ftmac.c have been
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000428 changed to count supported scalable faces (sfnt, LWFN) only, and
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000429 to return the number of available faces via face->num_faces.
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000430 Unsupported bitmap faces (fbit, NFNT) are ignored.
Suzuki, Toshiya (鈴木俊哉)53be6e92005-12-23 12:22:46 +0000431
Werner Lemberg435046b2006-01-11 10:57:42 +0000432 - builds/unix/configure has been improved for MacOS X. It now
433 automatically checks available functions in Carbon library, and
434 prepare to use newest functions by default. Options to specify
435 the dependencies of each Carbon APIs (FSSpec, FSRef, old/new
436 QuickDraw, ATS) are available too. By manual disabling of all
437 QuickDraw functionality, FreeType can be built without
438 `deprecated function' warnings on MacOS 10.4.x, but
439 FT_GetFile_Mac_Name in ftmac.c then is changed to a dummy
440 function, and returns an `unimplemented' error. For details see
441 builds/mac/README.
Suzuki, Toshiya (鈴木俊哉)f8d16cc2006-01-11 09:28:38 +0000442
Werner Lemberge88d24c2006-02-28 21:49:54 +0000443 - SFNT cmap handling has been improved, mainly to run much faster
David Turnere9a47192006-02-28 09:26:58 +0000444 with CJK fonts.
Werner Lemberg7734a1f2005-10-05 15:18:29 +0000445
Werner Lembergf99d8462006-02-26 17:50:59 +0000446 - A new function `FT_Get_TrueType_Engine_Type (declared in
447 `FT_MODULE_H') is provided to determine the status of the
448 TrueType bytecode interpreter compiled into the library
449 (patented, unpatented, unimplemented).
Werner Lemberg6cdab922006-01-08 22:34:01 +0000450
Wu, Chia-I (吳佳一)ea1e8d32006-01-15 15:01:45 +0000451 - Vertical metrics of glyphs are synthesized if the font does not
452 provide such information. You can tell whether the metrics are
453 synthesized or not by checking the FT_FACE_FLAG_VERTICAL flag of
454 the face.
455
Werner Lemberg7b33dca2005-06-23 20:31:48 +0000456 - The demo programs `ftview' and `ftstring' have been rewritten
Werner Lemberg1639c792006-05-06 16:44:58 +0000457 for better readability. `ftview' has a new switch `-p' to test
458 FT_New_Memory_Face (instead of FT_New_Face).
Wu, Chia-I (吳佳一)87f9bfc2005-06-22 03:56:14 +0000459
Werner Lemberg2752bd12005-08-22 07:11:31 +0000460 - FreeType now honours bit 1 in the `head' table of TrueType fonts
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000461 (meaning `left sidebearing point at x=0'). This helps with some
462 buggy fonts.
Werner Lemberg2752bd12005-08-22 07:11:31 +0000463
Werner Lembergb3feb802005-09-23 07:40:28 +0000464 - Rudimentary support for Adobe's new `SING Glyphlet' format. See
465
466 http://www.adobe.com/products/indesign/sing_gaiji.html
467
468 for more information.
Werner Lemberg49f4d342005-06-16 19:07:08 +0000469
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000470 - The `ftdump' program from the `ft2demos' bundle now shows some
471 information about charmaps. It also supports a new switch `-v'
Werner Lembergb797fdb2005-11-30 08:48:32 +0000472 to increase verbosity.
473
Wu, Chia-I (吳佳一)f9a69132006-02-11 12:12:02 +0000474 - Better AFM support. This includes track kerning support.
475
Wu, Chia-I (吳佳一)f9a69132006-02-11 12:12:02 +0000476
Werner Lemberg49f4d342005-06-16 19:07:08 +0000477======================================================================
478
Werner Lemberg94168f02006-05-11 07:07:09 +0000479CHANGES BETWEEN 2.1.10 and 2.1.9
Werner Lembergd232f592004-08-02 05:38:33 +0000480
481 I. IMPORTANT BUG FIXES
482
483 - The size comparison for BDF and PCF files could fail sometimes.
484
485 - Some CFF files were still not loaded correctly. Patch from
486 Derek Noonburg.
487
488 - The stroker still had some serious bugs.
489
Werner Lemberg33febc02004-10-09 07:07:43 +0000490 - Boris Letocha fixed a bug in the TrueType interpreter: The
491 NPUSHW instruction wasn't skipped correctly in IF clauses. Some
492 fonts like `Helvetica 75 Bold' failed.
493
Werner Lemberg4d1550e2004-11-19 14:12:48 +0000494 - Another serious bug in handling TrueType hints caused many
495 distortions. It has been introduced in version 2.1.8, and it is
496 highly recommended to upgrade.
Werner Lembergb9ff4152004-11-19 10:35:52 +0000497
Werner Lembergc9114b92005-02-10 08:18:27 +0000498 - FreeType didn't properly parse empty Type 1 glyphs.
David Turnere6bb9532005-12-23 13:32:06 +0000499
Werner Lembergebf55852005-03-16 01:49:54 +0000500 - An unbound dynamic buffer growth was fixed in the PFR loader.
David Turnere6bb9532005-12-23 13:32:06 +0000501
Werner Lembergebf55852005-03-16 01:49:54 +0000502 - Several bugs have been fixed in the cache sub-system.
David Turner58609c42005-03-15 23:31:48 +0000503
Werner Lembergebf55852005-03-16 01:49:54 +0000504 - FreeType behaved incorrectly when resizing two distinct but very
505 close character pixel sizes through `FT_Set_Char_Size' (Savannah
506 bug #12263).
David Turnere6bb9532005-12-23 13:32:06 +0000507
Werner Lembergebf55852005-03-16 01:49:54 +0000508 - The auto-hinter didn't work properly for fonts without a Unicode
509 charmap -- it even refused to load the glyphs.
Werner Lembergc9114b92005-02-10 08:18:27 +0000510
Werner Lembergd232f592004-08-02 05:38:33 +0000511
512 II. IMPORTANT CHANGES
513
Werner Lembergebf55852005-03-16 01:49:54 +0000514 - Many fixes have been applied to drastically reduce the amount of
515 heap memory used by FreeType, especially when using
516 memory-mapped font files (which is the default on Unix systems
517 which support them).
David Turner58609c42005-03-15 23:31:48 +0000518
Werner Lemberga37745b2005-03-23 16:45:24 +0000519 - The auto-hinter has been replaced with a new module, called the
520 `auto-fitter'. It consumes less memory than its predecessor,
521 and it is prepared to support non-latin scripts better in next
522 releases.
David Turner58609c42005-03-15 23:31:48 +0000523
Werner Lembergd232f592004-08-02 05:38:33 +0000524 - George Williams contributed code to read kerning data from PFM
525 files.
526
527 - FreeType now uses the TT_NAME_ID_PREFERRED_FAMILY and
528 TT_NAME_ID_PREFERRED_SUBFAMILY strings (if available) for
529 setting family and style in SFNT fonts (patch from Kornfeld
530 Eliyahu Peter).
531
Werner Lemberg17439422004-08-11 05:25:37 +0000532 - A new API `FT_Sfnt_Table_Info' (in FT_TRUETYPE_TABLES_H) has
533 been added to retrieve name and size information of SFNT tables.
534
Werner Lembergee95b6f2004-09-10 14:39:00 +0000535 - A new API `FT_OpenType_Validate' (in FT_OPENTYPE_VALIDATE_H) has
536 been added to validate OpenType tables (BASE, GDEF, GPOS, GSUB,
537 JSTF). After validation it is no longer necessary to check
Werner Lemberg33febc02004-10-09 07:07:43 +0000538 for errors in those tables while accessing them.
Werner Lembergee95b6f2004-09-10 14:39:00 +0000539
Werner Lemberg82b71922005-06-02 07:12:05 +0000540 Note that this module might be moved to another library in the
541 future to avoid a tight dependency between FreeType and the
542 OpenType specification.
543
Werner Lembergf2438e12004-12-14 16:01:29 +0000544 - A new API in FT_BITMAP_H (`FT_Bitmap_New', `FT_Bitmap_Convert',
Werner Lembergafb2ba52005-05-25 05:51:01 +0000545 `FT_Bitmap_Copy', `FT_Bitmap_Embolden', `FT_Bitmap_Done') has
546 been added. Its use is to convert an FT_Bitmap structure in
547 1bpp, 2bpp, 4bpp, or 8bpp format into another 8bpp FT_Bitmap,
548 probably using a different pitch, and to further manipulate it.
549
550 - A new API `FT_Outline_Embolden' (in FT_OUTLINE_H) gives finer
551 control how outlines are embolded.
552
553 - `FT_GlyphSlot_Embolden' (in FT_SYNTHESIS_H) now handles bitmaps
554 also (code contributed by Chia I Wu). Note that this function
555 is still experimental and may be replaced with a better API.
Werner Lembergf2438e12004-12-14 16:01:29 +0000556
Werner Lemberga76108b2005-04-03 20:11:42 +0000557 - The method how BDF and PCF bitmap fonts are accessed has been
558 refined. Formerly, FT_Set_Pixel_Sizes and FT_Set_Char_Size
559 were synonyms in FreeType's BDF and PCF interface. This has
560 changed now. FT_Set_Pixel_Sizes should be used to select the
561 actual font dimensions (the `strike', which is the sum of the
562 `FONT_ASCENT' and `FONT_DESCENT' properties), while
563 FT_Set_Char_Size selects the `nominal' size (the `PIXELSIZE'
564 property). In both functions, the width parameter is ignored.
565
Werner Lembergebf55852005-03-16 01:49:54 +0000566
Werner Lembergf2438e12004-12-14 16:01:29 +0000567 III. MISCELLANEOUS
568
569 - The BDF driver no longer converts all returned bitmaps with a
570 depth of 2bpp or 4bpp to a depth of 8bpp. The documentation has
571 not mentioned this explicitly, but implementors might have
572 relied on this after looking into the source files.
573
Werner Lembergc9114b92005-02-10 08:18:27 +0000574 - A new option `--ftversion' has been added to freetype-config to
575 return the FreeType version.
576
Werner Lemberga37745b2005-03-23 16:45:24 +0000577 - The memory debugger has been updated to dump allocation
578 statistics on all allocation sources in the library. This is
579 useful to spot greedy allocations when loading and processing
580 fonts.
David Turner58609c42005-03-15 23:31:48 +0000581
Werner Lemberga37745b2005-03-23 16:45:24 +0000582 - We removed a huge array of constant pointers to constant strings
583 in the `psnames' module. The problem was that compilations in
584 PIC mode (i.e., when generating a Unix shared object/dll) put
585 the array into the non-shared writable section of the library
David Turner58609c42005-03-15 23:31:48 +0000586 since absolute pointers are not relocatable by nature.
David Turnere6bb9532005-12-23 13:32:06 +0000587
Werner Lemberga37745b2005-03-23 16:45:24 +0000588 This reduces the memory consumption by approximately 16KByte per
589 process linked to FreeType. We now also store the array in a
590 compressed form (as a trie) which saves about 20KByte of code as
591 well.
David Turnerdb3faff2003-09-11 19:58:19 +0000592
Werner Lemberge623bfa2005-05-19 13:51:26 +0000593 - Kirill Smelkov provided patches to make src/raster/ftraster.c
Werner Lembergf9fccbe2005-05-19 07:20:24 +0000594 compile stand-alone again.
595
Werner Lembergebf55852005-03-16 01:49:54 +0000596
597======================================================================
598
Werner Lemberg94168f02006-05-11 07:07:09 +0000599CHANGES BETWEEN 2.1.9 and 2.1.8
Werner Lemberge95365b2004-04-24 14:43:37 +0000600
601 I. IMPORTANT BUG FIXES
602
603 - The function `FT_Get_CharMap_Index' was only declared, without
604 any real code. For consistency, it has been renamed to
605 `FT_Get_Charmap_Index'. (This function is needed to implement
606 cmap caches.)
607
Werner Lemberg7d62f522004-06-04 22:30:10 +0000608 - `FT_Outline_Get_BBox' sometimes returned incorrect values for
Werner Lemberg8ef41832004-06-22 12:28:17 +0000609 conic outlines (e.g., for TrueType fonts).
Werner Lemberg7d62f522004-06-04 22:30:10 +0000610
611 - Handling of `bhed' table has been fixed.
Werner Lemberge95365b2004-04-24 14:43:37 +0000612
Werner Lemberg11785f52004-06-21 23:32:31 +0000613 - The TrueType driver with enabled byte code interpreter sometimes
614 returned artifacts due to incorrect rounding. This bug has been
615 introduced after version 2.1.4.
616
Werner Lemberg8ef41832004-06-22 12:28:17 +0000617 - The BDF driver dropped the last glyph in the font.
618
619 - The BDF driver now uses the DEFAULT_CHAR property (if available)
620 to select a glyph shape for the undefined glyph.
621
Werner Lemberg43f0e262004-07-17 16:45:21 +0000622 - The stroker failed for closed outlines and single points.
623
Werner Lemberg11785f52004-06-21 23:32:31 +0000624
Werner Lembergcdb6e702004-04-26 08:09:30 +0000625 II. IMPORTANT CHANGES
626
627 - George Williams contributed code to handle Apple's font
628 distortion technology found in GX fonts (`avar', `cvar', `fvar',
629 and `gvar' tables; the Multiple Masters API has been slightly
Werner Lemberg7d62f522004-06-04 22:30:10 +0000630 extended to cope with the new functionality).
631
Werner Lembergfefd8742004-06-12 13:21:20 +0000632 - The `FT_GlyphSlotRec' structure has been extended: The elements
Werner Lemberg7d62f522004-06-04 22:30:10 +0000633 `lsb_delta' and `rsb_delta' give the difference between hinted
634 and unhinted left and right side bearings if autohinting is
635 active. Using those values can improve the inter-letter spacing
Werner Lembergfefd8742004-06-12 13:21:20 +0000636 considerably. See the documentation of `FT_GlyphSlotRec' and
Werner Lemberg7d62f522004-06-04 22:30:10 +0000637 the `ftstring' demo program how to use it.
Werner Lembergcdb6e702004-04-26 08:09:30 +0000638
Werner Lemberg43f0e262004-07-17 16:45:21 +0000639 - Loading TrueType and Type 1 fonts has been made much faster.
640
641 - The stroker is no longer experimental (but the cache subsystem
642 still is).
643
Werner Lembergcdb6e702004-04-26 08:09:30 +0000644
Werner Lembergeab92f12004-04-29 05:59:49 +0000645 III. MISCELLANEOUS
646
647 - A new documentation file `formats.txt' describes various font
648 formats supported (and not supported) by FreeType.
649
650
Werner Lemberge95365b2004-04-24 14:43:37 +0000651======================================================================
652
Werner Lemberg94168f02006-05-11 07:07:09 +0000653CHANGES BETWEEN 2.1.8 and 2.1.7
Werner Lemberg51ecb692003-11-13 10:19:27 +0000654
655 I. IMPORTANT BUG FIXES
656
Werner Lemberg4ff243d2003-11-25 09:30:57 +0000657 - The native TrueType hinter contained some bugs which prevented
658 some fonts to be rendered correctly, most notably Legendum.otf.
659
Werner Lembergba80d612004-04-16 09:56:30 +0000660 - The PostScript hinter now produces improved results.
Werner Lemberg460355a2004-02-24 07:52:45 +0000661
Werner Lemberg4ff243d2003-11-25 09:30:57 +0000662 - The linear advance width and height values were incorrectly
663 rounded, making them virtually unusable if not loaded with
664 FT_LOAD_LINEAR_DESIGN.
665
Werner Lemberg80cfbd72003-12-26 07:26:08 +0000666 - Indexing CID-keyed CFF fonts is now working: The glyph index is
667 correctly treated as a CID, similar to FreeType's CID driver
Werner Lemberg460355a2004-02-24 07:52:45 +0000668 module. Note that CID CMap support is still missing.
Werner Lembergb36d4a52003-12-12 15:38:39 +0000669
Werner Lembergc78df1e2004-04-21 07:36:38 +0000670 - The FT_FACE_FLAGS_GLYPH_NAMES flag is now set correctly for all
671 font formats.
Werner Lemberg7f1458a2003-12-17 21:57:56 +0000672
Werner Lemberg80cfbd72003-12-26 07:26:08 +0000673 - Some subsetted Type 1 fonts weren't parsed correctly. This bug
Werner Lemberg9cef4792004-02-08 09:07:08 +0000674 has been introduced in 2.1.7. In summary, the Type 1 parser has
675 become more robust.
Werner Lemberg48b6ddb2003-12-22 23:01:20 +0000676
Werner Lembergc78df1e2004-04-21 07:36:38 +0000677 - Non-decimal numbers weren't parsed correctly in PS fonts.
678
Werner Lemberg48b6ddb2003-12-22 23:01:20 +0000679 - The WinFNT driver now correctly reports FT_ENCODING_NONE for all
Werner Lemberg80cfbd72003-12-26 07:26:08 +0000680 but one encoding. Use the new FT_WinFNT_ID_XXX values together
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000681 with `FT_Get_WinFNT_Header' to get the WinFNT charset ID.
Werner Lemberg48b6ddb2003-12-22 23:01:20 +0000682
Werner Lemberg9914b972004-01-02 16:33:04 +0000683 - The descender metrics (face->size->metrics.descender) for WinFNT
684 bitmap fonts had the wrong sign.
685
Werner Lembergc78df1e2004-04-21 07:36:38 +0000686 - The (emulated) `seac' support for CFF fonts was broken.
Werner Lemberg5972e9a2004-02-01 00:49:56 +0000687
Werner Lembergc78df1e2004-04-21 07:36:38 +0000688 - The `flex' operator didn't work for CFF fonts.
Werner Lemberg5972e9a2004-02-01 00:49:56 +0000689
Werner Lemberg460355a2004-02-24 07:52:45 +0000690 - PS glyphs which use the `hintmask' operator haven't been
691 rendered correctly in some cases.
Werner Lemberga5724ef2004-02-21 16:47:20 +0000692
Werner Lemberge0c50442004-02-08 16:30:37 +0000693 - Metrics for BDF and PCF bitmap font formats have been fixed.
694
Werner Lembergba80d612004-04-16 09:56:30 +0000695 - Autohinting is now disabled for glyphs which are vertically
696 distorted or mirrored (using a transformation matrix). This
697 fixes a bug which produced zero-height glyphs.
698
Werner Lemberg53a1edd2004-02-08 22:45:48 +0000699 - The `freetype-config' script now handles --prefix and
700 --exec-prefix correctly; it also returns the proper --rpath (or
701 -R) value if FreeType has been built as a shared library.
702
Werner Lemberg51ecb692003-11-13 10:19:27 +0000703
704 II. IMPORTANT CHANGES
705
706 - Both PCF and BDF drivers now handle the SETWIDTH_NAME and
707 ADD_STYLE_NAME properties. Values are appended to
708 face->style_name; example: `Bold SemiCondensed'.
709
Werner Lembergdfa46192004-03-05 09:26:24 +0000710 - The PCF driver now handles bitmap fonts compressed with the LZW
711 algorithm (extension .pcf.Z, compressed with `compress').
712
Werner Lemberg7f1458a2003-12-17 21:57:56 +0000713 - A new API function `FT_Get_CMap_Language_ID' (declared in
714 `tttables.h') is available to get the language ID of a
715 TrueType/SFNT cmap.
716
Werner Lembergef512e32004-01-23 19:52:40 +0000717 - The hexadecimal format of data after the `StartData' command in
718 CID-keyed Type 1 fonts is now supported. While this can't occur
719 in file-based fonts, it can happen in document-embedded
720 resources of PostScript documents.
721
Werner Lembergdfa46192004-03-05 09:26:24 +0000722 - Embedded bitmaps in SFNT-based CFF fonts are now supported.
723
Werner Lemberg460355a2004-02-24 07:52:45 +0000724 - A simple API is now available to control FreeType's tracing
725 mechanism if compiled with FT_DEBUG_LEVEL_TRACE. See the file
726 `ftdebug.h' for more details.
727
Werner Lemberg675431b2004-02-25 21:17:49 +0000728 - YAMATO Masatake contributed improved handling of MacOS resource
729 forks on non-MacOS platforms (for example, Linux can mount MacOS
730 file systems).
731
Werner Lemberge2455ba2004-02-26 21:56:27 +0000732 - Support for MacOS has been improved; there is now a new function
733 `FT_New_Face_From_FSSpec' similar to `FT_New_Face' except that
734 it accepts an FSSpec instead of a path.
735
Werner Lemberg80cfbd72003-12-26 07:26:08 +0000736 - The cache sub-system has been rewritten.
737
738 - There is now support for deinstallation of faces.
739
740 - A new API function `FTC_Manager_RemoveFaceID' has been added
741 to delete all `idle' nodes that correspond to a given
742 FTC_FaceID. All `locked' nodes (i.e., those with a reference
743 count > 0), will be modified to prevent them from appearing in
744 further lookups (they will be cleaned normally when their
745 reference count reaches 0).
746
747 - There is now support for point scaling (i.e., providing
748 character sizes in points + dpis, instead of pixels).
749
750 - Three abstract cache classes are now available:
751
752 FTC_GCache: Used to store one glyph item per cache node,
753 with the ability to group common attributes into
754 `families'. This replaces the old
755 FTC_GlyphCache class.
756
757 FTC_ICache: Used to store one FT_Glyph per cache node. This
758 extends FTC_GCache. Family definition, family
759 comparison, and glyph loading are however left
760 to sub-classes.
761
762 FTC_SCache: Used to store up to 16 small bitmaps per cache
763 node. This extends FTC_GCache. Family
764 definition, family comparison and glyph loading
765 are however left to sub-classes.
766
767 - The file `src/cache/ftcbasic.c' implements:
768
769 FTC_ImageCache: Extends FTC_ICache; implements family
770 definitions and glyph loading similar to the
771 old API.
772
773 FTC_SBitCache: Extends FTC_SCache, implements family
774 definitions and glyph loading similar to the
775 old API
776
777 Client applications should be able to extend FTC_GCache,
778 FTC_ICache, or FTC_SCache much more easily (i.e., less code to
779 write, and less callbacks). For example, one could envision
780 caches that are capable of storing transformed (obliqued),
781 stroked, emboldened, or colored glyph images. Use
782 `ftcbasic.c' as an example.
783
784 - All public APIs are now in `include/freetype/ftcache.h', (to
785 be accessed as `FT_CACHE_H'). The contents of
786 `include/freetype/cache/' is only needed by applications that
787 wish to implement their own caches.
788
789 - There were some major performance improvements through the use
790 of various programming tricks. Cache hits are up to 70%
791 faster than in the old code.
792
Werner Lembergb4142d52007-01-17 12:45:26 +0000793 - The FTC_CMapCache has been simplified. Charmaps can only be
Werner Lemberg80cfbd72003-12-26 07:26:08 +0000794 accessed by index right now. There is also a new API named
795 `FT_Charmap_GetIndex' for this purpose.
796
797 - The demo programs have been updated to the new code. The
798 previous versions will not work with the current one.
799
Werner Lemberg2630e542004-03-20 14:26:38 +0000800 - Using an invalid face index in FT_Open_Face and friends now
801 causes an error even if the font contains a single face only.
802
Werner Lemberg51ecb692003-11-13 10:19:27 +0000803
Werner Lemberge1075142003-12-16 06:04:44 +0000804 III. MISCELLANEOUS
805
Werner Lemberg110246c2006-09-26 21:55:44 +0000806 - Wolfgang Domröse contributed support files for building FreeType
Werner Lembergb066c152003-12-16 06:42:11 +0000807 on the Atari using the PureC compiler. Note that the Atari is a
808 16bit platform.
Werner Lemberge1075142003-12-16 06:04:44 +0000809
Werner Lemberg9cef4792004-02-08 09:07:08 +0000810 - Vitaliy Pasternak contributed project files for VS.NET 2003.
811
Werner Lemberge1075142003-12-16 06:04:44 +0000812
Werner Lemberg51ecb692003-11-13 10:19:27 +0000813======================================================================
814
Werner Lemberg94168f02006-05-11 07:07:09 +0000815CHANGES BETWEEN 2.1.7 and 2.1.6
Werner Lemberge42dbce2003-11-09 08:37:14 +0000816
817 I. IMPORTANT BUG FIXES
818
819 - Updated to newest libtool version, fixing build problems on
820 various platforms.
821
822 - On Unix platforms, `make install' didn't copy the correct
823 `ftconfig.h' file.
824
825 Note that version 2.1.7 contains the same library C source code as
826 version 2.1.6.
827
828
829======================================================================
830
Werner Lemberg94168f02006-05-11 07:07:09 +0000831CHANGES BETWEEN 2.1.6 and 2.1.5
David Turnerdb3faff2003-09-11 19:58:19 +0000832
833 I. IMPORTANT BUG FIXES
834
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000835 - The PFR font driver didn't load kerning tables correctly, and
836 the functions in FT_PFR_H didn't work at all.
David Turnerdb3faff2003-09-11 19:58:19 +0000837
Werner Lemberg99ee4992003-09-20 17:23:36 +0000838 - Type 1 font files in binary format (PFB) with an end-of-file
839 indicator weren't accepted by the FreeType engine.
840
Werner Lemberg4795b362003-10-23 16:24:10 +0000841 - Fonts which contain /PaintType and /StrokeWidth no longer cause
842 a segfault. This bug has been introduced in version 2.1.5.
843
844 - Fonts loaded with FT_LOAD_RENDER no longer cause strange
845 results. This bug has been introduced in version 2.1.5.
846
847 - Some Windows (bitmap) FNT/FON files couldn't be handled
848 correctly.
849
Werner Lemberge42dbce2003-11-09 08:37:14 +0000850
David Turnerdb3faff2003-09-11 19:58:19 +0000851 II. IMPORTANT CHANGES
852
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000853 - The internal module API has been heavily changed in favor of
854 massive simplifications within the font engine. This also means
855 that authors of third-party modules must adapt their code to the
Werner Lemberge42dbce2003-11-09 08:37:14 +0000856 new scheme.
857
858 NOTE: THE NEW SCHEME IS NOT COMPLETED YET. PLEASE WAIT UNTIL A
859 FINAL ANNOUNCEMENT!
David Turnerdb3faff2003-09-11 19:58:19 +0000860
Werner Lemberg4795b362003-10-23 16:24:10 +0000861 - The PostScript parser has been enhanced to handle comments and
862 strings correctly. Additionally, more syntax forms are
863 recognized.
864
Werner Lemberge42dbce2003-11-09 08:37:14 +0000865 - Added the optional unpatented hinting system for TrueType. It
866 allows typefaces which need hinting to produce correct glyph
867 forms (e.g., Chinese typefaces from Dynalab) to work acceptably
868 without infringing Apple patents. This system is compiled only
869 if TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING is defined in
870 ftoption.h (activated by default).
David Turnerdb3faff2003-09-11 19:58:19 +0000871
Werner Lemberge42dbce2003-11-09 08:37:14 +0000872
873 III. MISCELLANEOUS
874
875 - There is now a guard in the public header files to protect
876 against inclusion of freetype.h from FreeType 1.
877
878 - Direct inclusion of freetype.h and other public header files no
879 longer works. You have to use the documented scheme
880
881 #include <ft2build.h>
882 #include FT_FREETYPE_H
883
884 to load freetype.h with a symbolic name. This protects against
885 renaming of public header files (which shouldn't happen but
886 actually has, avoiding two public header files with the same
887 name).
888
889
890======================================================================
David Turner7543f392003-09-01 21:18:03 +0000891
Werner Lemberg94168f02006-05-11 07:07:09 +0000892CHANGES BETWEEN 2.1.5 and 2.1.4
Werner Lembergf9d864a2003-07-25 05:57:21 +0000893
Werner Lembergf9d864a2003-07-25 05:57:21 +0000894 I. IMPORTANT BUG FIXES
895
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000896 - Parsing the /CIDFontName field now removes the leading slash to
Werner Lembergf9d864a2003-07-25 05:57:21 +0000897 be in sync with other font drivers.
898
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000899 - gzip support was buggy. Some fonts could not be read.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000900
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000901 - Fonts which have nested subglyphs more than one level deep no
Werner Lembergf9d864a2003-07-25 05:57:21 +0000902 longer cause a segfault.
903
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000904 - Creation of synthetic cmaps for fonts in CFF format was broken
Werner Lembergf9d864a2003-07-25 05:57:21 +0000905 partially.
906
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000907 - Numeric font dictionary entries for synthetic fonts are no
908 longer overwritten.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000909
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000910 - The font matrix wasn't applied to the advance width for Type1,
Werner Lemberg4795b362003-10-23 16:24:10 +0000911 CID, and CFF fonts. This caused problems when loading certain
912 synthetic Type 1 fonts like `Helvetica Narrow'.
Werner Lemberge8ff7692003-08-06 04:40:48 +0000913
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000914 - The test for the charset registry in BDF and PCF fonts is now
Werner Lembergf9d864a2003-07-25 05:57:21 +0000915 case-insensitive.
916
Werner Lemberg4795b362003-10-23 16:24:10 +0000917 - FT_Vector_Rotate sometimes returned strange values due to
918 rounding errors.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000919
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000920 - The PCF driver now returns the correct number of glyphs
921 (including an artificial `notdef' glyph at index 0).
Werner Lembergf9d864a2003-07-25 05:57:21 +0000922
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000923 - FreeType now supports buggy CMaps which are contained in many
924 CJK fonts from Dynalab.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000925
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000926 - Opening an invalid font on a Mac caused a segfault due to
Werner Lembergf9d864a2003-07-25 05:57:21 +0000927 double-freeing memory.
928
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000929 - BDF fonts with more than 32768 glyphs weren't supported
930 properly.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000931
932
933 II. IMPORTANT CHANGES
934
Werner Lembergf9d864a2003-07-25 05:57:21 +0000935 - Accessing bitmap font formats has been synchronized. To do that
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000936 the FT_Bitmap_Size structure has been extended to contain new
Werner Lembergf9d864a2003-07-25 05:57:21 +0000937 fields `size', `x_ppem', and `y_ppem'.
938
939 - The FNT driver now returns multiple faces, not multiple strikes.
940
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000941 - The `psnames' module has been updated to the Adobe Glyph List
Werner Lembergf9d864a2003-07-25 05:57:21 +0000942 version 2.0.
943
944 - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
945
946 - The algorithm for guessing the font style has been improved.
947
Werner Lemberg7f1458a2003-12-17 21:57:56 +0000948 - For fonts in SFNT format, root->height is no longer increased if
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000949 the line gap is zero. There exist fonts (containing e.g. form
950 drawing characters) which intentionally have a zero line gap
951 value.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000952
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000953 - ft_glyph_bbox_xxx flags are now deprecated in favour of
Werner Lembergf9d864a2003-07-25 05:57:21 +0000954 FT_GLYPH_BBOX_XXX.
955
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000956 - ft_module_xxx flags are now deprecated in favour of
957 FT_MODULE_XXX.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000958
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000959 - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now
960 deprecated in favour of
961 FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB} -- those encodings
962 are not specific to Microsoft.
Werner Lemberged2a8df2003-09-01 07:06:06 +0000963
Werner Lembergf9d864a2003-07-25 05:57:21 +0000964
965 III. MISCELLANEOUS
966
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000967 - The autohinter has been further improved; for example, `m'
968 glyphs now retain its vertical symmetry.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000969
Werner Lembergf9d864a2003-07-25 05:57:21 +0000970 - Partial support of Mac fonts on non-Mac platforms.
971
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000972 - `make refdoc' (after first `make') builds the HTML
973 documentation. You need Python for this.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000974
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000975 - The make build system should now work more reliably on DOS-like
Werner Lembergf9d864a2003-07-25 05:57:21 +0000976 platforms.
977
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000978 - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has
979 been added.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000980
981 - Better VMS build support.
982
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000983 - Support for the pkg-config package by providing a `freetype.pc'
Werner Lembergf9d864a2003-07-25 05:57:21 +0000984 file.
985
986 - New configure option --with-old-mac-fonts for Darwin.
987
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000988 - Some source files have been renamed (mainly to fit into the 8.3
Werner Lembergf9d864a2003-07-25 05:57:21 +0000989 naming scheme).
990
991
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000992======================================================================
Werner Lembergf9d864a2003-07-25 05:57:21 +0000993
Werner Lemberg94168f02006-05-11 07:07:09 +0000994CHANGES BETWEEN 2.1.4 and 2.1.3
David Turner9acb09e2003-01-24 08:30:36 +0000995
996 I. IMPORTANT BUG FIXES
997
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000998 - Updated to newest libtool version, fixing build problems on
999 various platforms.
David Turner9acb09e2003-01-24 08:30:36 +00001000
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001001 - A fix in the Gzip stream reader: It couldn't read certain .gz
1002 files properly due to a small typo. In certain cases, FreeType
1003 could also loop endlessly when trying to load tiny gzipped
1004 files.
David Turner9acb09e2003-01-24 08:30:36 +00001005
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001006 - The configure script now tries to use the system-wide zlib when
1007 it finds one (instead of the copy found in src/gzip). And
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001008 `freetype-config' has been updated to return relevant flags in
1009 this case when invoked with `--libs' (e.g. `-lzlib').
David Turner9acb09e2003-01-24 08:30:36 +00001010
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001011 - Certain fonts couldn't be loaded by 2.1.3 because they lacked a
1012 Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously
1013 rejected them.
David Turner9acb09e2003-01-24 08:30:36 +00001014
Werner Lemberga16c4a72003-04-21 13:30:27 +00001015 - The CFF loader was modified to accept fonts which only contain a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001016 subset of their reference charset. This prevented the correct
1017 use of PDF-embedded fonts.
David Turner9acb09e2003-01-24 08:30:36 +00001018
Werner Lemberga16c4a72003-04-21 13:30:27 +00001019 - The logic to detect Unicode charmaps has been modified. This is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001020 required to support fonts which include both 16-bit and 32-bit
1021 charmaps (like very recent asian ones) using the new 10 and 12
1022 SFNT formats.
David Turner9acb09e2003-01-24 08:30:36 +00001023
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001024 - The TrueType loader now limits the depth of composite glyphs.
1025 This is necessary to prevent broken fonts to break the engine by
1026 blowing the stack with recursive glyph definitions.
David Turner9acb09e2003-01-24 08:30:36 +00001027
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001028 - The CMap cache is now capable of managing UCS-4 character codes
1029 that are mapped through extended charmaps in recent
1030 TrueType/OpenType fonts.
David Turnerb848b682003-02-25 21:44:11 +00001031
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001032 - The cache sub-system now properly manages out-of-memory
1033 conditions instead of blindly reporting them to the caller.
1034 This means that it will try to empty the cache before restarting
1035 its allocations to see if that can help.
David Turner66cbc202003-03-20 07:04:40 +00001036
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001037 - The PFR driver didn't return the list of available embedded
1038 bitmaps properly.
David Turnerb848b682003-02-25 21:44:11 +00001039
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001040 - There was a nasty memory leak when using embedded bitmaps in
1041 certain font formats.
David Turnerb6b63372003-04-09 06:55:57 +00001042
Werner Lemberga16c4a72003-04-21 13:30:27 +00001043
David Turner9acb09e2003-01-24 08:30:36 +00001044 II. IMPORTANT CHANGES
1045
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001046 - David Chester contributed some enhancements to the auto-hinter
1047 that significantly increase the quality of its output. The
1048 Postscript hinter was also improved in several ways.
David Turner9acb09e2003-01-24 08:30:36 +00001049
Werner Lemberga16c4a72003-04-21 13:30:27 +00001050 - The FT_RENDER_MODE_LIGHT render mode was implemented.
David Turner9acb09e2003-01-24 08:30:36 +00001051
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001052 - A new API function called `FT_Get_BDF_Property' has been added
1053 to FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font
1054 files. THIS IS STILL EXPERIMENTAL, since it hasn't been
1055 properly tested yet.
David Turner9acb09e2003-01-24 08:30:36 +00001056
Werner Lemberga16c4a72003-04-21 13:30:27 +00001057 - A Windows FNT specific API has been added, mostly to access font
1058 headers. This is used by Wine.
David Turner9acb09e2003-01-24 08:30:36 +00001059
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001060 - TrueType tables without an `hmtx' table are now tolerated when
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001061 an incremental interface is used. This happens for certain
1062 Type42 fonts passed from Ghostscript to FreeType.
David Turner9acb09e2003-01-24 08:30:36 +00001063
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001064 - The PFR font driver is now capable of returning the font family
1065 and style names when they are available (instead of the sole
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001066 `FontID'). This is performed by parsing an *undocumented*
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001067 portion of the font file!
Werner Lemberga16c4a72003-04-21 13:30:27 +00001068
David Turnerb848b682003-02-25 21:44:11 +00001069
David Turner9acb09e2003-01-24 08:30:36 +00001070 III. MISCELLANEOUS
1071
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001072 - The path stroker in FT_STROKER_H has entered beta stage. It now
1073 works very well, but its interface might change a bit in the
1074 future. More on this in later releases.
David Turner9acb09e2003-01-24 08:30:36 +00001075
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001076 - The documentation for FT_Size_Metrics didn't appear properly in
1077 the API reference.
David Turner9acb09e2003-01-24 08:30:36 +00001078
Werner Lemberga16c4a72003-04-21 13:30:27 +00001079 - The file docs/VERSION.DLL has been updated to explain versioning
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001080 with FreeType (i.e., comparing release/libtool/so numbers, and
1081 how to use them in autoconf scripts).
David Turner9acb09e2003-01-24 08:30:36 +00001082
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001083 - The installation documentation has been seriously revamped.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001084 Everything is now in the `docs' directory.
Werner Lemberga16c4a72003-04-21 13:30:27 +00001085
David Turner66cbc202003-03-20 07:04:40 +00001086
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001087======================================================================
Werner Lemberga16c4a72003-04-21 13:30:27 +00001088
Werner Lemberg94168f02006-05-11 07:07:09 +00001089CHANGES BETWEEN 2.1.3 and 2.1.2
David Turner86e6a712002-08-29 23:18:56 +00001090
1091 I. IMPORTANT BUG FIXES
1092
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001093 - FT_Vector_Transform had been incorrectly modified in 2.1.2,
1094 resulting in incorrect transformations being applied (for
1095 example, rotations were processed in opposite angles).
David Turner86e6a712002-08-29 23:18:56 +00001096
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001097 - The format 8 and 12 TrueType charmap enumeration routines have
1098 been fixed (FT_Get_Next_Char returned invalid values).
David Turner86e6a712002-08-29 23:18:56 +00001099
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001100 - The PFR font driver returned incorrect advance widths if the
1101 outline and metrics resolution defined in the font file were
1102 different.
David Turner86e6a712002-08-29 23:18:56 +00001103
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001104 - FT_Glyph_To_Bitmap now returns successfully when called with an
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001105 FT_BitmapGlyph argument (it previously returned an error).
David Turner86e6a712002-08-29 23:18:56 +00001106
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001107 - A bug in the Type 1 loader that prevented valid font bounding
1108 boxes to be loaded from multiple master fonts.
David Turner86e6a712002-08-29 23:18:56 +00001109
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001110 - The SFNT validation code has been rewritten. FreeType can now
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001111 load `broken' fonts that were usable on Windows, but not with
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001112 previous versions of the library.
David Turner86e6a712002-08-29 23:18:56 +00001113
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001114 - The computation of bearings in the BDF driver has been fixed.
David Turner86e6a712002-08-29 23:18:56 +00001115
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001116 - The Postscript hinter crashed when trying to hint certain glyphs
1117 (more precisely, when trying to apply hints to an empty glyph
1118 outline).
David Turnerdb3d5c12002-09-18 07:53:22 +00001119
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001120 - The TrueType glyph loader now supports composites in `Apple
1121 format' (they differ slightly from Microsoft/OpenType ones in
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001122 the way transformation offsets are computed).
Werner Lemberg98add9e2002-09-18 11:32:12 +00001123
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001124 - FreeType was very slow at opening certain asian CID/CFF fonts,
1125 due to fixed increment in dynamic array re-allocations. This
1126 has been changed to exponential behaviour to get acceptable
1127 performance.
Werner Lemberga16c4a72003-04-21 13:30:27 +00001128
1129
David Turner86e6a712002-08-29 23:18:56 +00001130
David Turnerb0b8df62002-09-25 00:10:27 +00001131 II. IMPORTANT CHANGES
David Turner86e6a712002-08-29 23:18:56 +00001132
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001133 - The PCF driver now supports gzip-compressed font files natively.
1134 This means that you will be able to use all these bitmap fonts
1135 that come with XFree86 with FreeType (and libXft/libXft2, by
1136 extension).
David Turner6048e3d2002-11-13 23:28:08 +00001137
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001138 - The automatic and postscript hinters have both been updated.
1139 This results in a relatively important increase of rendering
Werner Lembergb4142d52007-01-17 12:45:26 +00001140 quality since many nasty defaults have been suppressed. Please
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001141 visit the web page:
David Turnerdb3d5c12002-09-18 07:53:22 +00001142
David Turner6048e3d2002-11-13 23:28:08 +00001143 http://www.freetype.org/hinting/smooth-hinting.html
David Turnerdb3d5c12002-09-18 07:53:22 +00001144
Werner Lemberg98add9e2002-09-18 11:32:12 +00001145 for additional details on this topic.
David Turnerdb3d5c12002-09-18 07:53:22 +00001146
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001147 - The `load_flags' parameter of `FT_Load_Glyph' is now an FT_Int32
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001148 (instead of just being an FT_Int). This breaks source and
1149 binary compatibility for 16bit systems only, while retaining
1150 both of them for 32 and 64 bit ones.
David Turner86e6a712002-08-29 23:18:56 +00001151
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001152 Some new flags have been added consequently:
David Turner86e6a712002-08-29 23:18:56 +00001153
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001154 FT_LOAD_NO_AUTOHINT :: Disable the use of the auto-hinter
1155 (but not native format hinters).
David Turner86e6a712002-08-29 23:18:56 +00001156
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001157 FT_LOAD_TARGET_NORMAL :: Hint and render for normal
1158 anti-aliased displays.
David Turner86e6a712002-08-29 23:18:56 +00001159
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001160 FT_LOAD_TARGET_MONO :: Hint and render for 1-bit displays.
David Turner86e6a712002-08-29 23:18:56 +00001161
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001162 FT_LOAD_TARGET_LCD :: Hint and render for horizontal RGB or
1163 BGR sub-pixel displays (like LCD
1164 screens). THIS IS STILL
1165 EXPERIMENTAL!
David Turner86e6a712002-08-29 23:18:56 +00001166
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001167 FT_LOAD_TARGET_LCD_V :: Same as FT_LOAD_TARGET_LCD, for
1168 vertical sub-pixel displays (like
1169 rotated LCD screens). THIS IS STILL
1170 EXPERIMENTAL!
David Turner86e6a712002-08-29 23:18:56 +00001171
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001172 FT_LOAD_MONOCHROME is still supported, but only affects
1173 rendering, not the hinting.
David Turner86e6a712002-08-29 23:18:56 +00001174
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001175 Note that the `ftview' demo program available in the `ft2demos'
1176 package has been updated to support LCD-optimized display on
1177 non-paletted displays (under Win32 and X11).
David Turnerb0b8df62002-09-25 00:10:27 +00001178
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001179 - The PFR driver now supports embedded bitmaps (all formats
1180 supported), and returns correct kerning metrics for all glyphs.
David Turner072f7f82002-10-05 15:00:36 +00001181
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001182 - The TrueType charmap loader now supports certain `broken' fonts
1183 that load under Windows without problems.
David Turnerb0b8df62002-09-25 00:10:27 +00001184
Werner Lembergcfd5dec2002-09-27 18:17:17 +00001185 - The cache API has been slightly modified (it's still a beta!):
David Turnerb0b8df62002-09-25 00:10:27 +00001186
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001187 - The type FTC_ImageDesc has been removed; it is now replaced
1188 by FTC_ImageTypeRec. Note that one of its fields is a
1189 `load_flag' parameter for FT_Load_Glyph.
David Turnerb0b8df62002-09-25 00:10:27 +00001190
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001191 - The field `num_grays' of FT_SBitRec has been changed to
1192 `max_grays' in order to fit within a single byte. Its
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001193 maximum value is thus 255 (instead of 256 as previously).
David Turnerb0b8df62002-09-25 00:10:27 +00001194
1195
1196 III. MISCELLANEOUS
1197
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001198 - Added support for the DESTDIR variable during `make install'.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001199 This simplifies packaging of FreeType.
David Turnerb0b8df62002-09-25 00:10:27 +00001200
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001201 - Included modified copies of the ZLib sources in `src/gzip' in
1202 order to support gzip-compressed PCF fonts. We do not use the
1203 system-provided zlib for now, though this is a probable
1204 enhancement for future releases.
David Turner6048e3d2002-11-13 23:28:08 +00001205
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001206 - The DocMaker tool used to generate the on-line API reference has
1207 been completely rewritten. It is now located in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001208 `src/tools/docmaker/docmaker.py'. Features:
David Turnerb0b8df62002-09-25 00:10:27 +00001209
1210 - better cross-referenced output
1211 - more polished output
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001212 - uses Python regular expressions (though it didn't speed the
David Turnerb0b8df62002-09-25 00:10:27 +00001213 program)
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001214 - much more modular structure, which allows for different
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001215 `backends' in order to generate HTML, XML, or whatever
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001216 format.
David Turnerb0b8df62002-09-25 00:10:27 +00001217
1218 One can regenerate the API reference by calling:
1219
1220 python src/tools/docmaker/docmaker.py \
1221 --prefix=ft2 \
1222 --title=FreeType-2.1.3 \
1223 --output=<outputdirectory>
1224 include/freetype/*.h \
1225 include/freetype/config/*.h \
1226 include/freetype/cache/*.h
1227
1228 - A new, experimental, support for incremental font loading (i.e.,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001229 loading of fonts where the glyphs are not in the font file
1230 itself, but provided by an external component, like a Postscript
1231 interpreter) has been added by Graham Asher. This is still work
1232 in progress, however.
David Turnerb0b8df62002-09-25 00:10:27 +00001233
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001234 - A new, EXPERIMENTAL, path stroker has been added. It doesn't
1235 suffer from severe rounding errors and treat bezier arcs
1236 directly. Still work in progress (i.e. not part of the official
1237 API). See the file <freetype/ftstroker.h> for some of the
1238 details.
David Turnerb0b8df62002-09-25 00:10:27 +00001239
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001240 - The massive re-formatting of sources and internal re-design is
1241 still under-way. Many internal functions, constants, and types
1242 have been renamed.
David Turnerb0b8df62002-09-25 00:10:27 +00001243
David Turner86e6a712002-08-29 23:18:56 +00001244
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001245======================================================================
David Turner86e6a712002-08-29 23:18:56 +00001246
Werner Lemberg94168f02006-05-11 07:07:09 +00001247CHANGES BETWEEN 2.1.2 and 2.1.1
David Turnerd490e372002-05-28 23:40:37 +00001248
1249 I. IMPORTANT BUG FIXES
1250
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001251 - Many font drivers didn't select a Unicode charmap by default
1252 when a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS
1253 options enabled), causing many applications to not be able to
1254 display text correctly with the 2.1.x releases.
David Turner86e6a712002-08-29 23:18:56 +00001255
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001256 - The PFR driver had a bug in its composite loading code that
1257 produces incorrectly placed accents with many fonts.
David Turner86e6a712002-08-29 23:18:56 +00001258
Werner Lemberg9cbb1662002-06-22 13:35:41 +00001259 - The Type42 driver crashed sometimes due to a nasty bug.
David Turner86e6a712002-08-29 23:18:56 +00001260
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001261 - The Type 1 custom encoding charmap didn't handle the case where
1262 the first glyph index wasn't 0.
David Turner38f8e892002-06-21 07:33:23 +00001263
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001264 - A serious typo in the TrueType composite loader produced
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001265 incorrectly placed glyphs in fonts like `Wingdings' and a few
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001266 others.
David Turner38f8e892002-06-21 07:33:23 +00001267
1268
1269 II. MISCELLANEOUS
1270
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001271 - The Win32 Visual C++ project file has been updated to include
1272 the PFR driver as well.
David Turner38f8e892002-06-21 07:33:23 +00001273
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001274 - `freetype.m4' is now installed by default by `make install' on
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001275 Unix systems.
David Turner38f8e892002-06-21 07:33:23 +00001276
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001277 - The function FT_Get_PS_Font_Info now works with CID and Type42
1278 fonts as well.
Werner Lemberg9cbb1662002-06-22 13:35:41 +00001279
David Turnera0d8abf2002-06-21 07:42:50 +00001280
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001281======================================================================
Werner Lemberg9cbb1662002-06-22 13:35:41 +00001282
Werner Lemberg94168f02006-05-11 07:07:09 +00001283CHANGES BETWEEN 2.1.1 and 2.1.0
David Turner38f8e892002-06-21 07:33:23 +00001284
1285 I. IMPORTANT BUG FIXES
1286
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001287 - The `version_info' returned by `freetype-config' in 2.1.0
1288 returned an invalid value. It now returns 9:1:3 (2.0.9 returned
1289 9:0:3).
David Turnerd490e372002-05-28 23:40:37 +00001290
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001291 - Version 2.1.0 couldn't be linked against applications on Win32
1292 and Amiga systems due to a new debug function that wasn't
1293 properly propagated to the system-specific directory in
1294 `builds'.
David Turnerd490e372002-05-28 23:40:37 +00001295
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001296 - Various MacOS and Mac OS X specific fixes.
David Turnerd490e372002-05-28 23:40:37 +00001297
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001298 - Fixed a bug in the TrueType charmap validation routines that
1299 made version 2.1.0 too restrictive -- many popular fonts have
1300 been rejected.
David Turnerd490e372002-05-28 23:40:37 +00001301
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001302 - There was still a very small difference between the monochrome
1303 glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the
1304 bytecode interpreter enabled. This was caused by an invalid
1305 flag setting in the TrueType glyph loader, making the rasterizer
Werner Lembergb4142d52007-01-17 12:45:26 +00001306 change its drop-out control mode. Now the results should
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001307 _really_ be completely identical.
David Turnerd490e372002-05-28 23:40:37 +00001308
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001309 - The TrueType name table loader has been improved to support many
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001310 popular though buggy Asian fonts. It now ignores empty name
1311 entries, invalid pointer offsets and a few other incorrect
1312 subtleties. Moreover, name strings are now loaded on demand,
1313 which reduces the memory load of many faces (e.g. the ARIAL.TTF
1314 font file contains a 10kByte name table with 70 names).
David Turnerd490e372002-05-28 23:40:37 +00001315
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001316 - Fixed a bug in the Postscript hinter that prevented family blues
David Turnerd490e372002-05-28 23:40:37 +00001317 substitution to happen correctly.
1318
1319
1320 II. NEW FEATURES
1321
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001322 - Three new font drivers in this release:
David Turnerd490e372002-05-28 23:40:37 +00001323
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001324 * A BDF font driver, contributed by Franco Zappa Nardelli,
1325 heavily modified by Werner Lemberg. It also supports
1326 anti-aliased bitmaps (using a slightly extended BDF format).
David Turnerd490e372002-05-28 23:40:37 +00001327
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001328 * A Type42 font driver, contributed by Roberto Alameda. It is
David Turnerb1d8f732002-06-10 22:41:57 +00001329 still experimental but seems to work relatively well.
David Turnerd490e372002-05-28 23:40:37 +00001330
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001331 * A PFR font driver, contributed by David Turner himself. It
1332 doesn't support PFR hinting -- note that BitStream has at
1333 least two patents on this format!
David Turnerd490e372002-05-28 23:40:37 +00001334
1335
David Turnerb1d8f732002-06-10 22:41:57 +00001336 III. MISCELLANEOUS
1337
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001338 - The cache sub-system has been optimized in important ways.
1339 Cache hits are now significantly faster. For example, using the
1340 CMap cache is about twice faster than calling FT_Get_Char_Index
1341 on most platforms. Similarly, using an SBit cache is about five
1342 times faster than loading the bitmaps from a bitmap file, and
1343 300 to 500 times faster than generating them from a scalable
1344 format.
David Turnerb1d8f732002-06-10 22:41:57 +00001345
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001346 Note that you should recompile your sources if you designed a
1347 custom cache class for the FT2 Cache subsystem, since the
1348 changes performed are source, but not binary, compatible.
David Turnerb1d8f732002-06-10 22:41:57 +00001349
1350
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001351======================================================================
David Turnerd490e372002-05-28 23:40:37 +00001352
Werner Lemberg94168f02006-05-11 07:07:09 +00001353CHANGES BETWEEN 2.1.0 and 2.0.9
David Turner498eed22002-04-15 12:01:10 +00001354
1355 I. IMPORTANT BUG FIXES
1356
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001357 - The TrueType bytecode interpreter has been fixed to produce
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001358 _exactly_ the same output as FreeType 1.x. Previous differences
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001359 were due to slightly distinct fixed-point computation routines
David Turner498eed22002-04-15 12:01:10 +00001360 used to perform dot products and vector length measurements.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001361
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001362 It seems that native TrueType hinting is _extremely_ sensitive
1363 to rounding errors. The required vector computation routines
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001364 have been optimized and placed within the `ttinterp.c' file.
David Turner498eed22002-04-15 12:01:10 +00001365
Werner Lemberg6e188b42002-04-17 22:42:13 +00001366 - Fixed the parsing of accelerator tables in the PCF font driver.
David Turnerd490e372002-05-28 23:40:37 +00001367
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001368 - Fixed the Type1 glyph loader routine used to compute the font's
David Turner11cfdd02002-04-17 09:37:59 +00001369 maximum advance width.
David Turner498eed22002-04-15 12:01:10 +00001370
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001371
David Turner498eed22002-04-15 12:01:10 +00001372 II. NEW FEATURES
1373
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001374 - The `configure' script used on Unix systems has been modified to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001375 check that GNU Make is being used to build the library.
1376 Otherwise, it will display a message proposing to use the
1377 GNUMAKE environment variable to name it.
David Turner498eed22002-04-15 12:01:10 +00001378
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001379 The Unix-specific file README.UNX has been modified accordingly.
1380
1381
David Turner498eed22002-04-15 12:01:10 +00001382 III. MISCELLANEOUS
1383
Werner Lemberg56c368c2005-06-04 23:00:25 +00001384 - The FreeType License in `docs/FTL.TXT' has been updated to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001385 include a proposed preferred disclaimer. If you are using
1386 FreeType in your products, you are encouraged (but not mandated)
1387 to use the following text in your documentation:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001388
1389 """
Werner Lemberg110246c2006-09-26 21:55:44 +00001390 Portions of this software are copyright © 1996-2002 The
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001391 FreeType Project (www.freetype.org). All rights reserved.
David Turner498eed22002-04-15 12:01:10 +00001392 """
1393
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001394 - The default size of the render pool has been reduced to 16kByte.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001395 This shouldn't result in any noticeable performance penalty,
1396 unless you are using the engine as-is to render very large and
1397 complex glyphs.
David Turner498eed22002-04-15 12:01:10 +00001398
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001399 - The FreeType 2 redesign has begun. More information can be
1400 found at this URL:
David Turner498eed22002-04-15 12:01:10 +00001401
David Turner498eed22002-04-15 12:01:10 +00001402 http://www.freetype.org/freetype2/redesign.html
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001403
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001404 The following internal changes have been performed within the
1405 sources of this release:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001406
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001407 - Many internal types have been renamed to increase
1408 consistency. The following should be true, except for
1409 public types:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001410
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001411 * All structure types have a name ending in `Rec' (short
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001412 for `record').
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001413
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001414 * A pointer-to-structure type has the same name as the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001415 structure, _without_ the `Rec' suffix.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001416
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001417 Example:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001418
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001419 typedef struct FooRec_
1420 {
1421 ...
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001422
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001423 } FooRec, *Foo;
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001424
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001425 - Many internal macros have been renamed to increase
1426 consistency. The following should be true:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001427
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001428 * All macros have a name beginning with `FT_'. This
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001429 required a few changes like
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001430
1431 ALLOC => FT_ALLOC
1432 FREE => FT_FREE
1433 REALLOC => FT_REALLOC
1434
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001435 * All macros are completely UPPERCASE. This required a
1436 few changes like:
David Turner498eed22002-04-15 12:01:10 +00001437
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001438 READ_Short => FT_READ_SHORT
1439 NEXT_Short => FT_NEXT_SHORT
1440 GET_ULongLE => FT_GET_ULONG_LE
1441 MEM_Set => FT_MEM_SET
1442 MEM_Copy => FT_MEM_COPY
1443 etc.
David Turner498eed22002-04-15 12:01:10 +00001444
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001445 * Whenever possible, all macro names follow the
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001446 FT_<OBJECT>_<METHOD> pattern. For example
David Turner498eed22002-04-15 12:01:10 +00001447
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001448 ACCESS_Frame => FT_FRAME_ENTER
1449 FORGET_Frame => FT_FRAME_EXIT
1450 EXTRACT_Frame => FT_FRAME_EXTRACT
1451 RELEASE_Frame => FT_FRAME_RELEASE
David Turner498eed22002-04-15 12:01:10 +00001452
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001453 FILE_Pos => FT_STREAM_POS
1454 FILE_Seek => FT_STREAM_SEEK
1455 FILE_Read => FT_STREAM_READ
1456 FILE_ReadAt => FT_STREAM_READ_AT
1457 READ_Fields => FT_STREAM_READ_FIELDS
David Turner498eed22002-04-15 12:01:10 +00001458
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001459 - Many internal functions have been renamed to follow the
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001460 FT_<Object>_<Method> pattern. For example:
David Turner498eed22002-04-15 12:01:10 +00001461
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001462 FT_Seek_Stream => FT_Stream_Seek
1463 FT_Read_Stream_At => FT_Stream_ReadAt
1464 FT_Done_Stream => FT_Stream_Close
1465 FT_New_Stream => FT_Stream_Open
1466 FT_New_Memory_Stream => FT_Stream_OpenMemory
1467 FT_Extract_Frame => FT_Stream_ExtractFrame
David Turner498eed22002-04-15 12:01:10 +00001468
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001469 Note that method names do not contain `_'.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001470
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001471 - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced
1472 with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a
1473 type as the fourth argument. Instead, the array element
1474 type size is computed automatically from the type of the
1475 target pointer used.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001476
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001477 - A new object class, FT_CMap, has been introduced. These
1478 internal objects are used to model character maps. This
1479 eases the support of additional charmap types within the
1480 engine.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001481
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001482 - A new configuration file named `ftstdlib.h' has been added
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001483 to `include/freetype/config'. It is used to define aliases
1484 for _every_ routine of the ISO C library that the font
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001485 engine uses. Each aliases has a `ft_' prefix
1486 (e.g. `ft_strlen' is an alias for `strlen').
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001487
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001488 This is used to ease the porting of FreeType 2 to exotic
1489 runtime environments where the ISO C Library isn't available
1490 (e.g. XFree86 extension modules).
David Turner498eed22002-04-15 12:01:10 +00001491
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001492 More details are available in the `ChangeLog' file.
David Turner498eed22002-04-15 12:01:10 +00001493
1494
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001495======================================================================
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001496
Werner Lemberg94168f02006-05-11 07:07:09 +00001497CHANGES BETWEEN 2.0.9 and 2.0.8
David Turner2c7558c2002-04-11 14:21:16 +00001498
1499 I. IMPORTANT BUG FIXES
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001500
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001501 - Certain fonts like `foxjump.ttf' contain broken name tables with
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001502 invalid entries and wild offsets. This caused FreeType to crash
1503 when trying to load them.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001504
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001505 The SFNT `name' table loader has been fixed to be able to
1506 support these strange fonts.
David Turner2c7558c2002-04-11 14:21:16 +00001507
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001508 Moreover, the code in charge of processing this table has been
1509 changed to always favour Windows-formatted entries over other
1510 ones. Hence, a font that works on Windows but not on the Mac
1511 will load cleanly in FreeType and report accurate values for
1512 Family & PostScript names.
David Turner2c7558c2002-04-11 14:21:16 +00001513
1514 - The CID font driver has been fixed. It unfortunately returned a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001515 Postscript Font name with a leading slash, as in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001516 `/MunhwaGothic-Regular'.
David Turner2c7558c2002-04-11 14:21:16 +00001517
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001518 - FreeType 2 should now compile fine on AIX 4.3.3 as a shared
1519 library.
David Turner2c7558c2002-04-11 14:21:16 +00001520
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001521 - A bug in the Postscript hinter has been found and fixed,
1522 removing un-even stem widths at small pixel sizes (like 14-17).
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001523
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001524 This improves the quality of a certain number of Postscript
1525 fonts.
David Turner2c7558c2002-04-11 14:21:16 +00001526
1527
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001528 II. NEW FEATURES
David Turner2c7558c2002-04-11 14:21:16 +00001529
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001530 - A new function named `FT_Library_Version' has been added to
1531 return the current library's major, minor, and patch version
1532 numbers. This is important since the macros FREETYPE_MAJOR,
1533 FREETYPE_MINOR, and FREETYPE_PATCH cannot be used when the
1534 library is dynamically linked by a program.
David Turner2c7558c2002-04-11 14:21:16 +00001535
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001536 - Two new APIs have been added: `FT_Get_First_Char' and
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001537 `FT_Get_Next_Char'.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001538
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001539 Together, these can be used to iterate efficiently over the
1540 currently selected charmap of a given face. Read the API
1541 reference for more details.
David Turner2c7558c2002-04-11 14:21:16 +00001542
1543
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001544 III. MISCELLANEOUS
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001545
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001546 - The FreeType sources are under heavy internal re-factoring. As
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001547 a consequence, we have created a branch named `STABLE' on the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001548 CVS to hold all future releases/fixes in the 2.0.x family.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001549
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001550 The HEAD branch now contains the re-factored sources and
1551 shouldn't be used for testing or packaging new releases. In
1552 case you would like to access the 2.0.9 sources from our CVS
1553 repository, use the tag `VER-2-0-9'.
David Turner2c7558c2002-04-11 14:21:16 +00001554
1555
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001556======================================================================
David Turner2c7558c2002-04-11 14:21:16 +00001557
Werner Lemberg94168f02006-05-11 07:07:09 +00001558CHANGES BETWEEN 2.0.8 and 2.0.7
David Turner1c6af482002-02-08 14:00:20 +00001559
1560 I. IMPORTANT BUG FIXES
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001561
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001562 - There was a small but nasty bug in `freetype-config.in' which
1563 caused the `freetype-config' script to fail on Unix.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001564
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001565 This didn't prevent the installation of the library or even its
1566 execution, but caused problems when trying to compile many Unix
1567 packages that depend on it.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001568
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001569 - Some TrueType or OpenType fonts embedded in PDF documents do not
1570 have a 'cmap', 'post' and 'name' as is required by the
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001571 specification. FreeType no longer refuses to load such fonts.
David Turner1c6af482002-02-08 14:00:20 +00001572
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001573 - Various fixes to the PCF font driver.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001574
David Turner1c6af482002-02-08 14:00:20 +00001575
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001576======================================================================
David Turner1c6af482002-02-08 14:00:20 +00001577
Werner Lemberg94168f02006-05-11 07:07:09 +00001578CHANGES BETWEEN 2.0.7 and 2.0.6
David Turner944b7292002-01-31 17:42:05 +00001579
1580 I. IMPORTANT BUG FIXES
1581
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001582 - Fixed two bugs in the Type 1 font driver. The first one
1583 resulted in a memory leak in subtle cases. The other one caused
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001584 FreeType to crash when trying to load `.gsf' files (Ghostscript
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001585 so-called Postscript fonts).
David Turner944b7292002-01-31 17:42:05 +00001586
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001587 (This made _many_ KDE applications crash on certain systems.
1588 FreeType _is_ becoming a critical system component on Linux :-)
David Turner944b7292002-01-31 17:42:05 +00001589
Werner Lemberg32b53462002-02-01 01:20:11 +00001590 - Fixed a memory leak in the CFF font driver.
David Turner944b7292002-01-31 17:42:05 +00001591
Werner Lemberg32b53462002-02-01 01:20:11 +00001592 - Fixed a memory leak in the PCF font driver.
David Turner944b7292002-01-31 17:42:05 +00001593
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001594 - Fixed the Visual C++ project file
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001595 `builds/win32/visualc/freetype.dsp' since it didn't include the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001596 Postscript hinter component, causing errors at build time.
David Turner944b7292002-01-31 17:42:05 +00001597
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001598 - Fixed a small rendering bug in the anti-aliased renderer that
1599 only occurred when trying to draw thin (less than 1 pixel)
1600 strokes.
David Turner944b7292002-01-31 17:42:05 +00001601
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001602 - Fixed `builds/unix/freetype2.a4' which is used to generate a
1603 valid `freetype2.m4' for use with autoconf.
Werner Lemberg32b53462002-02-01 01:20:11 +00001604
1605 - Fixed the OpenVMS Makefiles.
David Turner944b7292002-01-31 17:42:05 +00001606
1607
1608 II. MISCELLANEOUS
1609
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001610 - Added `configure' and `install' scripts to the top-level
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001611 directory. A GNU-style installation is thus now easily possible
1612 with
Werner Lemberg32b53462002-02-01 01:20:11 +00001613
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001614 ./configure <options>
1615 make
1616 make install
David Turner944b7292002-01-31 17:42:05 +00001617
1618
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001619======================================================================
David Turner944b7292002-01-31 17:42:05 +00001620
Werner Lemberg94168f02006-05-11 07:07:09 +00001621CHANGES BETWEEN 2.0.6 and 2.0.5
David Turnerafa38542001-10-18 13:22:01 +00001622
Werner Lembergf41e71a2001-12-20 21:22:02 +00001623 I. IMPORTANT BUG FIXES
David Turner640078d2001-12-10 10:47:47 +00001624
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001625 - It wasn't possible to load embedded bitmaps when the auto-hinter
1626 was used. This is now fixed.
David Turner640078d2001-12-10 10:47:47 +00001627
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001628 - The TrueType font driver didn't load some composites properly
1629 (the sub-glyphs were slightly shifted, and this was only
1630 noticeable when using monochrome rendering).
David Turnerafa38542001-10-18 13:22:01 +00001631
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001632 - Various fixes to the auto-hinter. They merely improve the
1633 output of sans-serif fonts. Note that there are still problems
1634 with serifed fonts and composites (accented characters).
David Turnerafa38542001-10-18 13:22:01 +00001635
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001636 - All scalable font drivers erroneously returned un-fitted glyph
1637 advances when hinting was requested. This created problems for
1638 a number of layout applications. This is a very old bug that
1639 got undetected mainly because most test/demo program perform
1640 rounding explicitly or implicitly (through the cache).
Werner Lembergf41e71a2001-12-20 21:22:02 +00001641
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001642 - `FT_Glyph_To_Bitmap' did erroneously modify the source glyph in
Werner Lembergf41e71a2001-12-20 21:22:02 +00001643 certain cases.
1644
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001645 - `glnames.py' still contained a bug that made FreeType return
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001646 invalid names for certain glyphs.
David Turnerafa38542001-10-18 13:22:01 +00001647
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001648 - The library crashed when loading certain Type 1 fonts like
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001649 `sadn.pfb' (`Stalingrad Normal'), which appear to contain
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001650 pathetic font info dictionaries.
David Turner6096b5a2002-01-07 10:40:48 +00001651
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001652 - The TrueType glyph loader is now much more paranoid and checks
1653 everything when loading a given glyph image. This was necessary
1654 to avoid problems (crashes and/or memory overwrites) with broken
1655 fonts that came from a really buggy automatic font converter.
David Turner6096b5a2002-01-07 10:40:48 +00001656
1657
Werner Lembergf41e71a2001-12-20 21:22:02 +00001658 II. IMPORTANT UPDATES AND NEW FEATURES
David Turner0fcb4122001-12-20 13:33:03 +00001659
Werner Lembergf41e71a2001-12-20 21:22:02 +00001660 - Important updates to the Mac-specific parts of the library.
David Turner0fcb4122001-12-20 13:33:03 +00001661
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001662 - The caching sub-system has been completely re-designed, and its
Werner Lemberg4db32ec2006-03-24 11:54:53 +00001663 API has evolved (the old one is still supported for backward
Werner Lembergf41e71a2001-12-20 21:22:02 +00001664 compatibility).
David Turner0fcb4122001-12-20 13:33:03 +00001665
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001666 The documentation for it is not yet completed, sorry. For now,
1667 you are encouraged to continue using the old API. However, the
1668 ftview demo program in the ft2demos package has already been
1669 updated to use the new caching functions.
David Turner0fcb4122001-12-20 13:33:03 +00001670
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001671 - A new charmap cache is provided too. See `FTC_CMapCache'. This
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001672 is useful to perform character code -> glyph index translations
1673 quickly, without the need for an opened FT_Face.
David Turner0fcb4122001-12-20 13:33:03 +00001674
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001675 - A NEW POSTSCRIPT HINTER module has been added to support native
1676 hints in the following formats: PostScript Type 1, PostScript
1677 CID, and CFF/CEF.
Werner Lembergf41e71a2001-12-20 21:22:02 +00001678
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001679 Please test! Note that the auto-hinter produces better results
1680 for a number of badly-hinted fonts (mostly auto-generated ones)
1681 though.
Werner Lembergf41e71a2001-12-20 21:22:02 +00001682
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001683 - A memory debugger is now part of the standard FreeType sources.
1684 To enable it, define FT_DEBUG_MEMORY in
1685 <freetype/config/ftoption.h>, and recompile the library.
Werner Lembergf41e71a2001-12-20 21:22:02 +00001686
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001687 Additionally, define the _environment_ variable FT_DEBUG_MEMORY
1688 and run any program using FreeType. When the library is exited,
1689 a summary of memory footprints and possible leaks will be
1690 displayed.
Werner Lembergf41e71a2001-12-20 21:22:02 +00001691
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001692 This works transparently with _any_ program that uses FreeType.
1693 However, you will need a lot of memory to use this (allocated
1694 blocks are never released to the heap to detect double deletes
1695 easily).
David Turner0fcb4122001-12-20 13:33:03 +00001696
1697
Werner Lembergf41e71a2001-12-20 21:22:02 +00001698 III. MISCELLANEOUS
David Turner0fcb4122001-12-20 13:33:03 +00001699
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001700 - We are aware of subtle differences between the output of
1701 FreeType versions 1 and 2 when it comes to monochrome
1702 TrueType-hinted glyphs. These are most probably due to small
1703 differences in the monochrome rasterizers and will be worked out
1704 in an upcoming release.
David Turner0fcb4122001-12-20 13:33:03 +00001705
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001706 - We have decided to fork the sources in a `stable' branch, and an
1707 `unstable' one, since FreeType is becoming a critical component
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001708 of many Unix systems.
Werner Lemberg32b53462002-02-01 01:20:11 +00001709
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001710 The next bug-fix releases of the library will be named 2.0.7,
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001711 2.0.8, etc., while the `2.1' branch will contain a version of
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001712 the sources where we will start major reworking of the library's
1713 internals, in order to produce FreeType 2.2.0 (or even 3.0) in a
1714 more distant future.
Werner Lemberg32b53462002-02-01 01:20:11 +00001715
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001716 We also hope that this scheme will allow much more frequent
1717 releases than in the past.
David Turner6096b5a2002-01-07 10:40:48 +00001718
David Turner0fcb4122001-12-20 13:33:03 +00001719
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001720======================================================================
David Turnerafa38542001-10-18 13:22:01 +00001721
Werner Lemberg94168f02006-05-11 07:07:09 +00001722CHANGES BETWEEN 2.0.5 and 2.0.4
David Turner1cd4f852001-10-09 07:32:50 +00001723
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001724 NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER. THIS MODULE
1725 WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
David Turner1cd4f852001-10-09 07:32:50 +00001726
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001727 - Fixed a bug that made certain glyphs, like `Cacute', `cacute' and
1728 `lslash' unavailable from Unicode charmaps of Postscript fonts.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001729 This prevented the correct display of Polish text, for example.
David Turner1cd4f852001-10-09 07:32:50 +00001730
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001731 - The kerning table of Type 1 fonts was loaded by FreeType, when its
1732 AFM file was attached to its face, but the
1733 FT_FACE_FLAG_HAS_KERNING bit flags was not set correctly,
1734 preventing FT_Get_Kerning to return meaningful values.
David Turner1cd4f852001-10-09 07:32:50 +00001735
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001736 - Improved SFNT (TrueType & OpenType) charmap support. Slightly
1737 better performance, as well as support for the new formats defined
1738 by the OpenType 1.3 specification (8, 10, and 12)
David Turner1cd4f852001-10-09 07:32:50 +00001739
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001740 - Fixed a serious typo in `src/base/ftcalc.c' which caused invalid
Werner Lemberg80b8d772001-10-10 19:56:42 +00001741 computations in certain rare cases, producing ugly artefacts.
1742
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001743 - The size of the EM square is computed with a more accurate
1744 algorithm for Postscript fonts. The old one caused slight errors
1745 with embedded fonts found in PDF documents.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001746
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001747 - Fixed a bug in the cache manager that prevented normal LRU
1748 behaviour within the cache manager, causing unnecessary reloads
1749 (for FT_Face and FT_Size objects only).
Werner Lemberg80b8d772001-10-10 19:56:42 +00001750
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001751 - Added a new function named `FT_Get_Name_Index' to retrieve the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001752 glyph index of a given glyph name, when found in a face.
David Turner1cd4f852001-10-09 07:32:50 +00001753
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001754 - Added a new function named `FT_Get_Postscript_Name' to retrieve
1755 the `unique' Postscript font name of a given face.
David Turner034a1932001-10-17 13:57:02 +00001756
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001757 - Added a new public header size named FT_SIZES_H (or
1758 <freetype/ftsizes.h>) providing new FT_Size-management functions:
Werner Lembergf41e71a2001-12-20 21:22:02 +00001759 FT_New_Size, FT_Activate_Size, FT_Done_Size.
David Turner034a1932001-10-17 13:57:02 +00001760
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001761 - Fixed a reallocation bug that generated a dangling pointer (and
1762 possibly memory leaks) with Postscript fonts (in
1763 src/psaux/psobjs.c).
David Turner1cd4f852001-10-09 07:32:50 +00001764
Werner Lemberg80b8d772001-10-10 19:56:42 +00001765 - Many fixes for 16-bit correctness.
David Turner1cd4f852001-10-09 07:32:50 +00001766
Werner Lemberg80b8d772001-10-10 19:56:42 +00001767 - Removed many pedantic compiler warnings from the sources.
1768
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001769 - Added an Amiga build directory in `builds/amiga'.
David Turner1cd4f852001-10-09 07:32:50 +00001770
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001771
1772======================================================================
David Turner1cd4f852001-10-09 07:32:50 +00001773
Werner Lemberg94168f02006-05-11 07:07:09 +00001774CHANGES BETWEEN 2.0.4 and 2.0.3
David Turner995ff202001-06-22 08:45:31 +00001775
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001776 - Fixed a rather annoying bug that was introduced in 2.0.3. Namely,
1777 the font transformation set through FT_Set_Transform was applied
1778 twice to auto-hinted glyphs, resulting in incorrectly rotated text
1779 output.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001780
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001781 - Fixed _many_ compiler warnings. FT2 should now compile cleanly
1782 with Visual C++'s most pedantic warning level (/W4). It already
1783 compiled fine with GCC and a few other compilers.
David Turner995ff202001-06-22 08:45:31 +00001784
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001785 - Fixed a bug that prevented the linear advance width of composite
Werner Lemberg80b8d772001-10-10 19:56:42 +00001786 TrueType glyphs to be correctly returned.
David Turner21939452001-10-05 14:23:03 +00001787
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001788 - Fixed the Visual C++ project files located in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001789 `builds/win32/visualc' (previous versions used older names of the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001790 library).
Werner Lemberg80b8d772001-10-10 19:56:42 +00001791
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001792 - Many 32-bit constants have an `L' appended to their value, in
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001793 order to improve the 16-bitness of the code. Someone is actually
1794 trying to use FT2 on an Atari ST machine!
David Turner995ff202001-06-22 08:45:31 +00001795
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001796 - Updated the `builds/detect.mk' file in order to automatically
1797 build FT2 on AIX systems. AIX uses `/usr/sbin/init' instead of
1798 `/sbin/init' and wasn't previously detected as a Unix platform by
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001799 the FreeType build system.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001800
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001801 - Updated the Unix-specific portions of the build system (new
1802 libtool version, etc.).
David Turner995ff202001-06-22 08:45:31 +00001803
Werner Lembergb4142d52007-01-17 12:45:26 +00001804 - The SFNT kerning loader now ensures that the table is sorted
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001805 (since some problem fonts do not meet this requirement).
David Turnerc40f3862001-06-27 12:42:10 +00001806
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001807
1808=======================================================================
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001809
Werner Lemberg94168f02006-05-11 07:07:09 +00001810CHANGES BETWEEN 2.0.3 and 2.0.2
David Turner4312f422001-05-24 15:00:19 +00001811
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001812 I. CHANGES TO THE MODULES / FONT DRIVERS
Werner Lemberg80b8d772001-10-10 19:56:42 +00001813
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001814 - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix
1815 several annoying artefacts, mainly:
Werner Lemberg80b8d772001-10-10 19:56:42 +00001816
Werner Lembergb4142d52007-01-17 12:45:26 +00001817 - Blue zone alignment of horizontal stems wasn't performed
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001818 correctly, resulting in artefacts like the `d' being placed
1819 one pixel below the `b' in some fonts like Time New Roman.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001820
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001821 - Overshoot thresholding wasn't performed correctly, creating
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001822 unpleasant artefacts at large character pixel sizes.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001823
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001824 - Composite glyph loading has been simplified. This gets rid
1825 of various artefacts where the components of a composite
1826 glyphs were not correctly spaced.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001827
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001828 These are the last changes to the current auto-hinting module.
1829 A new hinting sub-system is currently in the work in order to
1830 support native hints in Type 1 / CFF / OpenType fonts, as well
1831 as globally improve rendering.
David Turner4312f422001-05-24 15:00:19 +00001832
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001833 - The PCF driver has been fixed. It reported invalid glyph
1834 dimensions for the fonts available on Solaris.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001835
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001836 - The Type 1, CID and CFF drivers have been modified to fix the
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001837 computation of the EM size.
David Turner4312f422001-05-24 15:00:19 +00001838
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001839 - The Type 1 driver has been fixed to avoid a dangerous bug that
1840 crashed the library with non-conforming fonts (i.e. ones that do
1841 not place the .notdef glyph at position 0).
David Turner4312f422001-05-24 15:00:19 +00001842
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001843 - The TrueType driver had a rather subtle bug (dangling pointer
1844 when loading composite glyphs) that could crash the library in
1845 rare occasions!
David Turner4312f422001-05-24 15:00:19 +00001846
1847
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001848 II. HIGH-LEVEL API CHANGES
Werner Lemberg80b8d772001-10-10 19:56:42 +00001849
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001850 - The error code enumeration values have been changed. An error
1851 value is decomposed in a generic error code, and a module
1852 number. see <freetype/fterrors.h> for details.
David Turner4312f422001-05-24 15:00:19 +00001853
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001854 - A new public header file has been introduced, named
1855 FT_TRIGONOMETRY_H (include/freetype/fttrig.h), providing
1856 trigonometric functions to compute sines, cosines, arctangents,
1857 etc. with 16.16 fixed precision. The implementation is based on
1858 the CORDIC algorithm and is very fast while being sufficiently
1859 accurate.
David Turner4312f422001-05-24 15:00:19 +00001860
1861
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001862 III. INTERNALS
Werner Lemberg80b8d772001-10-10 19:56:42 +00001863
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001864 - Added BeOS-specific files in the old build sub-system. Note
1865 that no changes were required to compile the library with Jam.
David Turner4312f422001-05-24 15:00:19 +00001866
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001867 - The configuration is now capable of automatically detecting
1868 64-bit integers on a set of predefined compilers (GCC, Visual
1869 C++, Borland C++) and will use them by default. This provides a
1870 small performance boost.
David Turner4312f422001-05-24 15:00:19 +00001871
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001872 - A small memory leak that happened when opening 0-sized files
1873 (duh!) have been fixed.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001874
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001875 - Fixed bezier stack depth bug in the routines provided by the
1876 FT_BBOX_H header file. Also fixed similar bugs in the
1877 rasterizers.
David Turner4312f422001-05-24 15:00:19 +00001878
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001879 - The outline bounding box code has been rewritten to use direct
1880 computations, instead of bezier sub-division, to compute the
1881 exact bounding box of glyphs. This is slightly slower but more
1882 accurate.
David Turner4312f422001-05-24 15:00:19 +00001883
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001884 - The build system has been improved and fixed, mainly to support
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001885 `make' on Windows 2000 correctly, avoid problems with `make
1886 distclean' on non Unix systems, etc.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001887
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001888 - Hexadecimal constants have been suffixed with `U' to avoid
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001889 problems with certain compilers on 64-bit platforms.
David Turner4312f422001-05-24 15:00:19 +00001890
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001891 - A new directory named `src/tools' has been created. It contains
David Turner4312f422001-05-24 15:00:19 +00001892 Python scripts and simple unit test programs used to develop the
1893 library.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001894
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001895 - The DocMaker tool has been moved from `docs' to `src/tools' and
David Turner4312f422001-05-24 15:00:19 +00001896 has been updated with the following:
Werner Lemberg80b8d772001-10-10 19:56:42 +00001897
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001898 - Now accepts the `--title=XXXX' or `-t XXXX' option from the
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001899 command line to set the project's name in the generated API
1900 reference.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001901
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001902 - Now accepts the `--output=DIR' or `-o DIR' option from the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001903 command line to set the output directory for all generated
1904 HTML files.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001905
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001906 - Now accepts the `--prefix=XXXX' or `-p XXX' option from the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001907 command line to set the file prefix to use for all
1908 generated HTML files.
David Turner4312f422001-05-24 15:00:19 +00001909
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001910 - Now generates the current time/data on each generated page
David Turner4312f422001-05-24 15:00:19 +00001911 in order to distinguish between versions.
1912
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001913 DocMaker can be used with other projects now, not only FT2
1914 (e.g. MLib, FTLayout, etc.).
Werner Lemberg80b8d772001-10-10 19:56:42 +00001915
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001916
1917======================================================================
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001918
Werner Lemberg94168f02006-05-11 07:07:09 +00001919CHANGES BETWEEN 2.0.2 and 2.0.1
David Turnerd3c8e062000-12-04 22:53:55 +00001920
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001921 I. CHANGES TO THE MODULES / FONT DRIVERS
David Turnera0f89552001-03-23 12:28:59 +00001922
1923 - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
Werner Lembergab6d1072001-04-02 21:30:06 +00001924 avoid legal problems with the Apple patents. It seems that we
1925 mistakenly turned this option on in previous releases of the
1926 build.
David Turnera0f89552001-03-23 12:28:59 +00001927
Werner Lembergab6d1072001-04-02 21:30:06 +00001928 Note that if you want to use the bytecode interpreter in order
1929 to get high-quality TrueType rendering, you will need to toggle
1930 by hand the definition of the
1931 TT_CONFIG_OPTION_BYTECODE_INTERPRETER macro in the file
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001932 `include/freetype/config/ftoption.h'.
Werner Lembergab6d1072001-04-02 21:30:06 +00001933
1934 - The CFF driver has been improved by Tom Kacvinsky and Sander van
1935 der Wal:
1936
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001937 * Support for `seac' emulation.
1938 * Support for `dotsection'.
Werner Lembergab6d1072001-04-02 21:30:06 +00001939 * Support for retrieving glyph names through
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001940 `FT_Get_Glyph_Name'.
David Turnera0f89552001-03-23 12:28:59 +00001941
1942 The first two items are necessary to correctly a large number of
Werner Lembergab6d1072001-04-02 21:30:06 +00001943 Type 1 fonts converted to the CFF formats by Adobe Acrobat.
David Turnera0f89552001-03-23 12:28:59 +00001944
Werner Lembergab6d1072001-04-02 21:30:06 +00001945 - The Type 1 driver was also improved by Tom & others:
David Turnera0f89552001-03-23 12:28:59 +00001946
Werner Lembergab6d1072001-04-02 21:30:06 +00001947 * Better EM size computation.
1948 * Better support for synthetic (transformed) fonts.
1949 * The Type 1 driver returns the charstrings corresponding to
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001950 each glyph in the `glyph->control_data' field after a call to
1951 `FT_Load_Glyph' (thanks Ha Shao).
David Turnera0f89552001-03-23 12:28:59 +00001952
Werner Lembergab6d1072001-04-02 21:30:06 +00001953 - Various other bugfixes, including the following:
David Turnera0f89552001-03-23 12:28:59 +00001954
Werner Lembergab6d1072001-04-02 21:30:06 +00001955 * Fixed a nasty memory leak in the Type 1 driver.
1956 * The autohinter and the pcf driver used static writable data
1957 when they shouldn't.
1958 * Many casts were added to make the code more 64-bits safe. It
1959 also now compiles on Windows XP 64-bits without warnings.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001960 * Some incorrect writable statics were removed in the `autohint'
1961 and `pcf' drivers. FreeType 2 now compiles on Epoc again.
David Turnera0f89552001-03-23 12:28:59 +00001962
1963
1964 II. CHANGES TO THE HIGH-LEVEL API
David Turnera0f89552001-03-23 12:28:59 +00001965
Werner Lembergab6d1072001-04-02 21:30:06 +00001966 - The library header files inclusion scheme has been changed. The
1967 old scheme looked like:
1968
1969 #include <freetype/freetype.h>
1970 #include <freetype/ftglyph.h>
1971 #include <freetype/ftcache.h>
1972 #include <freetype/cache/ftimage.h>
1973
1974 Now you should use:
1975
1976 #include <ft2build.h>
1977 #include FT_FREETYPE_H
1978 #include FT_GLYPH_H
1979 #include FT_CACHE_H
1980 #include FT_CACHE_IMAGE_H
1981
1982 NOTE THAT THE OLD INCLUSION SCHEME WILL STILL WORK WITH THIS
1983 RELEASE. HOWEVER, WE DO NOT GUARANTEE THAT THIS WILL STILL BE
1984 TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1).
1985
1986 The file <ft2build.h> is used to define the header filename
1987 macros. The complete and commented list of macros is available
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001988 in the API reference under the section name `Header File Macros'
Werner Lembergab6d1072001-04-02 21:30:06 +00001989 in Chapter I.
David Turnera0f89552001-03-23 12:28:59 +00001990
David Turnerf876b242001-03-23 18:09:09 +00001991 For more information, see section I of the following document:
David Turnerf876b242001-03-23 18:09:09 +00001992
Werner Lembergab6d1072001-04-02 21:30:06 +00001993 http://www.freetype.org/
1994 freetype2/docs/tutorial/step1.html
David Turnerf876b242001-03-23 18:09:09 +00001995
Werner Lembergab6d1072001-04-02 21:30:06 +00001996 or
David Turnera0f89552001-03-23 12:28:59 +00001997
Werner Lembergab6d1072001-04-02 21:30:06 +00001998 http://freetype.sourceforge.net/
1999 freetype2/docs/tutorial/step1.html
2000
2001 - Many, many comments have been added to the public source file in
2002 order to automatically generate the API Reference through the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002003 `docmaker.py' Python script.
Werner Lembergab6d1072001-04-02 21:30:06 +00002004
2005 The latter has been updated to support the grouping of sections
2006 in chapters and better index sort. See:
2007
2008 http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
David Turnera0f89552001-03-23 12:28:59 +00002009
2010
2011 III. CHANGES TO THE BUILD PROCESS
David Turnerb8f56fa2001-03-20 15:04:30 +00002012
Werner Lembergab6d1072001-04-02 21:30:06 +00002013 - If you are not building FreeType 2 with its own build system
2014 (but with your own Makefiles or project files), you will need to
2015 be aware that the build process has changed a little bit.
David Turnera0f89552001-03-23 12:28:59 +00002016
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002017 You don't need to put the `src' directory in the include path
Werner Lembergab6d1072001-04-02 21:30:06 +00002018 when compiling any FT2 component. Instead, simply put the
2019 component's directory in the current include path.
2020
2021 So, if you were doing something like:
2022
2023 cc -c -Iinclude -Isrc src/base/ftbase.c
2024
2025 change the line to:
2026
2027 cc -c -Iinclude -Isrc/base src/base/ftbase.c
2028
2029 If you were doing something like:
2030
2031 cd src/base
2032 cc -c -I../../include -I.. ftbase.c
2033
2034 change it to:
2035
2036 cd src/base
2037 cc -c -I../../include ftbase.c
2038
2039
2040======================================================================
2041
Werner Lemberg94168f02006-05-11 07:07:09 +00002042CHANGES BETWEEN 2.0.1 and 2.0
Werner Lembergab6d1072001-04-02 21:30:06 +00002043
David Turneraaac8132000-12-01 18:55:22 +00002044 2.0.1 introduces a few changes:
2045
Werner Lembergab6d1072001-04-02 21:30:06 +00002046 - Fixed many bugs related to the support of CFF / OpenType fonts.
2047 These formats are now much better supported though there is
2048 still work planned to deal with charset tables and PDF-embedded
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002049 CFF files that use the old `seac' command.
Werner Lembergab6d1072001-04-02 21:30:06 +00002050
2051 - The library could not be compiled in debug mode with a very
2052 small number of C compilers whose pre-processors didn't
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002053 implement the `##' directive correctly (i.e. per se the ANSI C
Werner Lembergab6d1072001-04-02 21:30:06 +00002054 specification!) An elegant fix was found.
2055
2056 - Added support for the free Borland command-line C++ Builder
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002057 compiler. Use `make setup bcc32'. Also fixed a few source
Werner Lembergab6d1072001-04-02 21:30:06 +00002058 lines that generated new warnings with BCC32.
2059
2060 - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
Werner Lemberg2e82c932000-12-01 21:56:47 +00002061 a conic Bezier arc.
David Turneraaac8132000-12-01 18:55:22 +00002062
Werner Lembergab6d1072001-04-02 21:30:06 +00002063 - Updated the INSTALL file to add IDE compilation.
David Turneraaac8132000-12-01 18:55:22 +00002064
Werner Lembergab6d1072001-04-02 21:30:06 +00002065 - Other minor bug fixes, from invalid Type 1 style flags to
2066 correct support of synthetic (obliqued) fonts in the
2067 auto-hinter, better support for embedded bitmaps in a SFNT font.
David Turneraaac8132000-12-01 18:55:22 +00002068
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002069 - Fixed some problems with `freetype-config'.
David Turneraaac8132000-12-01 18:55:22 +00002070
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002071 Finally, the `standard' scheme for including FreeType headers is now
Werner Lembergab6d1072001-04-02 21:30:06 +00002072 gradually changing, but this will be explained in a later release
2073 (probably 2.0.2).
David Turneraaac8132000-12-01 18:55:22 +00002074
Werner Lembergab6d1072001-04-02 21:30:06 +00002075 And very special thanks to Tom Kacvinsky and YAMANO-UCHI Hidetoshi
2076 for their contributions!
David Turneraaac8132000-12-01 18:55:22 +00002077
Werner Lembergab6d1072001-04-02 21:30:06 +00002078
2079======================================================================
2080
David Turneraaac8132000-12-01 18:55:22 +00002081CHANGES BETWEEN beta8 and 2.0
David Turnerf9b8dec2000-06-16 19:34:52 +00002082
Werner Lembergab6d1072001-04-02 21:30:06 +00002083 - Changed the default installation path for public headers from
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002084 `include/freetype' to `include/freetype2'.
David Turner27c88272000-11-09 19:10:22 +00002085
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002086 Also added a new `freetype-config' that is automatically generated
Werner Lembergab6d1072001-04-02 21:30:06 +00002087 and installed on Unix and Cygwin systems. The script itself is
2088 used to retrieve the current install path, C compilation flags as
2089 well as linker flags.
David Turner27c88272000-11-09 19:10:22 +00002090
Werner Lembergab6d1072001-04-02 21:30:06 +00002091 - Fixed several small bugs:
David Turner27c88272000-11-09 19:10:22 +00002092
Werner Lembergab6d1072001-04-02 21:30:06 +00002093 * Incorrect max advance width for fixed-pitch Type 1 fonts.
2094 * Incorrect glyph names for certain TrueType fonts.
2095 * The glyph advance was not copied when FT_Glyph_To_Bitmap was
2096 called.
Werner Lembergb4142d52007-01-17 12:45:26 +00002097 * The linearHoriAdvance and linearVertAdvance fields were not
Werner Lembergab6d1072001-04-02 21:30:06 +00002098 correctly returned for glyphs processed by the auto-hinter.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002099 * `type1z' renamed back to `type1'; the old `type1' module has
Werner Lembergab6d1072001-04-02 21:30:06 +00002100 been removed.
David Turner27c88272000-11-09 19:10:22 +00002101
Werner Lembergab6d1072001-04-02 21:30:06 +00002102 - Revamped the build system to make it a lot more generic. This
2103 will allow us to re-use nearly un-modified in lots of other
2104 projects (including FreeType Layout).
David Turner27c88272000-11-09 19:10:22 +00002105
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002106 - Changed `cid' to use `psaux' too.
David Turner27c88272000-11-09 19:10:22 +00002107
Werner Lembergab6d1072001-04-02 21:30:06 +00002108 - Added the cache sub-system. See <freetype/ftcache.h> as well as
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002109 the sources in `src/cache'. Note that it compiles but is still
Werner Lembergab6d1072001-04-02 21:30:06 +00002110 untested for now.
David Turner27c88272000-11-09 19:10:22 +00002111
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002112 - Updated `docs/docmaker.py', a draft API reference is available at
Werner Lembergab6d1072001-04-02 21:30:06 +00002113 http://www.freetype.org/ft2api.html.
Werner Lembergb5084e12000-10-28 17:10:06 +00002114
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002115 - Changed `type1' to use `psaux'.
David Turner046f7a02000-09-15 22:42:06 +00002116
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002117 - Created a new module named `psaux' to hold the Type 1 & Type 2
2118 parsing routines. It should be used by `type1', `cid', and `cff'
Werner Lembergab6d1072001-04-02 21:30:06 +00002119 in the future.
David Turner34f1c2f2000-08-23 22:47:44 +00002120
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002121 - Fixed an important bug in `FT_Glyph_Get_CBox'.
David Turner3b2c50e2000-08-23 21:11:13 +00002122
Werner Lembergab6d1072001-04-02 21:30:06 +00002123 - Fixed some compiler warnings that happened since the TrueType
2124 bytecode decoder was deactivated by default.
David Turnera39acf52000-08-23 02:47:57 +00002125
Werner Lembergab6d1072001-04-02 21:30:06 +00002126 - Fixed two memory leaks:
David Turnera39acf52000-08-23 02:47:57 +00002127
Werner Lembergab6d1072001-04-02 21:30:06 +00002128 * The memory manager (16 bytes) isn't released in
2129 FT_Done_FreeType!
2130 * Using custom input streams, the copy of the original stream was
2131 never released.
David Turnera39acf52000-08-23 02:47:57 +00002132
Werner Lembergab6d1072001-04-02 21:30:06 +00002133 - Fixed the auto-hinter by performing automatic computation of the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002134 `filling direction' of each glyph. This is done through a simple
Werner Lembergab6d1072001-04-02 21:30:06 +00002135 and fast approximation, and seems to work (problems spotted by
2136 Werner though). The Arphic fonts are a lot nicer though there are
2137 still a lot of things to do to handle Asian fonts correctly.
David Turnera39acf52000-08-23 02:47:57 +00002138
David Turnerb1693412000-07-27 21:48:48 +00002139
Werner Lembergab6d1072001-04-02 21:30:06 +00002140======================================================================
Werner Lemberge4b32a52000-10-31 20:42:18 +00002141
David Turnerc5cdf8b2000-07-27 21:40:22 +00002142BETA-8 (RELEASE CANDIDATE) CHANGES
2143
Werner Lembergab6d1072001-04-02 21:30:06 +00002144 - Deactivated the TrueType bytecode interpreter by default.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002145
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002146 - Deactivated the `src/type1' font driver. Now `src/type1z' is used
Werner Lembergab6d1072001-04-02 21:30:06 +00002147 by default.
David Turner5f5b4462000-07-26 19:13:51 +00002148
Werner Lembergab6d1072001-04-02 21:30:06 +00002149 - Updates to the build system. We now compile the library correctly
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002150 under Unix system through `configure' which is automatically
2151 called on the first `make' invocation.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002152
Werner Lembergab6d1072001-04-02 21:30:06 +00002153 - Added the auto-hinting module! Fixing some bugs here and there.
David Turner5fe4c002000-07-26 19:04:08 +00002154
Werner Lembergab6d1072001-04-02 21:30:06 +00002155 - Found some bugs in the composite loader (seac) of the Type1-based
2156 font drivers.
David Turner49bd4f02000-07-12 16:57:37 +00002157
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002158 - Renamed the directory `freetype2/config' to `freetype2/builds' and
Werner Lembergab6d1072001-04-02 21:30:06 +00002159 updated all relevant files.
David Turner1ca6f2d2000-07-08 00:49:43 +00002160
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002161 - Found a memory leak in the `type1' driver.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002162
Werner Lembergab6d1072001-04-02 21:30:06 +00002163 - Incorporated Tom's patches to support flex operators correctly in
2164 OpenType/CFF fonts. Now all I need is to support pure CFF and CEF
2165 fonts to be done with this driver :-)
David Turner9b3d1c72000-07-07 19:47:34 +00002166
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002167 - Added the Windows FNT/FON driver in `src/winfonts'. For now, it
2168 always `simulates' a Unicode charmap, so it shouldn't be
Werner Lembergab6d1072001-04-02 21:30:06 +00002169 considered completed right now.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002170
Werner Lembergab6d1072001-04-02 21:30:06 +00002171 It is there to be more a proof of concept than anything else
2172 anyway. The driver is a single C source file, that compiles to 3
2173 Kb of code.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002174
Werner Lembergab6d1072001-04-02 21:30:06 +00002175 I'm still working on the PCF/BDF drivers, but I'm too lazy to
2176 finish them now.
David Turner9b3d1c72000-07-07 19:47:34 +00002177
David Turnerc06aba22000-06-30 23:38:23 +00002178 - CHANGES TO THE HIGH-LEVEL API
Werner Lemberge4b32a52000-10-31 20:42:18 +00002179
Werner Lembergab6d1072001-04-02 21:30:06 +00002180 * FT_Get_Kerning has a new parameter that allows you to select the
2181 coordinates of the kerning vector (font units, scaled, scaled +
2182 grid-fitted).
2183 * The outline functions are now in <freetype/ftoutln.h> and not
2184 part of <freetype/freetype.h> anymore.
2185 * <freetype/ftmodule.h> now contains declarations for
2186 FT_New_Library, FT_Done_Library, FT_Add_Default_Modules.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002187 * The so-called convenience functions have moved from `ftoutln.c'
2188 to `ftglyph.c', and are thus available with this optional
Werner Lembergab6d1072001-04-02 21:30:06 +00002189 component of the library. They are declared in
2190 <freetype/ftglyph.h> now.
2191 * Anti-aliased rendering is now the default for FT_Render_Glyph
David Turnerc06aba22000-06-30 23:38:23 +00002192 (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
2193 To generate a monochrome bitmap, use ft_render_mode_mono, or the
Werner Lembergab6d1072001-04-02 21:30:06 +00002194 FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char.
David Turnerc06aba22000-06-30 23:38:23 +00002195 FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
Werner Lembergab6d1072001-04-02 21:30:06 +00002196 * <freetype/freetype.h> now include <freetype/config/ftconfig.h>,
David Turnerc06aba22000-06-30 23:38:23 +00002197 solving a few headaches :-)
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002198 * The type FT_GlyphSlotRec has now a `library' field.
David Turnerc06aba22000-06-30 23:38:23 +00002199
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002200 - CHANGES TO THE `ftglyph.h' API
Werner Lemberge4b32a52000-10-31 20:42:18 +00002201
Werner Lembergab6d1072001-04-02 21:30:06 +00002202 This API has been severely modified in order to make it simpler,
2203 clearer, and more efficient. It certainly now looks like a real
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002204 `glyph factory' object, and allows client applications to manage
Werner Lembergab6d1072001-04-02 21:30:06 +00002205 (i.e. transform, bbox and render) glyph images without ever
2206 knowing their original format.
David Turnerc06aba22000-06-30 23:38:23 +00002207
Werner Lembergab6d1072001-04-02 21:30:06 +00002208 - Added support for CID-keyed fonts to the CFF driver. Maybe
2209 support for pure CFF + CEF fonts should come in?
David Turner9d636b62000-06-27 23:32:27 +00002210
Werner Lembergab6d1072001-04-02 21:30:06 +00002211 - Cleaned up source code in order to avoid two functions with the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002212 same name. Also changed the names of the files in `type1z' from
2213 `t1XXXX' to `z1XXXX' in order to avoid any conflicts.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002214
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002215 `make multi' now works well :-)
Werner Lemberge4b32a52000-10-31 20:42:18 +00002216
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002217 Also removed the use of `cidafm' for now, even if the source files
Werner Lembergab6d1072001-04-02 21:30:06 +00002218 are still there. This functionality will certainly go into a
2219 specific module.
David Turnerc06aba22000-06-30 23:38:23 +00002220
Werner Lemberge4b32a52000-10-31 20:42:18 +00002221 - ADDED SUPPORT FOR THE AUTO-HINTER
2222
Werner Lembergab6d1072001-04-02 21:30:06 +00002223 It works :-) I have a demo program which simply is a copy of
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002224 `ftview' that does a `FT_Add_Module(library,
Werner Lembergab6d1072001-04-02 21:30:06 +00002225 &autohinter_module_class)' after library initialization, and Type
2226 1 & OpenType/CFF fonts are now hinted.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002227
Werner Lembergab6d1072001-04-02 21:30:06 +00002228 CID fonts are not hinted, as they include no charmap and the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002229 auto-hinter doesn't include `generic' global metrics computations
Werner Lembergab6d1072001-04-02 21:30:06 +00002230 yet.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002231
Werner Lembergab6d1072001-04-02 21:30:06 +00002232 Now, I need to release this thing to the FreeType 2 source.
David Turner9d636b62000-06-27 23:32:27 +00002233
2234 - CHANGES TO THE RENDERER MODULES
Werner Lemberge4b32a52000-10-31 20:42:18 +00002235
Werner Lembergab6d1072001-04-02 21:30:06 +00002236 The monochrome and smooth renderers are now in two distinct
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002237 directories, namely `src/raster1' and `src/smooth'. Note that the
2238 old `src/renderer' is now gone.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002239
Werner Lembergab6d1072001-04-02 21:30:06 +00002240 I ditched the 5-gray-levels renderers. Basically, it involved a
2241 simple #define toggle in 'src/raster1/ftraster.c'.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002242
Werner Lembergab6d1072001-04-02 21:30:06 +00002243 FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now
2244 select the best renderer available, depending on render mode. If
2245 the current renderer for a given glyph image format isn't capable
2246 of supporting the render mode, another one will be found in the
2247 library's list. This means that client applications do not need
2248 to switch or set the renderers themselves (as in the latest
2249 change), they'll get what they want automatically. At last.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002250
Werner Lembergab6d1072001-04-02 21:30:06 +00002251 Changed the demo programs accordingly.
David Turner9d636b62000-06-27 23:32:27 +00002252
David Turnerf0df85b2000-06-22 00:17:42 +00002253 - MAJOR INTERNAL REDESIGN:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002254
Werner Lembergab6d1072001-04-02 21:30:06 +00002255 A lot of internal modifications have been performed lately on the
David Turnerf0df85b2000-06-22 00:17:42 +00002256 source in order to provide the following enhancements:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002257
Werner Lembergab6d1072001-04-02 21:30:06 +00002258 * More generic module support:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002259
Werner Lembergab6d1072001-04-02 21:30:06 +00002260 The FT_Module type is now defined to represent a handle to a
2261 given module. The file <freetype/ftmodule.h> contains the
2262 FT_Module_Class definition, as well as the module-loading public
2263 API.
David Turnerf0df85b2000-06-22 00:17:42 +00002264
Werner Lembergab6d1072001-04-02 21:30:06 +00002265 The FT_Driver type is still defined, and still represents a
2266 pointer to a font driver. Note that FT_Add_Driver is replaced
2267 by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc.
2268
2269 * Support for generic glyph image types:
2270
2271 The FT_Renderer type is a pointer to a module used to perform
2272 various operations on glyph image.
2273
2274 Each renderer is capable of handling images in a single format
2275 (e.g. ft_glyph_format_outline). Its functions are used to:
2276
2277 - transform an glyph image
2278 - render a glyph image into a bitmap
2279 - return the control box (dimensions) of a given glyph image
2280
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002281 The scan converters `ftraster.c' and `ftgrays.c' have been moved
2282 to the new directory `src/renderer', and are used to provide two
Werner Lembergab6d1072001-04-02 21:30:06 +00002283 default renderer modules.
2284
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002285 One corresponds to the `standard' scan-converter, the other to
2286 the `smooth' one.
Werner Lembergab6d1072001-04-02 21:30:06 +00002287
2288 he current renderer can be set through the new function
2289 FT_Set_Renderer.
2290
2291 The old raster-related function FT_Set_Raster, FT_Get_Raster and
2292 FT_Set_Raster_Mode have now disappeared, in favor of the new:
2293
2294 FT_Get_Renderer
2295 FT_Set_Renderer
2296
2297 See the file <freetype/ftrender.h> for more details.
2298
2299 These changes were necessary to properly support different
2300 scalable formats in the future, like bi-color glyphs, etc.
2301
2302 * Glyph loader object:
2303
2304 A new internal object, called a 'glyph loader' has been
2305 introduced in the base layer. It is used by all scalable format
2306 font drivers to load glyphs and composites.
2307
2308 This object has been created to reduce the code size of each
2309 driver, as each one of them basically re-implemented its
2310 functionality.
2311
2312 See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
2313 more information.
2314
2315 * FT_GlyphSlot has new fields:
2316
2317 In order to support extended features (see below), the
2318 FT_GlyphSlot structure has a few new fields:
2319
2320 linearHoriAdvance:
2321
2322 This field gives the linearly scaled (i.e. scaled but
2323 unhinted) advance width for the glyph, expressed as a 16.16
2324 fixed pixel value. This is useful to perform WYSIWYG text.
2325
2326 linearVertAdvance:
2327 This field gives the linearly scaled advance height for the
2328 glyph (relevant in vertical glyph layouts only). This is
2329 useful to perform WYSIWYG text.
2330
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002331 Note that the two above field replace the removed `metrics2'
Werner Lembergab6d1072001-04-02 21:30:06 +00002332 field in the glyph slot.
2333
2334 advance:
2335 This field is a vector that gives the transformed advance for
2336 the glyph. By default, it corresponds to the advance width,
2337 unless FT_LOAD_VERTICAL_LAYOUT was specified when calling
2338 FT_Load_Glyph or FT_Load_Char.
2339
2340 bitmap_left:
2341 This field gives the distance in integer pixels from the
2342 current pen position to the left-most pixel of a glyph image
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002343 IF IT IS A BITMAP. It is only valid when the `format' field
2344 is set to `ft_glyph_format_bitmap', for example, after calling
Werner Lembergab6d1072001-04-02 21:30:06 +00002345 the new function FT_Render_Glyph.
2346
2347 bitmap_top:
2348 This field gives the distance in integer pixels from the
2349 current pen position (located on the baseline) to the top-most
2350 pixel of the glyph image IF IT IS A BITMAP. Positive values
2351 correspond to upwards Y.
2352
2353 loader:
2354 This is a new private field for the glyph slot. Client
2355 applications should not touch it.
David Turnerf0df85b2000-06-22 00:17:42 +00002356
2357
Werner Lembergab6d1072001-04-02 21:30:06 +00002358 * Support for transforms and direct rendering in FT_Load_Glyph:
David Turnerf0df85b2000-06-22 00:17:42 +00002359
Werner Lembergab6d1072001-04-02 21:30:06 +00002360 Most of the functionality found in <freetype/ftglyph.h> has been
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002361 moved to the core library. Hence, the following:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002362
Werner Lembergab6d1072001-04-02 21:30:06 +00002363 - A transform can be specified for a face through
2364 FT_Set_Transform. this transform is applied by FT_Load_Glyph
2365 to scalable glyph images (i.e. NOT TO BITMAPS) before the
2366 function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM
2367 was set in the load flags.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002368
Werner Lembergab6d1072001-04-02 21:30:06 +00002369 - Once a glyph image has been loaded, it can be directly
2370 converted to a bitmap by using the new FT_Render_Glyph
2371 function. Note that this function takes the glyph image from
2372 the glyph slot, and converts it to a bitmap whose properties
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002373 are returned in `face.glyph.bitmap', `face.glyph.bitmap_left'
2374 and `face.glyph.bitmap_top'. The original native image might
Werner Lembergab6d1072001-04-02 21:30:06 +00002375 be lost after the conversion.
2376
2377 - When using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph
2378 and FT_Load_Char functions will call FT_Render_Glyph
2379 automatically when needed.
2380
2381 - Reformatted all modules source code in order to get rid of the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002382 basic data types redifinitions (i.e. `TT_Int' instead of `FT_Int',
2383 `T1_Fixed' instead of `FT_Fixed'). Hence the format-specific
2384 prefixes like `TT_', `T1_', `T2_' and `CID_' are only used for
Werner Lembergab6d1072001-04-02 21:30:06 +00002385 relevant structures.
David Turnerf0df85b2000-06-22 00:17:42 +00002386
2387
Werner Lembergab6d1072001-04-02 21:30:06 +00002388======================================================================
Werner Lemberge4b32a52000-10-31 20:42:18 +00002389
David Turnerf9b8dec2000-06-16 19:34:52 +00002390OLD CHANGES FOR BETA 7
David Turner3475e7f2000-05-17 20:56:01 +00002391
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002392 - bug-fixed the OpenType/CFF parser. It now loads and displays my
Werner Lembergab6d1072001-04-02 21:30:06 +00002393 two fonts nicely, but I'm pretty certain that more testing is
2394 needed :-)
Werner Lemberge4b32a52000-10-31 20:42:18 +00002395
David Turner2b9be992000-06-07 23:41:17 +00002396 - fixed the crummy Type 1 hinter, it now handles accented characters
Werner Lembergab6d1072001-04-02 21:30:06 +00002397 correctly (well, the accent is not always well placed, but that's
David Turner2b9be992000-06-07 23:41:17 +00002398 another problem..)
2399
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002400 - added the CID-keyed Type 1 driver in `src/cid'. Works pretty well
Werner Lembergab6d1072001-04-02 21:30:06 +00002401 for only 13 Kb of code ;-) Doesn't read AFM files though, nor the
2402 really useful CMAP files..
David Turner04aa8002000-06-01 03:27:48 +00002403
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002404 - fixed two bugs in the smooth renderer (src/base/ftgrays.c).
2405 Thanks to Boris Letocha for spotting them and providing a fix.
David Turner04aa8002000-06-01 03:27:48 +00002406
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002407 - fixed potential `divide by zero' bugs in ftcalc.c.
David Turner4f99c3c2000-05-29 20:55:13 +00002408
Werner Lembergab6d1072001-04-02 21:30:06 +00002409 - added source code for the OpenType/CFF driver (still incomplete
2410 though..)
David Turner4f99c3c2000-05-29 20:55:13 +00002411
Werner Lembergab6d1072001-04-02 21:30:06 +00002412 - modified the SFNT driver slightly to perform more robust header
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002413 checks in TT_Load_SFNT_Header. This prevents certain font files
Werner Lembergab6d1072001-04-02 21:30:06 +00002414 (e.g. some Type 1 Multiple Masters) from being incorrectly
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002415 `recognized' as TrueType font files..
David Turner4f99c3c2000-05-29 20:55:13 +00002416
Werner Lembergab6d1072001-04-02 21:30:06 +00002417 - moved a lot of stuff from the TrueType driver to the SFNT module,
2418 this allows greater code re-use between font drivers
2419 (e.g. TrueType, OpenType, Compact-TrueType, etc..)
David Turner2e421312000-05-26 22:13:17 +00002420
2421 - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
2422 to minimally speed it up..
2423
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002424 - added support for Multiple Master fonts in `type1z'. There is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002425 also a new file named <freetype/ftmm.h> which defines functions to
David Turner11187202000-05-26 17:13:23 +00002426 manage them from client applications.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002427
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002428 The new file `src/base/ftmm.c' is also optional to the engine..
David Turner11187202000-05-26 17:13:23 +00002429
Werner Lembergab6d1072001-04-02 21:30:06 +00002430 - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) +
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002431 small bug fixes in FT_Load_Glyph, the `type1' driver, etc..
David Turner11187202000-05-26 17:13:23 +00002432
David Turnerf5dcdd52000-05-23 22:16:27 +00002433 - a minor fix to the Type 1 driver to let them apply the font matrix
2434 correctly (used for many oblique fonts..)
2435
David Turner51179f02000-05-18 16:18:05 +00002436 - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002437 to use %p instead of %lx). Thanks to Karl Robillard.
David Turner51179f02000-05-18 16:18:05 +00002438
Werner Lembergab6d1072001-04-02 21:30:06 +00002439 - fixed some bugs in the sbit loader (src/base/sfnt/ttsbit.c) +
2440 added a new flag, FT_LOAD_CROP_BITMAP to query that bitmaps be
2441 cropped when loaded from a file (maybe I should move the bitmap
2442 cropper to the base layer ??).
David Turner109fcf62000-05-17 23:35:37 +00002443
Werner Lembergab6d1072001-04-02 21:30:06 +00002444 - changed the default number of gray levels of the smooth renderer
2445 to 256 (instead of the previous 128). Of course, the human eye
2446 can't see any difference ;-)
David Turner3475e7f2000-05-17 20:56:01 +00002447
Werner Lembergab6d1072001-04-02 21:30:06 +00002448 - removed TT_MAX_SUBGLYPHS, there is no static limit on the number
2449 of subglyphs in a TrueType font now..
David Turner3475e7f2000-05-17 20:56:01 +00002450
Werner Lembergab6d1072001-04-02 21:30:06 +00002451
2452======================================================================
2453
David Turner3475e7f2000-05-17 20:56:01 +00002454OLD CHANGES 16 May 2000
David Turnerefce08d2000-05-11 18:23:52 +00002455
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002456 - tagged `BETA-6' in the CVS tree. This one is a serious release
Werner Lembergab6d1072001-04-02 21:30:06 +00002457 candidate even though it doesn't incorporate the auto-hinter yet..
David Turner968f0c32000-05-16 23:26:01 +00002458
2459 - various obsolete files were removed, and copyright header updated
2460
Werner Lembergab6d1072001-04-02 21:30:06 +00002461 - finally updated the standard raster to fix the monochrome
2462 rendering bug + re-enable support for 5-gray levels anti-aliasing
2463 (suck, suck..)
David Turner968f0c32000-05-16 23:26:01 +00002464
2465 - created new header files, and modified sources accordingly:
David Turnere49ab252000-05-16 23:44:38 +00002466
Werner Lembergab6d1072001-04-02 21:30:06 +00002467 <freetype/fttypes.h>
2468 - simple FreeType types, without the API
2469 <freetype/internal/ftmemory.h>
2470 - definition of memory-management macros
David Turner968f0c32000-05-16 23:26:01 +00002471
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002472 - added the `DSIG' (OpenType Digital Signature) tag to
Werner Lembergab6d1072001-04-02 21:30:06 +00002473 <freetype/tttags.h>
David Turner968f0c32000-05-16 23:26:01 +00002474
Werner Lembergab6d1072001-04-02 21:30:06 +00002475 - light update/cleaning of the build system + changes to the sources
2476 in order to get rid of _all_ compiler warnings with three
2477 compilers, i.e:
David Turnerc30aea92000-05-12 15:01:18 +00002478
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002479 gcc with `-ansi -pedantic -Wall -W', Visual C++ with `/W3 /WX' and
Werner Lembergab6d1072001-04-02 21:30:06 +00002480 LCC
David Turnerc30aea92000-05-12 15:01:18 +00002481
Werner Lembergab6d1072001-04-02 21:30:06 +00002482 IMPORTANT NOTE FOR WIN32-LCC USERS:
2483 |
2484 | It seems the C pre-processor that comes with LCC is broken, it
2485 | doesn't recognize the ANSI standard directives # and ##
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002486 | correctly when one of the argument is a macro. Also,
2487 | something like:
Werner Lembergab6d1072001-04-02 21:30:06 +00002488 |
2489 | #define F(x) print##x
2490 |
2491 | F(("hello"))
2492 |
2493 | will get incorrectly translated to:
2494 |
2495 | print "hello")
2496 |
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002497 | by its pre-processor. For this reason, you simply cannot build
Werner Lembergab6d1072001-04-02 21:30:06 +00002498 | FreeType 2 in debug mode with this compiler..
David Turnerc30aea92000-05-12 15:01:18 +00002499
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002500 - yet another massive grunt work. I've changed the definition of
2501 the EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These
2502 now take an argument, which is the function's return value type.
David Turnere49ab252000-05-16 23:44:38 +00002503
Werner Lembergab6d1072001-04-02 21:30:06 +00002504 This is necessary to compile FreeType as a DLL on Windows and
2505 OS/2. Depending on the compiler used, a compiler-specific keyword
2506 like __export or __system must be placed before (VisualC++) or
2507 after (BorlandC++) the type..
David Turnere49ab252000-05-16 23:44:38 +00002508
David Turnerbfe2f982000-05-12 12:17:15 +00002509 Of course, this needed a lot of changes throughout the source code
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002510 to make it compile again... All cleaned up now, apparently..
David Turnerbfe2f982000-05-12 12:17:15 +00002511
Werner Lembergab6d1072001-04-02 21:30:06 +00002512 Note also that there is a new EXPORT_VAR macro defined to allow
2513 the _declaration_ of an exportable public (constant)
2514 variable. This is the case of the raster interfaces (see
2515 ftraster.h and ftgrays.h), as well as each module's interface (see
2516 sfdriver.h, psdriver.h, etc..)
David Turnerbfe2f982000-05-12 12:17:15 +00002517
Werner Lembergab6d1072001-04-02 21:30:06 +00002518 - new feature: it is now possible to pass extra parameters to font
2519 drivers when creating a new face object. For now,
2520 this capability is unused. It could however prove to
2521 be useful in a near future..
David Turnerbfe2f982000-05-12 12:17:15 +00002522
Werner Lembergab6d1072001-04-02 21:30:06 +00002523 the FT_Open_Args structure was changes, as well as the internal
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002524 driver interface (the specific `init_face' module function has
Werner Lembergab6d1072001-04-02 21:30:06 +00002525 now a different signature).
David Turnerbfe2f982000-05-12 12:17:15 +00002526
2527 - updated the tutorial (not finished though).
Werner Lembergab6d1072001-04-02 21:30:06 +00002528
David Turnerc30aea92000-05-12 15:01:18 +00002529 - updated the top-level BUILD document
David Turnerbfe2f982000-05-12 12:17:15 +00002530
Werner Lembergab6d1072001-04-02 21:30:06 +00002531 - fixed a potential memory leak that could occur when loading
2532 embedded bitmaps.
David Turnerc60c61c2000-05-12 15:26:58 +00002533
Werner Lembergab6d1072001-04-02 21:30:06 +00002534 - added the declaration of FT_New_Memory_Face in
2535 <freetype/freetype.h>, as it was missing from the public header
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002536 (the implementation was already in `ftobjs.c').
David Turnerbfe2f982000-05-12 12:17:15 +00002537
Werner Lembergab6d1072001-04-02 21:30:06 +00002538 - the file <freetype/fterrors.h> has been seriously updated in order
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002539 to allow the automatic generation of error message tables. See
2540 the comments within it for more information.
David Turnerbfe2f982000-05-12 12:17:15 +00002541
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002542 - major directory hierarchy re-organisation. This was done for two
Werner Lembergab6d1072001-04-02 21:30:06 +00002543 things:
David Turnere49ab252000-05-16 23:44:38 +00002544
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002545 * first, to ease the `manual' compilation of the library by
Werner Lembergab6d1072001-04-02 21:30:06 +00002546 requiring at lot less include paths :-)
David Turnerbfe2f982000-05-12 12:17:15 +00002547
Werner Lembergab6d1072001-04-02 21:30:06 +00002548 * second, to allow external programs to effectively access
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002549 internal data fields. For example, this can be extremely
Werner Lembergab6d1072001-04-02 21:30:06 +00002550 useful if someone wants to write a font producer or a font
2551 manager on top of FreeType.
David Turnera9c251c2000-05-11 18:36:19 +00002552
Werner Lembergab6d1072001-04-02 21:30:06 +00002553 Basically, you should now use the 'freetype/' prefix for header
2554 inclusion, as in:
David Turnere49ab252000-05-16 23:44:38 +00002555
David Turnera9c251c2000-05-11 18:36:19 +00002556 #include <freetype/freetype.h>
2557 #include <freetype/ftglyph.h>
2558
2559 Some new include sub-directories are available:
David Turnere49ab252000-05-16 23:44:38 +00002560
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002561 a. the `freetype/config' directory, contains two files used to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002562 configure the build of the library. Client applications
2563 should not need to look at these normally, but they can if
2564 they want.
David Turnere49ab252000-05-16 23:44:38 +00002565
David Turnera9c251c2000-05-11 18:36:19 +00002566 #include <freetype/config/ftoption.h>
2567 #include <freetype/config/ftconfig.h>
David Turnere49ab252000-05-16 23:44:38 +00002568
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002569 b. the `freetype/internal' directory, contains header files that
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002570 describes library internals. These are the header files that
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002571 were previously found in the `src/base' and `src/shared'
Werner Lembergab6d1072001-04-02 21:30:06 +00002572 directories.
David Turnera9c251c2000-05-11 18:36:19 +00002573
2574
Werner Lembergab6d1072001-04-02 21:30:06 +00002575 As usual, the build system and the demos have been updated to
2576 reflect the change..
David Turnere49ab252000-05-16 23:44:38 +00002577
David Turnera9c251c2000-05-11 18:36:19 +00002578 Here's a layout of the new directory hierarchy:
David Turnere49ab252000-05-16 23:44:38 +00002579
Werner Lemberg89df58f2002-06-14 08:09:25 +00002580 TOP_DIR
David Turnera9c251c2000-05-11 18:36:19 +00002581 include/
2582 freetype/
2583 freetype.h
2584 ...
2585 config/
2586 ftoption.h
2587 ftconfig.h
2588 ftmodule.h
David Turnere49ab252000-05-16 23:44:38 +00002589
David Turnera9c251c2000-05-11 18:36:19 +00002590 internal/
2591 ftobjs.h
2592 ftstream.h
2593 ftcalc.h
2594 ...
David Turnere49ab252000-05-16 23:44:38 +00002595
David Turnera9c251c2000-05-11 18:36:19 +00002596 src/
2597 base/
2598 ...
David Turnere49ab252000-05-16 23:44:38 +00002599
David Turnera9c251c2000-05-11 18:36:19 +00002600 sfnt/
2601 psnames/
2602 truetype/
2603 type1/
2604 type1z/
2605
2606
Werner Lembergab6d1072001-04-02 21:30:06 +00002607 Compiling a module is now much easier, for example, the following
Werner Lemberg89df58f2002-06-14 08:09:25 +00002608 should work when in the TOP_DIR directory on an ANSI build:
David Turnere49ab252000-05-16 23:44:38 +00002609
David Turnera9c251c2000-05-11 18:36:19 +00002610 gcc -c -I./include -I./src/base src/base/ftbase.c
2611 gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
2612 etc..
2613
2614 (of course, using -Iconfig/<system> if you provide system-specific
2615 configuration files).
David Turnerefce08d2000-05-11 18:23:52 +00002616
Werner Lembergab6d1072001-04-02 21:30:06 +00002617 - updated the structure of FT_Outline_Funcs in order to allow direct
2618 coordinate scaling within the outline decomposition routine (this
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002619 is important for virtual `on' points with TrueType outlines) +
Werner Lembergab6d1072001-04-02 21:30:06 +00002620 updates to the rasters to support this..
David Turnerefce08d2000-05-11 18:23:52 +00002621
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002622 - updated the OS/2 table loading code in `src/sfnt/ttload.c' in
Werner Lembergab6d1072001-04-02 21:30:06 +00002623 order to support version 2 of the table (see OpenType 1.2 spec)
David Turnerefce08d2000-05-11 18:23:52 +00002624
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002625 - created `include/tttables.h' and `include/t1tables.h' to allow
Werner Lembergab6d1072001-04-02 21:30:06 +00002626 client applications to access some of the SFNT and T1 tables of a
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002627 face with a procedural interface (see `FT_Get_Sfnt_Table') +
Werner Lembergab6d1072001-04-02 21:30:06 +00002628 updates to internal source files to reflect the change..
David Turnerefce08d2000-05-11 18:23:52 +00002629
Werner Lembergab6d1072001-04-02 21:30:06 +00002630 - some cleanups in the source code to get rid of warnings when
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002631 compiling with the `-Wall -W -ansi -pedantic' options in gcc.
David Turnerefce08d2000-05-11 18:23:52 +00002632
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002633 - debugged and moved the smooth renderer to `src/base/ftgrays.c' and
2634 its header to `include/ftgrays.h'
David Turnerefce08d2000-05-11 18:23:52 +00002635
Werner Lembergab6d1072001-04-02 21:30:06 +00002636 - updated TT_MAX_SUBGLYPHS to 96 as some CJK fonts have composites
2637 with up to 80 sub-glyphs !! Thanks to Werner
David Turnerefce08d2000-05-11 18:23:52 +00002638
Werner Lembergab6d1072001-04-02 21:30:06 +00002639
2640======================================================================
2641
David Turnerefce08d2000-05-11 18:23:52 +00002642OLD CHANGES - 14-apr-2000
David Turner77054f22000-04-14 20:49:52 +00002643
Werner Lembergab6d1072001-04-02 21:30:06 +00002644 - fixed a bug in the TrueType glyph loader that prevented the
2645 correct loading of some CJK glyphs in mingli.ttf
David Turnere49ab252000-05-16 23:44:38 +00002646
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002647 - improved the standard Type 1 hinter in `src/type1'
David Turnere49ab252000-05-16 23:44:38 +00002648
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002649 - fixed two bugs in the experimental Type 1 driver in `src/type1z'
David Turner77054f22000-04-14 20:49:52 +00002650 to handle the new XFree86 4.0 fonts (and a few other ones..)
2651
Werner Lembergab6d1072001-04-02 21:30:06 +00002652 - the smooth renderer is now complete and supports sub-banding to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002653 render large glyphs at high speed. However, it is still located
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002654 in `demos/src/ftgrays.c' and should move to the library itself in
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002655 the next beta. NOTE: The smooth renderer doesn't compile in
David Turner77054f22000-04-14 20:49:52 +00002656 stand-alone mode anymore, but this should be fixed RSN..
David Turnere49ab252000-05-16 23:44:38 +00002657
Werner Lembergab6d1072001-04-02 21:30:06 +00002658 - introduced convenience functions to more easily deal with glyph
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002659 images, see `include/ftglyph.h' for more details, as well as the
2660 new demo program named `demos/src/ftstring.c' that demonstrates
David Turner77054f22000-04-14 20:49:52 +00002661 its use
2662
Werner Lembergab6d1072001-04-02 21:30:06 +00002663 - implemented FT_LOAD_NO_RECURSE in both the TrueType and Type 1
2664 drivers (this is required by the auto-hinter to improve its
2665 results).
David Turner77054f22000-04-14 20:49:52 +00002666
Werner Lembergab6d1072001-04-02 21:30:06 +00002667 - changed the raster interface, in order to allow client
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002668 applications to provide their own span-drawing callbacks.
2669 However, only the smooth renderer supports this. See
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002670 `FT_Raster_Params' in the file `include/ftimage.h'.
David Turner77054f22000-04-14 20:49:52 +00002671
Werner Lembergab6d1072001-04-02 21:30:06 +00002672 - fixed a small bug in FT_MulFix that caused incorrect transform
2673 computation!
David Turner77054f22000-04-14 20:49:52 +00002674
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002675 - Note: The tutorial is out-of-date.
David Turner77054f22000-04-14 20:49:52 +00002676
Werner Lembergab6d1072001-04-02 21:30:06 +00002677
2678======================================================================
2679
David Turner77054f22000-04-14 20:49:52 +00002680OLD CHANGES - 12-mar-2000
David Turnerc3c7e7f2000-03-13 14:19:31 +00002681
Werner Lembergab6d1072001-04-02 21:30:06 +00002682 - changed the layout of configuration files : now, all ANSI
2683 configuration files are located in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002684 `freetype2/config'. System-specific over-rides can be placed in
2685 `freetype2/config/<system>'.
David Turnere49ab252000-05-16 23:44:38 +00002686
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002687 - moved all configuration macros to `config/ftoption.h'
David Turnere49ab252000-05-16 23:44:38 +00002688
David Turnerc3c7e7f2000-03-13 14:19:31 +00002689 - improvements in the Type 1 driver with AFM support
David Turnere49ab252000-05-16 23:44:38 +00002690
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002691 - changed the fields in the FT_Outline structure : the old `flags'
2692 array is re-named `tags', while all ancient flags are encoded into
2693 a single unsigned int named `flags'.
David Turnerc3c7e7f2000-03-13 14:19:31 +00002694
Werner Lembergab6d1072001-04-02 21:30:06 +00002695 - introduced new flags in FT_Outline.flags (see
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002696 ft_outline_.... enums in `ftimage.h').
David Turnerc3c7e7f2000-03-13 14:19:31 +00002697
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002698 - changed outline functions to `FT_Outline_<action>' syntax
David Turnerc3c7e7f2000-03-13 14:19:31 +00002699
2700 - added a smooth anti-alias renderer to the demonstration programs
Werner Lembergab6d1072001-04-02 21:30:06 +00002701
David Turnerc3c7e7f2000-03-13 14:19:31 +00002702 - added Mac graphics driver (thanks Just)
David Turnere49ab252000-05-16 23:44:38 +00002703
Werner Lembergab6d1072001-04-02 21:30:06 +00002704 - FT_Open_Face changed in order to received a pointer to a
2705 FT_Open_Args descriptor..
David Turnere49ab252000-05-16 23:44:38 +00002706
Werner Lembergab6d1072001-04-02 21:30:06 +00002707 - various cleanups, a few more API functions implemented (see
2708 FT_Attach_File)
David Turnerc3c7e7f2000-03-13 14:19:31 +00002709
2710 - updated some docs
2711
Werner Lembergab6d1072001-04-02 21:30:06 +00002712
2713======================================================================
2714
David Turnerc3c7e7f2000-03-13 14:19:31 +00002715OLD CHANGES - 22-feb-2000
David Turner58c10b52000-02-22 14:31:42 +00002716
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002717 - introduced the `psnames' module. It is used to:
David Turner58c10b52000-02-22 14:31:42 +00002718
Werner Lembergab6d1072001-04-02 21:30:06 +00002719 o convert a Postscript glyph name into the equivalent Unicode
Werner Lembergb4142d52007-01-17 12:45:26 +00002720 character code (used by the Type 1 driver(s) to synthesize on
Werner Lembergab6d1072001-04-02 21:30:06 +00002721 the fly a Unicode charmap).
David Turner58c10b52000-02-22 14:31:42 +00002722
Werner Lembergab6d1072001-04-02 21:30:06 +00002723 o provide an interface to retrieve the Postscript names of the
2724 Macintosh, Adobe Standard & Adobe Expert character codes.
2725 (the Macintosh names are used by the SFNT-module postscript
2726 names support routines, while the other two tables are used by
2727 the Type 1 driver(s)).
David Turner58c10b52000-02-22 14:31:42 +00002728
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002729 - introduced the `type1z' alternate Type 1 driver. This is a (still
Werner Lembergab6d1072001-04-02 21:30:06 +00002730 experimental) driver for the Type 1 format that will ultimately
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002731 replace the one in `src/type1'. It uses pattern matching to load
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002732 data from the font, instead of a finite state analyzer. It works
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002733 much better than the `old' driver with `broken' fonts. It is also
David Turner58c10b52000-02-22 14:31:42 +00002734 much smaller (under 15 Kb).
2735
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002736 - the Type 1 drivers (both in `src/type1' and `src/type1z') are
Werner Lembergab6d1072001-04-02 21:30:06 +00002737 nearly complete. They both provide automatic Unicode charmap
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002738 synthesis through the `psnames' module. No re-encoding vector is
Werner Lembergab6d1072001-04-02 21:30:06 +00002739 needed. (note that they still leak memory due to some code
David Turner58c10b52000-02-22 14:31:42 +00002740 missing, and I'm getting lazy).
2741
Werner Lembergab6d1072001-04-02 21:30:06 +00002742 Trivial AFM support has been added to read kerning information but
2743 wasn't exactly tested as it should ;-)
David Turner58c10b52000-02-22 14:31:42 +00002744
Werner Lembergab6d1072001-04-02 21:30:06 +00002745 - The TrueType glyph loader has been seriously rewritten (see the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002746 file `src/truetype/ttgload.c'. It is now much, much simpler as
Werner Lembergab6d1072001-04-02 21:30:06 +00002747 well as easier to read, maintain and understand :-) Preliminary
2748 versions introduced a memory leak that has been reported by Jack
David Turner58c10b52000-02-22 14:31:42 +00002749 Davis, and is now fixed..
2750
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002751 - introduced the new `ft_glyph_format_plotter', used to represent
2752 stroked outlines like Windows `Vector' fonts, and certain Type 1
2753 fonts like `Hershey'. The corresponding raster will be written
David Turner58c10b52000-02-22 14:31:42 +00002754 soon.
2755
Werner Lembergab6d1072001-04-02 21:30:06 +00002756 - FT_New_Memory_Face is gone. Likewise, FT_Open_Face has a new
2757 interface that uses a structure to describe the input stream, the
2758 driver (if required), etc..
2759
David Turner58c10b52000-02-22 14:31:42 +00002760
2761TODO
Werner Lembergab6d1072001-04-02 21:30:06 +00002762
David Turner58c10b52000-02-22 14:31:42 +00002763 - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
2764
Werner Lembergb4142d52007-01-17 12:45:26 +00002765 - Add a function like FT_Load_Character(face, char_code, load_flags)
2766 that would really embed a call to FT_Get_Char_Index then
Werner Lembergab6d1072001-04-02 21:30:06 +00002767 FT_Load_Glyph to ease developer's work.
David Turner58c10b52000-02-22 14:31:42 +00002768
Werner Lembergab6d1072001-04-02 21:30:06 +00002769 - Update the tutorial!
2770
2771 - consider adding support for Multiple Master fonts in the Type 1
David Turner58c10b52000-02-22 14:31:42 +00002772 drivers.
2773
Werner Lembergab6d1072001-04-02 21:30:06 +00002774 - Test the AFM routines of the Type 1 drivers to check that kerning
David Turner58c10b52000-02-22 14:31:42 +00002775 information is returned correctly.
2776
Werner Lembergab6d1072001-04-02 21:30:06 +00002777 - write a decent auto-gridding component !! We need this to release
David Turner58c10b52000-02-22 14:31:42 +00002778 FreeType 2.0 gold !
2779
2780
Werner Lembergab6d1072001-04-02 21:30:06 +00002781less urgent needs:
2782
David Turner58c10b52000-02-22 14:31:42 +00002783 - add a CFF/Type2 driver
2784 - add a BDF driver
2785 - add a FNT/PCF/HBF driver
2786 - add a Speedo driver from the X11 sources
2787
2788
Werner Lembergab6d1072001-04-02 21:30:06 +00002789======================================================================
2790
David Turner58c10b52000-02-22 14:31:42 +00002791OLDER CHANGES - 27-jan-2000
David Turner633da992000-01-27 14:07:33 +00002792
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002793 - updated the `sfnt' module interface to allow several SFNT-based
David Turner633da992000-01-27 14:07:33 +00002794 drivers to co-exist peacefully
David Turnere49ab252000-05-16 23:44:38 +00002795
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002796 - updated the `T1_Face' type to better separate Postscript font
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002797 content from the rest of the FT_Face structure. Might be used
Werner Lembergab6d1072001-04-02 21:30:06 +00002798 later by the CFF/Type2 driver..
David Turnere49ab252000-05-16 23:44:38 +00002799
David Turner633da992000-01-27 14:07:33 +00002800 - added an experimental replacement Type 1 driver featuring advanced
2801 (and speedy) pattern matching to retrieve the data from postscript
2802 fonts.
2803
Werner Lembergab6d1072001-04-02 21:30:06 +00002804 - very minor changes in the implementation of FT_Set_Char_Size and
Werner Lembergb4142d52007-01-17 12:45:26 +00002805 FT_Set_Pixel_Sizes (they now implement default to lighten the font
Werner Lembergab6d1072001-04-02 21:30:06 +00002806 driver's code).
David Turner633da992000-01-27 14:07:33 +00002807
2808
Werner Lembergab6d1072001-04-02 21:30:06 +00002809======================================================================
2810
David Turner633da992000-01-27 14:07:33 +00002811OLD MESSAGE
2812
Werner Lembergb4142d52007-01-17 12:45:26 +00002813This file summarizes the changes that occurred since the last `beta'
2814of FreeType 2. Because the list is important, it has been divided into
Werner Lembergab6d1072001-04-02 21:30:06 +00002815separate sections:
David Turnerd2b1f351999-12-16 23:11:37 +00002816
David Turner5951ce91999-12-29 00:53:44 +00002817Table Of Contents:
2818
2819 I High-Level Interface (easier !)
2820 II Directory Structure
2821 III Glyph Image Formats
2822 IV Build System
2823 V Portability
2824 VI Font Drivers
David Turnerd2b1f351999-12-16 23:11:37 +00002825
David Turnerd2b1f351999-12-16 23:11:37 +00002826
Werner Lembergab6d1072001-04-02 21:30:06 +00002827----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00002828
Werner Lembergab6d1072001-04-02 21:30:06 +00002829High-Level Interface:
David Turnere49ab252000-05-16 23:44:38 +00002830
Werner Lembergab6d1072001-04-02 21:30:06 +00002831 The high-level API has been considerably simplified. Here is how:
David Turnere49ab252000-05-16 23:44:38 +00002832
Werner Lembergab6d1072001-04-02 21:30:06 +00002833 - resource objects have disappeared. this means that face objects
2834 can now be created with a single function call (see FT_New_Face
2835 and FT_Open_Face)
David Turnere49ab252000-05-16 23:44:38 +00002836
Werner Lembergab6d1072001-04-02 21:30:06 +00002837 - when calling either FT_New_Face & FT_Open_Face, a size object
2838 and a glyph slot object are automatically created for the face,
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002839 and can be accessed through `face->glyph' and `face->size' if
Werner Lembergab6d1072001-04-02 21:30:06 +00002840 one really needs to. In most cases, there's no need to call
2841 FT_New_Size or FT_New_Glyph.
2842
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002843 - similarly, FT_Load_Glyph now only takes a `face' argument
Werner Lemberg4b2e83d2007-02-01 07:58:02 +00002844 (instead of a glyph slot and a size). Also, its `result'
Werner Lembergab6d1072001-04-02 21:30:06 +00002845 parameter is gone, as the glyph image type is returned in the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002846 field `face->glyph.format'
Werner Lembergab6d1072001-04-02 21:30:06 +00002847
2848 - the list of available charmaps is directly accessible through
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002849 `face->charmaps', counting `face->num_charmaps' elements. Each
Werner Lembergab6d1072001-04-02 21:30:06 +00002850 charmap has an 'encoding' field which specifies which known
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002851 encoding it deals with. Valid values are, for example:
David Turnere49ab252000-05-16 23:44:38 +00002852
David Turnerd2b1f351999-12-16 23:11:37 +00002853 ft_encoding_unicode (for ASCII, Latin-1 and Unicode)
2854 ft_encoding_apple_roman
2855 ft_encoding_sjis
2856 ft_encoding_adobe_standard
David Turner5951ce91999-12-29 00:53:44 +00002857 ft_encoding_adobe_expert
David Turnere49ab252000-05-16 23:44:38 +00002858
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002859 other values may be added in the future. Each charmap still
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002860 holds its `platform_id' and `encoding_id' values in case the
Werner Lembergab6d1072001-04-02 21:30:06 +00002861 encoding is too exotic for the current library
David Turnerd2b1f351999-12-16 23:11:37 +00002862
2863
Werner Lembergab6d1072001-04-02 21:30:06 +00002864----------------------------------------------------------------------
2865
David Turnerd2b1f351999-12-16 23:11:37 +00002866Directory Structure:
2867
2868 Should seem obvious to most of you:
2869
2870 freetype/
2871 config/ -- configuration sub-makefiles
2872 ansi/
David Turner5951ce91999-12-29 00:53:44 +00002873 unix/ -- platform-specific configuration files
David Turnerd2b1f351999-12-16 23:11:37 +00002874 win32/
2875 os2/
2876 msdos/
2877
Werner Lembergab6d1072001-04-02 21:30:06 +00002878 include/ -- public header files, those to be included
2879 directly by client apps
David Turnerd2b1f351999-12-16 23:11:37 +00002880
2881 src/ -- sources of the library
2882 base/ -- the base layer
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002883 sfnt/ -- the sfnt `driver' (see the drivers section
Werner Lembergab6d1072001-04-02 21:30:06 +00002884 below)
David Turnerd2b1f351999-12-16 23:11:37 +00002885 truetype/ -- the truetype driver
2886 type1/ -- the type1 driver
2887 shared/ -- some header files shared between drivers
2888
2889 demos/ -- demos/tools
2890
2891 docs/ -- documentation (a bit empty for now)
2892
David Turnerd2b1f351999-12-16 23:11:37 +00002893
Werner Lembergab6d1072001-04-02 21:30:06 +00002894----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00002895
Werner Lembergab6d1072001-04-02 21:30:06 +00002896Glyph Image Formats:
David Turnerd2b1f351999-12-16 23:11:37 +00002897
Werner Lembergab6d1072001-04-02 21:30:06 +00002898 Drivers are now able to register new glyph image formats within the
2899 library. For now, the base layer supports of course bitmaps and
2900 vector outlines, but one could imagine something different like
Werner Lembergb4142d52007-01-17 12:45:26 +00002901 colored bitmaps, bi-color vectors or whatever else (Metafonts anyone
Werner Lembergab6d1072001-04-02 21:30:06 +00002902 ??).
David Turnerd2b1f351999-12-16 23:11:37 +00002903
Werner Lembergab6d1072001-04-02 21:30:06 +00002904 See the file `include/ftimage.h'. Note also that the type
2905 FT_Raster_Map is gone, and is now replaced by FT_Bitmap, which
2906 should encompass all known bitmap types.
2907
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002908 Each new image format must provide at least one `raster', i.e. a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002909 module capable of transforming the glyph image into a bitmap. It's
Werner Lembergab6d1072001-04-02 21:30:06 +00002910 also possible to change the default raster used for a given glyph
2911 image format.
2912
2913 The default outline scan-converter now uses 128 levels of grays by
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002914 default, which tends to smooth many things. Note that the demo
Werner Lembergab6d1072001-04-02 21:30:06 +00002915 programs have been updated significantly in order to display these..
David Turnerd2b1f351999-12-16 23:11:37 +00002916
2917
Werner Lembergab6d1072001-04-02 21:30:06 +00002918----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00002919
Werner Lembergab6d1072001-04-02 21:30:06 +00002920Build system:
David Turnerd2b1f351999-12-16 23:11:37 +00002921
Werner Lembergab6d1072001-04-02 21:30:06 +00002922 You still need GNU Make to build the library. The build system has
2923 been very seriously re-vamped in order to provide things like :
2924
2925 - automatic host platform detection (reverting to 'config/ansi' if
2926 it is not detected, with pseudo-standard compilation flags)
David Turnerd2b1f351999-12-16 23:11:37 +00002927
2928 - the ability to compile from the Makefiles with very different and
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002929 exotic compilers. Note that linking the library can be difficult
Werner Lembergab6d1072001-04-02 21:30:06 +00002930 for some platforms.
David Turnerd2b1f351999-12-16 23:11:37 +00002931
2932 For example, the file `config/win32/lcclib.bat' is invoked by the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002933 build system to create the `.lib' file with LCC-Win32 because its
Werner Lembergab6d1072001-04-02 21:30:06 +00002934 librarian has too many flaws to be invoked directly from the
2935 Makefile.
David Turnerd2b1f351999-12-16 23:11:37 +00002936
Werner Lembergab6d1072001-04-02 21:30:06 +00002937 Here's how it works:
David Turnerd2b1f351999-12-16 23:11:37 +00002938
Werner Lembergab6d1072001-04-02 21:30:06 +00002939 - the first time you type `make', the build system runs a series of
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002940 sub-makefiles in order to detect your host platform. It then
2941 dumps what it found, and creates a file called `config.mk' in the
2942 current directory. This is a sub-Makefile used to define many
Werner Lembergab6d1072001-04-02 21:30:06 +00002943 important Make variables used to build the library.
David Turnerd2b1f351999-12-16 23:11:37 +00002944
Werner Lembergab6d1072001-04-02 21:30:06 +00002945 - the second time, the build system detects the `config.mk' then use
2946 it to build the library. All object files go into 'obj' by
2947 default, as well as the library file, but this can easily be
2948 changed.
David Turnerd2b1f351999-12-16 23:11:37 +00002949
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002950 Note that you can run `make setup' to force another host platform
Werner Lembergab6d1072001-04-02 21:30:06 +00002951 detection even if a `config.mk' is present in the current
2952 directory. Another solution is simply to delete the file, then
2953 re-run make.
David Turnerd2b1f351999-12-16 23:11:37 +00002954
Werner Lembergab6d1072001-04-02 21:30:06 +00002955 Finally, the default compiler for all platforms is gcc (for now,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002956 this will hopefully changed in the future). You can however specify
Werner Lembergab6d1072001-04-02 21:30:06 +00002957 a different compiler by specifying it after the 'setup' target as
2958 in:
David Turnerd2b1f351999-12-16 23:11:37 +00002959
2960 gnumake setup lcc on Win32 to use the LCC compiler
2961 gnumake setup visualc on Win32 to use Visual C++
2962
Werner Lembergab6d1072001-04-02 21:30:06 +00002963 See the file `config/<system>/detect.mk' for a list of supported
2964 compilers for your platforms.
David Turnerd2b1f351999-12-16 23:11:37 +00002965
Werner Lembergab6d1072001-04-02 21:30:06 +00002966 It should be relatively easy to write new detection rules files and
David Turnerd2b1f351999-12-16 23:11:37 +00002967 config.mk..
2968
Werner Lembergab6d1072001-04-02 21:30:06 +00002969 Finally, to build the demo programs, go to `demos' and launch GNU
2970 Make, it will use the `config.mk' in the top directory to build the
2971 test programs..
David Turnerd2b1f351999-12-16 23:11:37 +00002972
David Turnerd2b1f351999-12-16 23:11:37 +00002973
Werner Lembergab6d1072001-04-02 21:30:06 +00002974----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00002975
Werner Lembergab6d1072001-04-02 21:30:06 +00002976Portability:
David Turnerd2b1f351999-12-16 23:11:37 +00002977
Werner Lembergab6d1072001-04-02 21:30:06 +00002978 In the previous beta, a single FT_System object was used to
2979 encompass all low-level operations like thread synchronisation,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002980 memory management and i/o access. This has been greatly simplified:
Werner Lembergab6d1072001-04-02 21:30:06 +00002981
2982 - thread synchronisation has been dropped, for the simple reason
2983 that the library is already re-entrant, and that if you really
2984 need two threads accessing the same FT_Library, you should
2985 really synchronize access to it yourself with a simple mutex.
2986
2987 - memory management is performed through a very simple object
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002988 called `FT_Memory', which really is a table containing a table
Werner Lembergab6d1072001-04-02 21:30:06 +00002989 of pointers to functions like malloc, realloc and free as well
2990 as some user data (closure).
David Turnerd2b1f351999-12-16 23:11:37 +00002991
2992 - resources have disappeared (they created more problems than they
Werner Lembergab6d1072001-04-02 21:30:06 +00002993 solved), and i/o management have been simplified greatly as a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002994 result. Streams are defined through FT_Stream objects, which
2995 can be either memory-based or disk-based.
David Turnerd2b1f351999-12-16 23:11:37 +00002996
Werner Lembergab6d1072001-04-02 21:30:06 +00002997 Note that each face has its own stream, which is closed only
2998 when the face object is destroyed. Hence, a function like
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002999 TT_Flush_Face in 1.x cannot be directly supported. However, if
Werner Lembergab6d1072001-04-02 21:30:06 +00003000 you really need something like this, you can easily tailor your
3001 own streams to achieve the same feature at a lower level (and
3002 use FT_Open_Face instead of FT_New_Face to create the face).
David Turnerd2b1f351999-12-16 23:11:37 +00003003
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003004 See the file `include/ftsystem.h' for more details, as well as the
3005 implementations found in `config/unix' and `config/ansi'.
David Turnerd2b1f351999-12-16 23:11:37 +00003006
3007
Werner Lembergab6d1072001-04-02 21:30:06 +00003008----------------------------------------------------------------------
David Turnere49ab252000-05-16 23:44:38 +00003009
Werner Lembergab6d1072001-04-02 21:30:06 +00003010Font Drivers:
David Turner5951ce91999-12-29 00:53:44 +00003011
Werner Lembergab6d1072001-04-02 21:30:06 +00003012 The Font Driver interface has been modified in order to support
David Turner5951ce91999-12-29 00:53:44 +00003013 extensions & versioning.
3014
3015
Werner Lembergab6d1072001-04-02 21:30:06 +00003016 The list of the font drivers that are statically linked to the
3017 library at compile time is managed through a new configuration file
David Turner5951ce91999-12-29 00:53:44 +00003018 called `config/<platform>/ftmodule.h'.
3019
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003020 This file is autogenerated when invoking `make modules'. This
3021 target will parse all sub-directories of 'src', looking for a
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003022 `module.mk' rules file, used to describe the driver to the build
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003023 system.
David Turner5951ce91999-12-29 00:53:44 +00003024
Werner Lembergab6d1072001-04-02 21:30:06 +00003025 Hence, one should call `make modules' each time a font driver is
3026 added or removed from the `src' directory.
David Turner5951ce91999-12-29 00:53:44 +00003027
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003028 Finally, this version provides a `pseudo-driver' in `src/sfnt'.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003029 This driver doesn't support font files directly, but provides
3030 services used by all TrueType-like font drivers. Hence, its code is
3031 shared between the TrueType & OpenType font formats, and possibly
3032 more formats to come if we're lucky..
David Turnerd2b1f351999-12-16 23:11:37 +00003033
Werner Lembergab6d1072001-04-02 21:30:06 +00003034
3035----------------------------------------------------------------------
3036
3037Extensions support:
David Turner5951ce91999-12-29 00:53:44 +00003038
3039 The extensions support is inspired by the one found in 1.x.
3040
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003041 Now, each font driver has its own `extension registry', which lists
Werner Lembergab6d1072001-04-02 21:30:06 +00003042 which extensions are available for the font faces managed by the
3043 driver.
David Turner5951ce91999-12-29 00:53:44 +00003044
Werner Lembergab6d1072001-04-02 21:30:06 +00003045 Extension ids are now strings, rather than 4-byte tags, as this is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003046 usually more readable.
David Turner5951ce91999-12-29 00:53:44 +00003047
3048 Each extension has:
3049 - some data, associated to each face object
3050 - an interface (table of function pointers)
3051
Werner Lembergab6d1072001-04-02 21:30:06 +00003052 An extension that is format-specific should simply register itself
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003053 to the correct font driver. Here is some example code:
David Turner5951ce91999-12-29 00:53:44 +00003054
3055 // Registering an extensions
3056 //
3057 FT_Error FT_Init_XXXX_Extension( FT_Library library )
3058 {
3059 FT_DriverInterface* tt_driver;
3060
3061 driver = FT_Get_Driver( library, "truetype" );
3062 if (!driver) return FT_Err_Unimplemented_Feature;
3063
David Turnere49ab252000-05-16 23:44:38 +00003064 return FT_Register_Extension( driver, &extension_class );
David Turner5951ce91999-12-29 00:53:44 +00003065 }
3066
David Turnere49ab252000-05-16 23:44:38 +00003067
David Turner5951ce91999-12-29 00:53:44 +00003068 // Implementing the extensions
3069 //
3070 FT_Error FT_Proceed_Extension_XXX( FT_Face face )
3071 {
3072 FT_XXX_Extension ext;
3073 FT_XXX_Extension_Interface ext_interface;
3074
3075 ext = FT_Get_Extension( face, "extensionid", &ext_interface );
3076 if (!ext) return error;
3077
3078 return ext_interface->do_it(ext);
3079 }
David Turnerd2b1f351999-12-16 23:11:37 +00003080
Werner Lemberg56c368c2005-06-04 23:00:25 +00003081------------------------------------------------------------------------
3082
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003083Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 by
Werner Lemberg56c368c2005-06-04 23:00:25 +00003084David Turner, Robert Wilhelm, and Werner Lemberg.
3085
3086This file is part of the FreeType project, and may only be used,
3087modified, and distributed under the terms of the FreeType project
3088license, LICENSE.TXT. By continuing to use, modify, or distribute this
3089file you indicate that you have read the license and understand and
3090accept it fully.
3091
3092
Werner Lemberg110246c2006-09-26 21:55:44 +00003093Local Variables:
3094version-control: never
3095coding: utf-8
3096End:
3097
Werner Lembergab6d1072001-04-02 21:30:06 +00003098--- end of CHANGES ---