blob: 8f43fad067293b1a36efc7f0d9cd133dce029396 [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
Werner Lemberg9a966b72007-10-15 17:21:32 +00004 I. IMPORTANT BUG FIXES
5
6 - Microsoft Unicode cmaps in TrueType fonts are now always
7 preferred over Apple cmaps. This is not a bug per se, but there
8 exist some buggy fonts created for MS which have broken Apple
9 cmaps. This affects only the automatic selection of FreeType;
10 it's always possible to manually select an Apple Unicode cmap if
11 desired.
12
Werner Lemberg5057e362008-02-29 07:23:02 +000013 - Improved Mac support.
14
Werner Lemberg9a966b72007-10-15 17:21:32 +000015
Werner Lembergef915c32007-07-16 20:46:05 +000016 II. IMPORTANT CHANGES
17
18 - The new function `FT_Get_CID_Registry_Ordering_Supplement' gives
19 access to those fields in a CID-keyed font. The code has been
20 contributed by Derek Clegg.
21
Werner Lembergd76fe5a2007-08-08 06:38:06 +000022 - George Williams contributed code to validate the new `MATH'
23 OpenType table (within the `otvalid' module). The `ftvalid'
24 demo program has been extended accordingly.
Werner Lembergef915c32007-07-16 20:46:05 +000025
Werner Lemberg9a966b72007-10-15 17:21:32 +000026 - An API for cmap 14 support (for Unicode Variant Selectors, UVS)
27 has been contributed by George Williams.
28
Werner Lemberg5057e362008-02-29 07:23:02 +000029
30 III. MISCELANEOUS
31
32 - Build support for symbian has been contributed.
33
34
Werner Lembergef915c32007-07-16 20:46:05 +000035======================================================================
36
37
Werner Lembergdf49e692007-05-04 06:30:05 +000038CHANGES BETWEEN 2.3.5 and 2.3.4
39
Werner Lembergc1d22572007-05-19 07:24:55 +000040 I. IMPORTANT BUG FIXES
41
42 - Some subglyphs in TrueType fonts were handled incorrectly due to
43 a missing graphics state reinitialization.
44
Werner Lemberg1c8980e2007-05-25 07:11:12 +000045 - Large .Z files (as distributed with some X11 packages) weren't
46 handled correctly, making FreeType increase the heap stack in an
47 endless loop.
48
Werner Lembergaa52eab2007-07-02 15:14:50 +000049 - A large number of bugs have been fixed to avoid crashes and
50 endless loops with invalid fonts.
51
Werner Lembergc1d22572007-05-19 07:24:55 +000052
53 II. IMPORTANT CHANGES
54
Werner Lemberg1c8980e2007-05-25 07:11:12 +000055 - The two new cache functions `FTC_ImageCache_LookupScaler' and
56 `FTC_SBit_Cache_LookupScaler' have been added to allow lookup of
57 glyphs using an `FTC_Scaler' object; this makes it possible to
Werner Lemberg99e0c182007-05-29 07:00:23 +000058 use fractional pixel sizes in the cache. The demo programs have
59 been updated accordingly to use this feature.
Werner Lemberg1c8980e2007-05-25 07:11:12 +000060
Werner Lemberg99e0c182007-05-29 07:00:23 +000061 - A new API `FT_Get_CMap_Format' has been added to get the cmap
Werner Lemberg79944112007-05-19 14:10:06 +000062 format of a TrueType font. This is useful in handling PDF
Werner Lembergc1d22572007-05-19 07:24:55 +000063 files. The code has been contributed by Derek Clegg.
64
Werner Lemberg99e0c182007-05-29 07:00:23 +000065 - The auto-hinter now produces better output by default for
66 non-Latin scripts like Indic. This was done by using the CJK
67 hinting module as the default instead of the Latin one. Thanks
68 to Rahul Bhalerao for this suggestion.
69
Werner Lembergf6c120f2007-06-11 04:55:58 +000070 - A new API `FT_Face_CheckTrueTypePatents' has been added to find
71 out whether a given TrueType font uses patented bytecode
Werner Lemberge9f47992007-06-16 09:32:31 +000072 instructions. The `ft2demos' bundle contains a new program
73 called `ftpatchk' which demonstrates its usage.
Werner Lembergf6c120f2007-06-11 04:55:58 +000074
Werner Lembergaa52eab2007-07-02 15:14:50 +000075 - A new API `FT_Face_SetUnpatentedHinting' has been added to
76 enable or disable the unpatented hinter.
77
Werner Lembergab1604b2007-06-16 07:59:39 +000078 - Support for Windows FON files in PE format has been contributed
79 by Dmitry Timoshkov.
80
Werner Lembergc1d22572007-05-19 07:24:55 +000081
82 III. MISCELLANEOUS
Werner Lembergdf49e692007-05-04 06:30:05 +000083
84 - Vincent Richomme contributed Visual C++ project files for Pocket
85 PCs.
86
87
88======================================================================
89
Werner Lemberg14bf82e2007-04-10 04:09:49 +000090CHANGES BETWEEN 2.3.4 and 2.3.3
91
92 I. IMPORTANT BUG FIXES
93
94 - A serious bug in the handling of bitmap fonts (and bitmap
95 strikes of outline fonts) has been introduced in 2.3.3.
96
97
98======================================================================
99
David Turner23553d62007-03-26 13:37:17 +0000100CHANGES BETWEEN 2.3.3 and 2.3.2
101
102 I. IMPORTANT BUG FIXES
103
104 - Remove a serious regression in the TrueType bytecode interpreter
Werner Lemberg644b1ad2007-03-28 21:17:11 +0000105 that was introduced in version 2.3.2. Note that this does not
Werner Lemberg79944112007-05-19 14:10:06 +0000106 disable the improvements introduced to the interpreter in
107 version 2.3.2, only some ill cases that occurred with certain
108 fonts (though a few popular ones).
David Turner23553d62007-03-26 13:37:17 +0000109
Werner Lemberg644b1ad2007-03-28 21:17:11 +0000110 - The auto-hinter now ignores single-point contours for computing
111 blue zones. This bug created `wavy' baselines when rendering
112 text with various fonts that use these contours to model
113 mark-attach points (these are points that are never rasterized
114 and are placed outside of the glyph's real outline).
David Turner23553d62007-03-26 13:37:17 +0000115
Werner Lemberg79944112007-05-19 14:10:06 +0000116 - The `rsb_delta' and `lsb_delta' glyph slot fields are now set to
Werner Lemberg99e0c182007-05-29 07:00:23 +0000117 zero for mono-spaced fonts. Otherwise code that uses them would
David Turner23553d62007-03-26 13:37:17 +0000118 essentially ruin the fixed-advance property.
119
Werner Lemberg79944112007-05-19 14:10:06 +0000120 - Fix CVE-2007-1351 which can cause an integer overflow while
121 parsing BDF fonts, leading to a potentially exploitable heap
Werner Lemberg9f83e052007-04-05 02:28:23 +0000122 overflow condition.
123
Werner Lemberg99e0c182007-05-29 07:00:23 +0000124
Werner Lemberg644b1ad2007-03-28 21:17:11 +0000125 II. MISCELLANEOUS
126
127 - Fixed compilation issues on some 64-bit platforms (see ChangeLog
128 for details).
129
130 - A new demo program `ftdiff' has been added to compare TrueType
131 hinting, FreeType's auto hinting, and rendering without hinting
132 in three columns.
133
134
David Turner23553d62007-03-26 13:37:17 +0000135======================================================================
Werner Lemberg644b1ad2007-03-28 21:17:11 +0000136
David Turner121cad52007-03-08 16:43:50 +0000137CHANGES BETWEEN 2.3.2 and 2.3.1
138
139 I. IMPORTANT BUG FIXES
140
Werner Lemberg25d592a2007-03-09 07:59:35 +0000141 - FreeType returned incorrect kerning information from TrueType
142 fonts when the bytecode interpreter was enabled. This happened
143 due to a typo introduced in version 2.3.0.
David Turner121cad52007-03-08 16:43:50 +0000144
Werner Lemberg25d592a2007-03-09 07:59:35 +0000145 - Negative kerning values from PFM files are now reported
146 correctly (they were read as 16-bit unsigned values from the
147 file).
David Turner121cad52007-03-08 16:43:50 +0000148
Werner Lemberg25d592a2007-03-09 07:59:35 +0000149 - Fixed a small memory leak when `FT_Init_FreeType' failed for
150 some reason.
David Turner121cad52007-03-08 16:43:50 +0000151
Werner Lemberg25d592a2007-03-09 07:59:35 +0000152 - The Postscript hinter placed and sized very thin and ghost stems
153 incorrectly.
David Turner121cad52007-03-08 16:43:50 +0000154
Werner Lemberg25d592a2007-03-09 07:59:35 +0000155 - The TrueType bytecode interpreter has been fixed to get rid of
156 most of the rare differences seen in comparison to the Windows
157 font loader.
158
David Turner121cad52007-03-08 16:43:50 +0000159
160 II. IMPORTANT CHANGES
161
Werner Lemberg25d592a2007-03-09 07:59:35 +0000162 - The auto-hinter now better deals with serifs and corner cases
163 (e.g., glyph '9' in Arial at 9pt, 96dpi). It also improves
164 spacing adjustments and doesn't change widths for non-spacing
165 glyphs.
David Turner121cad52007-03-08 16:43:50 +0000166
Werner Lemberg25d592a2007-03-09 07:59:35 +0000167 - Many Mac-specific functions are deprecated (but still
168 available); modern replacements have been provided for them.
169 See the documentation in file `ftmac.h'.
170
David Turner121cad52007-03-08 16:43:50 +0000171
172======================================================================
173
Werner Lemberg53935932007-01-31 08:53:02 +0000174CHANGES BETWEEN 2.3.1 and 2.3.0
Werner Lemberg555258f2007-01-21 09:46:37 +0000175
176 I. IMPORTANT BUG FIXES
177
178 - The TrueType interpreter sometimes returned incorrect horizontal
179 metrics due to a bug in the handling of the SHZ instruction.
180
Werner Lembergb1be9e82007-01-25 11:50:00 +0000181 - A typo in a security check introduced after version 2.2.1
182 prevented FreeType to render some glyphs in CFF fonts.
183
Werner Lembergd7855662007-01-25 13:53:56 +0000184
Werner Lemberg555258f2007-01-21 09:46:37 +0000185======================================================================
186
Werner Lemberg17432b52007-01-12 09:28:44 +0000187CHANGES BETWEEN 2.3.0 and 2.2.1
David Turnere3d6e942006-09-26 16:58:21 +0000188
189 I. IMPORTANT BUG FIXES
190
Werner Lemberg110246c2006-09-26 21:55:44 +0000191 - The PCF font loader is now much more robust while loading
192 malformed font files.
David Turnere3d6e942006-09-26 16:58:21 +0000193
Werner Lemberg110246c2006-09-26 21:55:44 +0000194 - Various memory leaks have been found and fixed.
195
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000196 - The TrueType name loader now deals properly with some fonts that
197 encode their names in UTF-16 (the specification was vague, and
198 the code incorrectly assumed UCS-4).
David Turnere3d6e942006-09-26 16:58:21 +0000199
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000200 - Fixed the TrueType bytecode loader to deal properly with subtle
201 monochrome/gray issues when scaling the CVT. Some fonts
202 exhibited bad rendering artifacts otherwise.
David Turner4f7496e2007-01-09 09:21:16 +0000203
Werner Lembergb4142d52007-01-17 12:45:26 +0000204 - `FT_GlyphSlot_Embolden' now supports vertical layouts correctly
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000205 (it mangled the vertical advance height).
206
Werner Lembergb4142d52007-01-17 12:45:26 +0000207 - Fixed byte endian issues of `ftmac.c' to support Mac OS X on
208 i386.
209
210 - The PFR font loader no longer erroneously tags font files
211 without any outlines as FT_FACE_FLAG_SCALABLE.
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000212
David Turner4f7496e2007-01-09 09:21:16 +0000213
214 II. NEW API FUNCTIONS
215
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000216 - `FT_Library_SetLcdFilter' allows you to select a special filter
217 to be applied to the bitmaps generated by `FT_Render_Glyph' if
218 one of the FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V modes has
219 been selected. This filter is used to reduce color fringes;
220 several settings are available through the FT_LCD_FILTER_XXX
221 enumeration.
David Turner4f7496e2007-01-09 09:21:16 +0000222
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000223 Its declaration and documentation can be found in file
224 `include/freetype/ftlcdfil.h' (to be accessed with macro
225 FT_LCD_FILTER_H).
David Turner4f7496e2007-01-09 09:21:16 +0000226
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000227 *IMPORTANT*: This function returns an error
228 (FT_Err_Unimplemented_Feature) in default builds of the library
229 for patent reasons. See below.
David Turner4f7496e2007-01-09 09:21:16 +0000230
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000231 - `FT_Get_Gasp' allows you to query the flags of the TrueType
232 `gasp' table for a given character pixel size. This is useful
Werner Lembergb4142d52007-01-17 12:45:26 +0000233 to duplicate the text rendering of MS Windows when the native
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000234 bytecode interpreter is enabled (which isn't the default for
235 other patent reasons).
David Turner4f7496e2007-01-09 09:21:16 +0000236
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000237 Its declaration and documentation can be found in file
238 `include/freetype/ftgasp.h' (to be accessed with macro
239 FT_GASP_H).
David Turner4f7496e2007-01-09 09:21:16 +0000240
241
242 III. IMPORTANT CHANGES
243
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000244 - The auto-hinter has been tuned a lot to improve its results with
245 serif fonts, resulting in much better font rendering of many web
246 pages.
David Turnere3d6e942006-09-26 16:58:21 +0000247
Werner Lemberg110246c2006-09-26 21:55:44 +0000248 - The unpatented hinter is now part of the default build of the
249 library; we have added code to automatically support `tricky'
David Turnere3d6e942006-09-26 16:58:21 +0000250 fonts that need it.
251
Werner Lemberg110246c2006-09-26 21:55:44 +0000252 This means that FreeType should `just work' with certain Asian
253 fonts, like MingLiU, which cannot properly be loaded without a
254 bytecode interpreter, but which fortunately do not use any of
255 the patented bytecode opcodes. We detect these fonts by name,
256 so please report any font file that doesn't seem to work with
257 FreeType, and we shall do what we can to support it in a next
258 release.
David Turnere3d6e942006-09-26 16:58:21 +0000259
Werner Lemberg110246c2006-09-26 21:55:44 +0000260 Note that the API hasn't changed, so you can still force
Werner Lembergb4142d52007-01-17 12:45:26 +0000261 unpatented hinting with a special parameter to `FT_Open_Face' as
Werner Lemberg110246c2006-09-26 21:55:44 +0000262 well. This might be useful in same cases; for example, a PDF
263 reader might present a user option to activate it to deal with
264 certain `tricky' embedded fonts which cannot be clearly
265 identified.
David Turnere3d6e942006-09-26 16:58:21 +0000266
Werner Lemberg110246c2006-09-26 21:55:44 +0000267 If you are a developer for embedded systems, you might want to
268 *disable* the feature to save code space by undefining
Werner Lembergb4142d52007-01-17 12:45:26 +0000269 TT_CONFIG_OPTION_UNPATENTED_HINTING in file `ftoption.h'.
David Turnere3d6e942006-09-26 16:58:21 +0000270
Werner Lembergb4142d52007-01-17 12:45:26 +0000271 - LCD-optimized rendering is now *disabled* in all default builds
272 of the library, mainly due to patent issues. For more
273 information see:
David Turnere3d6e942006-09-26 16:58:21 +0000274
275 http://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html
276
Werner Lemberg110246c2006-09-26 21:55:44 +0000277 A new configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING
Werner Lembergb4142d52007-01-17 12:45:26 +0000278 has been introduced in `ftoption.h'; manually define it in this
Werner Lemberg110246c2006-09-26 21:55:44 +0000279 file if you want to re-enable the feature.
David Turnere3d6e942006-09-26 16:58:21 +0000280
Werner Lemberg110246c2006-09-26 21:55:44 +0000281 The change only affects the implementation, not the FreeType
282 API. This means that clients don't need to be modified, because
283 the library still generates LCD decimated bitmaps, but with the
284 added constraint that R=G=B on each triplet.
David Turnere3d6e942006-09-26 16:58:21 +0000285
Werner Lemberg110246c2006-09-26 21:55:44 +0000286 The displayed result should be equal to normal anti-aliased
David Turnere3d6e942006-09-26 16:58:21 +0000287 rendering.
288
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000289 Additionally, if FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
290 defined, the new `FT_Library_SetLcdFilter' function returns the
291 FT_Err_Unimplemented_Feature error code.
David Turner4f7496e2007-01-09 09:21:16 +0000292
Werner Lemberg110246c2006-09-26 21:55:44 +0000293 - Some computation bugs in the TrueType bytecode interpreter were
294 found, which allow us to get rid of very subtle and rare
295 differences we had experienced with the Windows renderer.
296
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000297 - It is now possible to cross-compile the library easily. See the
Werner Lembergb4142d52007-01-17 12:45:26 +0000298 file `docs/INSTALL.CROSS' for details.
David Turner4f7496e2007-01-09 09:21:16 +0000299
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000300 - The file `src/base/ftmac.c' now contains code for Mac OS X only;
301 its deprecated function `FT_GetFile_From_Mac_Font_Name' always
Werner Lembergb4142d52007-01-17 12:45:26 +0000302 returns an error even if the QuickDraw framework is available.
303 The previous version has been moved to `builds/mac/ftmac.c'.
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000304
305 Selecting configure option `--with-quickdraw-carbon' makes the
306 build process use the original `ftmac.c' file instead of the Mac
307 OS X-only version.
308
David Turner4f7496e2007-01-09 09:21:16 +0000309
Werner Lemberg8c4120d2007-01-15 06:42:40 +0000310 IV. MISCELLANEOUS
David Turnere3d6e942006-09-26 16:58:21 +0000311
David Turner4f7496e2007-01-09 09:21:16 +0000312 - Various performance and memory footprint optimizations have been
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000313 performed on the TrueType and CFF font loaders, sometimes with
314 very drastic benefits (e.g., the TrueType loader is now about
315 25% faster; FreeType should use less heap memory under nearly
Werner Lembergb4142d52007-01-17 12:45:26 +0000316 all conditions).
David Turnere3d6e942006-09-26 16:58:21 +0000317
Werner Lemberg110246c2006-09-26 21:55:44 +0000318 - The anti-aliased rasterizer has been optimized and is now 15% to
319 25% percent faster than in previous versions, depending on
320 content.
David Turnere3d6e942006-09-26 16:58:21 +0000321
Werner Lemberg110246c2006-09-26 21:55:44 +0000322 - The Type 1 loader has been improved; as an example, it now skips
323 top-level dictionaries properly.
324
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000325 - Better support for Mac fonts on POSIX systems, plus compilation
326 fixes for Mac OS X on ppc64 where `ftmac.c' cannot be built.
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000327
Werner Lemberg6164a9d2007-01-13 23:01:36 +0000328 - Configuration without `--with-old-mac-fonts' does not include
329 `ftmac.c' (this was the behaviour in FreeType version 2.1.10).
Werner Lembergb0398be2007-01-13 08:52:27 +0000330
Werner Lemberg17432b52007-01-12 09:28:44 +0000331 - The TrueTypeGX validator (gxvalid) checks the order of glyph IDs
332 in the kern table.
333
David Turnere3d6e942006-09-26 16:58:21 +0000334
335======================================================================
336
Werner Lemberg94168f02006-05-11 07:07:09 +0000337CHANGES BETWEEN 2.2.1 and 2.2
Werner Lemberg1639c792006-05-06 16:44:58 +0000338
339 I. IMPORTANT BUG FIXES
340
341 - Various integer overflows have been fixed.
342
343 - PFB fonts with MacOS resource fork weren't handled correctly on
344 non-MacOS platforms.
345
346
347======================================================================
348
Werner Lemberg94168f02006-05-11 07:07:09 +0000349CHANGES BETWEEN 2.2 and 2.1.10
Werner Lemberg49f4d342005-06-16 19:07:08 +0000350
Werner Lemberg1639c792006-05-06 16:44:58 +0000351(not released officially)
352
Werner Lemberg49f4d342005-06-16 19:07:08 +0000353 I. IMPORTANT BUG FIXES
354
355 - Vertical metrics for SFNT fonts were incorrect sometimes.
356
Werner Lemberg7e25c682005-09-09 18:00:06 +0000357 - The FT_HAS_KERNING macro always returned 0.
358
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000359 - CFF OpenType fonts didn't return correct vertical metrics for
Werner Lembergcfc0cf22005-11-17 08:12:00 +0000360 glyphs with outlines.
361
Werner Lemberg6c990452005-11-18 21:10:59 +0000362 - If FreeType was compiled without hinters, all font formats based
363 on PS outlines weren't scaled correctly.
364
Werner Lemberg435046b2006-01-11 10:57:42 +0000365
Werner Lemberg49f4d342005-06-16 19:07:08 +0000366 II. IMPORTANT CHANGES
367
Werner Lemberge88d24c2006-02-28 21:49:54 +0000368 - Version 2.2 no longer exposes its internals, this is, the header
369 files located in the `include/freetype/internal' directory of
370 the source package are not copied anymore by the `make install'
371 command. Consequently, a number of rogue clients which directly
372 access FreeType's internal functions and structures won't
373 compile without modification.
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000374
Werner Lemberge88d24c2006-02-28 21:49:54 +0000375 We provide patches for most of those rogue clients. See the
376 following page for more information:
David Turnere9a47192006-02-28 09:26:58 +0000377
Werner Lemberg94168f02006-05-11 07:07:09 +0000378 http://www.freetype.org/freetype2/patches/rogue-patches.html
Werner Lemberge88d24c2006-02-28 21:49:54 +0000379
380 Note that, as a convenience to our Unix desktop users, version
381 2.2 is *binary* compatible with FreeType 2.1.7, which means that
382 installing this release on an existing distribution shall not
383 break any working desktop.
David Turnere9a47192006-02-28 09:26:58 +0000384
Werner Lemberg59939242006-01-31 20:17:42 +0000385 - FreeType's build mechanism has been redesigned. With GNU make
386 it is now sufficient in most cases to edit two files:
387 `modules.cfg', to select the library components, and the
388 configuration file `include/freetype/config/ftoption.h' (which
389 can be copied to the objects directory). Removing unused module
390 directories to prevent its compilation and editing
391 `include/freetype/config/ftmodule.h' is no longer necessary.
392
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000393 - The LIGHT hinting algorithm produces more pleasant results.
394 Also, using the FT_LOAD_TARGET_LIGHT flags within FT_Load_Glyph
Werner Lemberg40917862006-04-01 18:49:07 +0000395 always forces auto-hinting, as a special exception. This allows
396 you to experiment with it even if you have enabled the TrueType
David Turnercf603712006-04-01 16:22:06 +0000397 bytecode interpreter in your build.
398
399 - The auto hinter now employs a new algorithm for CJK fonts, based
400 on Akito Hirai's patch. Note that this only works for fonts
401 with a Unicode charmap at the moment.
David Turnere6bb9532005-12-23 13:32:06 +0000402
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000403 - The following callback function types have changed slightly (by
Werner Lemberg49f4d342005-06-16 19:07:08 +0000404 adding the `const' keyword where appropriate):
405
406 FT_Outline_MoveToFunc
407 FT_Outline_LineToFunc
408 FT_Outline_ConicToFunc
409 FT_Outline_CubicToFunc
410 FT_SpanFunc
411 FT_Raster_RenderFunc
412
413 FT_Glyph_TransformFunc
414 FT_Renderer_RenderFunc
415 FT_Renderer_TransformFunc
416
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000417 Note that this doesn't affect binary backward compatibility.
Werner Lemberg49f4d342005-06-16 19:07:08 +0000418
Werner Lemberg435046b2006-01-11 10:57:42 +0000419 - On MacOS, new APIs have been added as replacements for legacy
420 APIs: `FT_New_Face_From_FSRef' for `FT_New_Face_From_FSSpec',
421 and `FT_GetFile_From_Mac_ATS_Name' for
422 `FT_GetFile_From_Mac_Name'. Legacy APIs are still available, if
423 FreeType is built without disabling them.
424
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000425 - A new API `FT_Select_Size' has been added to select a bitmap
426 strike by its index. Code using other functions to select
427 bitmap strikes should be updated to use this function.
Wu, Chia-I (吳佳一)e33dc2e2006-01-14 05:09:30 +0000428
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000429 - A new API `FT_Get_SubGlyph_Info' has been added to retrieve
Werner Lemberg40917862006-04-01 18:49:07 +0000430 subglyph data. This can be used by rogue clients which used to
David Turnercf603712006-04-01 16:22:06 +0000431 access the internal headers to get the corresponding data.
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000432
433 - In 2.1.10, the behaviour of `FT_Set_Pixel_Sizes' was changed for
Werner Lemberge88d24c2006-02-28 21:49:54 +0000434 BDF/PCF fonts, and only for them. This causes inconsistency.
435 In this release, we undo the change. The intent of the change
Wu, Chia-I (吳佳一)e33dc2e2006-01-14 05:09:30 +0000436 in 2.1.10 is to allow size selection through real dimensions,
437 which can now be done through `FT_Request_Size'.
438
Werner Lemberge88d24c2006-02-28 21:49:54 +0000439 - Some security issues were discovered and fixed in the CFF and
440 Type 1 loader, causing crashes of FreeType by malformed font
441 files.
442
Suzuki, Toshiya (鈴木俊哉)f8d16cc2006-01-11 09:28:38 +0000443
Werner Lemberg49f4d342005-06-16 19:07:08 +0000444 III. MISCELLANEOUS
445
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000446 - The documentation for FT_LOAD_TARGET_XXX and FT_RENDER_MODE_XXX
447 values now better reflects its usage and differences: One set is
David Turnerdad2a2d2006-03-20 11:48:13 +0000448 used to specify the hinting algorithm, the other to specify the
449 pixel rendering mode.
Werner Lemberge88d24c2006-02-28 21:49:54 +0000450
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000451 - `FT_New_Face' and `FT_New_Face_From_FSSpec' in ftmac.c have been
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000452 changed to count supported scalable faces (sfnt, LWFN) only, and
Werner Lemberg4db32ec2006-03-24 11:54:53 +0000453 to return the number of available faces via face->num_faces.
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000454 Unsupported bitmap faces (fbit, NFNT) are ignored.
Suzuki, Toshiya (鈴木俊哉)53be6e92005-12-23 12:22:46 +0000455
Werner Lemberg435046b2006-01-11 10:57:42 +0000456 - builds/unix/configure has been improved for MacOS X. It now
457 automatically checks available functions in Carbon library, and
458 prepare to use newest functions by default. Options to specify
459 the dependencies of each Carbon APIs (FSSpec, FSRef, old/new
460 QuickDraw, ATS) are available too. By manual disabling of all
461 QuickDraw functionality, FreeType can be built without
462 `deprecated function' warnings on MacOS 10.4.x, but
463 FT_GetFile_Mac_Name in ftmac.c then is changed to a dummy
464 function, and returns an `unimplemented' error. For details see
465 builds/mac/README.
Suzuki, Toshiya (鈴木俊哉)f8d16cc2006-01-11 09:28:38 +0000466
Werner Lemberge88d24c2006-02-28 21:49:54 +0000467 - SFNT cmap handling has been improved, mainly to run much faster
David Turnere9a47192006-02-28 09:26:58 +0000468 with CJK fonts.
Werner Lemberg7734a1f2005-10-05 15:18:29 +0000469
Werner Lembergf99d8462006-02-26 17:50:59 +0000470 - A new function `FT_Get_TrueType_Engine_Type (declared in
471 `FT_MODULE_H') is provided to determine the status of the
472 TrueType bytecode interpreter compiled into the library
473 (patented, unpatented, unimplemented).
Werner Lemberg6cdab922006-01-08 22:34:01 +0000474
Wu, Chia-I (吳佳一)ea1e8d32006-01-15 15:01:45 +0000475 - Vertical metrics of glyphs are synthesized if the font does not
476 provide such information. You can tell whether the metrics are
477 synthesized or not by checking the FT_FACE_FLAG_VERTICAL flag of
478 the face.
479
Werner Lemberg7b33dca2005-06-23 20:31:48 +0000480 - The demo programs `ftview' and `ftstring' have been rewritten
Werner Lemberg1639c792006-05-06 16:44:58 +0000481 for better readability. `ftview' has a new switch `-p' to test
482 FT_New_Memory_Face (instead of FT_New_Face).
Wu, Chia-I (吳佳一)87f9bfc2005-06-22 03:56:14 +0000483
Werner Lemberg2752bd12005-08-22 07:11:31 +0000484 - FreeType now honours bit 1 in the `head' table of TrueType fonts
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000485 (meaning `left sidebearing point at x=0'). This helps with some
486 buggy fonts.
Werner Lemberg2752bd12005-08-22 07:11:31 +0000487
Werner Lembergb3feb802005-09-23 07:40:28 +0000488 - Rudimentary support for Adobe's new `SING Glyphlet' format. See
489
490 http://www.adobe.com/products/indesign/sing_gaiji.html
491
492 for more information.
Werner Lemberg49f4d342005-06-16 19:07:08 +0000493
Werner Lemberg083ba0b2005-12-23 15:10:54 +0000494 - The `ftdump' program from the `ft2demos' bundle now shows some
495 information about charmaps. It also supports a new switch `-v'
Werner Lembergb797fdb2005-11-30 08:48:32 +0000496 to increase verbosity.
497
Wu, Chia-I (吳佳一)f9a69132006-02-11 12:12:02 +0000498 - Better AFM support. This includes track kerning support.
499
Wu, Chia-I (吳佳一)f9a69132006-02-11 12:12:02 +0000500
Werner Lemberg49f4d342005-06-16 19:07:08 +0000501======================================================================
502
Werner Lemberg94168f02006-05-11 07:07:09 +0000503CHANGES BETWEEN 2.1.10 and 2.1.9
Werner Lembergd232f592004-08-02 05:38:33 +0000504
505 I. IMPORTANT BUG FIXES
506
507 - The size comparison for BDF and PCF files could fail sometimes.
508
509 - Some CFF files were still not loaded correctly. Patch from
510 Derek Noonburg.
511
512 - The stroker still had some serious bugs.
513
Werner Lemberg33febc02004-10-09 07:07:43 +0000514 - Boris Letocha fixed a bug in the TrueType interpreter: The
515 NPUSHW instruction wasn't skipped correctly in IF clauses. Some
516 fonts like `Helvetica 75 Bold' failed.
517
Werner Lemberg4d1550e2004-11-19 14:12:48 +0000518 - Another serious bug in handling TrueType hints caused many
519 distortions. It has been introduced in version 2.1.8, and it is
520 highly recommended to upgrade.
Werner Lembergb9ff4152004-11-19 10:35:52 +0000521
Werner Lembergc9114b92005-02-10 08:18:27 +0000522 - FreeType didn't properly parse empty Type 1 glyphs.
David Turnere6bb9532005-12-23 13:32:06 +0000523
Werner Lembergebf55852005-03-16 01:49:54 +0000524 - An unbound dynamic buffer growth was fixed in the PFR loader.
David Turnere6bb9532005-12-23 13:32:06 +0000525
Werner Lembergebf55852005-03-16 01:49:54 +0000526 - Several bugs have been fixed in the cache sub-system.
David Turner58609c42005-03-15 23:31:48 +0000527
Werner Lembergebf55852005-03-16 01:49:54 +0000528 - FreeType behaved incorrectly when resizing two distinct but very
529 close character pixel sizes through `FT_Set_Char_Size' (Savannah
530 bug #12263).
David Turnere6bb9532005-12-23 13:32:06 +0000531
Werner Lembergebf55852005-03-16 01:49:54 +0000532 - The auto-hinter didn't work properly for fonts without a Unicode
533 charmap -- it even refused to load the glyphs.
Werner Lembergc9114b92005-02-10 08:18:27 +0000534
Werner Lembergd232f592004-08-02 05:38:33 +0000535
536 II. IMPORTANT CHANGES
537
Werner Lembergebf55852005-03-16 01:49:54 +0000538 - Many fixes have been applied to drastically reduce the amount of
539 heap memory used by FreeType, especially when using
540 memory-mapped font files (which is the default on Unix systems
541 which support them).
David Turner58609c42005-03-15 23:31:48 +0000542
Werner Lemberga37745b2005-03-23 16:45:24 +0000543 - The auto-hinter has been replaced with a new module, called the
544 `auto-fitter'. It consumes less memory than its predecessor,
545 and it is prepared to support non-latin scripts better in next
546 releases.
David Turner58609c42005-03-15 23:31:48 +0000547
Werner Lembergd232f592004-08-02 05:38:33 +0000548 - George Williams contributed code to read kerning data from PFM
549 files.
550
551 - FreeType now uses the TT_NAME_ID_PREFERRED_FAMILY and
552 TT_NAME_ID_PREFERRED_SUBFAMILY strings (if available) for
553 setting family and style in SFNT fonts (patch from Kornfeld
554 Eliyahu Peter).
555
Werner Lemberg17439422004-08-11 05:25:37 +0000556 - A new API `FT_Sfnt_Table_Info' (in FT_TRUETYPE_TABLES_H) has
557 been added to retrieve name and size information of SFNT tables.
558
Werner Lembergee95b6f2004-09-10 14:39:00 +0000559 - A new API `FT_OpenType_Validate' (in FT_OPENTYPE_VALIDATE_H) has
560 been added to validate OpenType tables (BASE, GDEF, GPOS, GSUB,
561 JSTF). After validation it is no longer necessary to check
Werner Lemberg33febc02004-10-09 07:07:43 +0000562 for errors in those tables while accessing them.
Werner Lembergee95b6f2004-09-10 14:39:00 +0000563
Werner Lemberg82b71922005-06-02 07:12:05 +0000564 Note that this module might be moved to another library in the
565 future to avoid a tight dependency between FreeType and the
566 OpenType specification.
567
Werner Lembergf2438e12004-12-14 16:01:29 +0000568 - A new API in FT_BITMAP_H (`FT_Bitmap_New', `FT_Bitmap_Convert',
Werner Lembergafb2ba52005-05-25 05:51:01 +0000569 `FT_Bitmap_Copy', `FT_Bitmap_Embolden', `FT_Bitmap_Done') has
570 been added. Its use is to convert an FT_Bitmap structure in
571 1bpp, 2bpp, 4bpp, or 8bpp format into another 8bpp FT_Bitmap,
572 probably using a different pitch, and to further manipulate it.
573
574 - A new API `FT_Outline_Embolden' (in FT_OUTLINE_H) gives finer
575 control how outlines are embolded.
576
577 - `FT_GlyphSlot_Embolden' (in FT_SYNTHESIS_H) now handles bitmaps
578 also (code contributed by Chia I Wu). Note that this function
579 is still experimental and may be replaced with a better API.
Werner Lembergf2438e12004-12-14 16:01:29 +0000580
Werner Lemberga76108b2005-04-03 20:11:42 +0000581 - The method how BDF and PCF bitmap fonts are accessed has been
582 refined. Formerly, FT_Set_Pixel_Sizes and FT_Set_Char_Size
583 were synonyms in FreeType's BDF and PCF interface. This has
584 changed now. FT_Set_Pixel_Sizes should be used to select the
585 actual font dimensions (the `strike', which is the sum of the
586 `FONT_ASCENT' and `FONT_DESCENT' properties), while
587 FT_Set_Char_Size selects the `nominal' size (the `PIXELSIZE'
588 property). In both functions, the width parameter is ignored.
589
Werner Lembergebf55852005-03-16 01:49:54 +0000590
Werner Lembergf2438e12004-12-14 16:01:29 +0000591 III. MISCELLANEOUS
592
593 - The BDF driver no longer converts all returned bitmaps with a
594 depth of 2bpp or 4bpp to a depth of 8bpp. The documentation has
595 not mentioned this explicitly, but implementors might have
596 relied on this after looking into the source files.
597
Werner Lembergc9114b92005-02-10 08:18:27 +0000598 - A new option `--ftversion' has been added to freetype-config to
599 return the FreeType version.
600
Werner Lemberga37745b2005-03-23 16:45:24 +0000601 - The memory debugger has been updated to dump allocation
602 statistics on all allocation sources in the library. This is
603 useful to spot greedy allocations when loading and processing
604 fonts.
David Turner58609c42005-03-15 23:31:48 +0000605
Werner Lemberga37745b2005-03-23 16:45:24 +0000606 - We removed a huge array of constant pointers to constant strings
607 in the `psnames' module. The problem was that compilations in
608 PIC mode (i.e., when generating a Unix shared object/dll) put
609 the array into the non-shared writable section of the library
David Turner58609c42005-03-15 23:31:48 +0000610 since absolute pointers are not relocatable by nature.
David Turnere6bb9532005-12-23 13:32:06 +0000611
Werner Lemberga37745b2005-03-23 16:45:24 +0000612 This reduces the memory consumption by approximately 16KByte per
613 process linked to FreeType. We now also store the array in a
614 compressed form (as a trie) which saves about 20KByte of code as
615 well.
David Turnerdb3faff2003-09-11 19:58:19 +0000616
Werner Lemberge623bfa2005-05-19 13:51:26 +0000617 - Kirill Smelkov provided patches to make src/raster/ftraster.c
Werner Lembergf9fccbe2005-05-19 07:20:24 +0000618 compile stand-alone again.
619
Werner Lembergebf55852005-03-16 01:49:54 +0000620
621======================================================================
622
Werner Lemberg94168f02006-05-11 07:07:09 +0000623CHANGES BETWEEN 2.1.9 and 2.1.8
Werner Lemberge95365b2004-04-24 14:43:37 +0000624
625 I. IMPORTANT BUG FIXES
626
627 - The function `FT_Get_CharMap_Index' was only declared, without
628 any real code. For consistency, it has been renamed to
629 `FT_Get_Charmap_Index'. (This function is needed to implement
630 cmap caches.)
631
Werner Lemberg7d62f522004-06-04 22:30:10 +0000632 - `FT_Outline_Get_BBox' sometimes returned incorrect values for
Werner Lemberg8ef41832004-06-22 12:28:17 +0000633 conic outlines (e.g., for TrueType fonts).
Werner Lemberg7d62f522004-06-04 22:30:10 +0000634
635 - Handling of `bhed' table has been fixed.
Werner Lemberge95365b2004-04-24 14:43:37 +0000636
Werner Lemberg11785f52004-06-21 23:32:31 +0000637 - The TrueType driver with enabled byte code interpreter sometimes
638 returned artifacts due to incorrect rounding. This bug has been
639 introduced after version 2.1.4.
640
Werner Lemberg8ef41832004-06-22 12:28:17 +0000641 - The BDF driver dropped the last glyph in the font.
642
643 - The BDF driver now uses the DEFAULT_CHAR property (if available)
644 to select a glyph shape for the undefined glyph.
645
Werner Lemberg43f0e262004-07-17 16:45:21 +0000646 - The stroker failed for closed outlines and single points.
647
Werner Lemberg11785f52004-06-21 23:32:31 +0000648
Werner Lembergcdb6e702004-04-26 08:09:30 +0000649 II. IMPORTANT CHANGES
650
651 - George Williams contributed code to handle Apple's font
652 distortion technology found in GX fonts (`avar', `cvar', `fvar',
653 and `gvar' tables; the Multiple Masters API has been slightly
Werner Lemberg7d62f522004-06-04 22:30:10 +0000654 extended to cope with the new functionality).
655
Werner Lembergfefd8742004-06-12 13:21:20 +0000656 - The `FT_GlyphSlotRec' structure has been extended: The elements
Werner Lemberg7d62f522004-06-04 22:30:10 +0000657 `lsb_delta' and `rsb_delta' give the difference between hinted
658 and unhinted left and right side bearings if autohinting is
659 active. Using those values can improve the inter-letter spacing
Werner Lembergfefd8742004-06-12 13:21:20 +0000660 considerably. See the documentation of `FT_GlyphSlotRec' and
Werner Lemberg7d62f522004-06-04 22:30:10 +0000661 the `ftstring' demo program how to use it.
Werner Lembergcdb6e702004-04-26 08:09:30 +0000662
Werner Lemberg43f0e262004-07-17 16:45:21 +0000663 - Loading TrueType and Type 1 fonts has been made much faster.
664
665 - The stroker is no longer experimental (but the cache subsystem
666 still is).
667
Werner Lembergcdb6e702004-04-26 08:09:30 +0000668
Werner Lembergeab92f12004-04-29 05:59:49 +0000669 III. MISCELLANEOUS
670
671 - A new documentation file `formats.txt' describes various font
672 formats supported (and not supported) by FreeType.
673
674
Werner Lemberge95365b2004-04-24 14:43:37 +0000675======================================================================
676
Werner Lemberg94168f02006-05-11 07:07:09 +0000677CHANGES BETWEEN 2.1.8 and 2.1.7
Werner Lemberg51ecb692003-11-13 10:19:27 +0000678
679 I. IMPORTANT BUG FIXES
680
Werner Lemberg4ff243d2003-11-25 09:30:57 +0000681 - The native TrueType hinter contained some bugs which prevented
682 some fonts to be rendered correctly, most notably Legendum.otf.
683
Werner Lembergba80d612004-04-16 09:56:30 +0000684 - The PostScript hinter now produces improved results.
Werner Lemberg460355a2004-02-24 07:52:45 +0000685
Werner Lemberg4ff243d2003-11-25 09:30:57 +0000686 - The linear advance width and height values were incorrectly
687 rounded, making them virtually unusable if not loaded with
688 FT_LOAD_LINEAR_DESIGN.
689
Werner Lemberg80cfbd72003-12-26 07:26:08 +0000690 - Indexing CID-keyed CFF fonts is now working: The glyph index is
691 correctly treated as a CID, similar to FreeType's CID driver
Werner Lemberg460355a2004-02-24 07:52:45 +0000692 module. Note that CID CMap support is still missing.
Werner Lembergb36d4a52003-12-12 15:38:39 +0000693
Werner Lembergc78df1e2004-04-21 07:36:38 +0000694 - The FT_FACE_FLAGS_GLYPH_NAMES flag is now set correctly for all
695 font formats.
Werner Lemberg7f1458a2003-12-17 21:57:56 +0000696
Werner Lemberg80cfbd72003-12-26 07:26:08 +0000697 - Some subsetted Type 1 fonts weren't parsed correctly. This bug
Werner Lemberg9cef4792004-02-08 09:07:08 +0000698 has been introduced in 2.1.7. In summary, the Type 1 parser has
699 become more robust.
Werner Lemberg48b6ddb2003-12-22 23:01:20 +0000700
Werner Lembergc78df1e2004-04-21 07:36:38 +0000701 - Non-decimal numbers weren't parsed correctly in PS fonts.
702
Werner Lemberg48b6ddb2003-12-22 23:01:20 +0000703 - The WinFNT driver now correctly reports FT_ENCODING_NONE for all
Werner Lemberg80cfbd72003-12-26 07:26:08 +0000704 but one encoding. Use the new FT_WinFNT_ID_XXX values together
Werner Lembergcc7f12a2007-01-09 10:37:36 +0000705 with `FT_Get_WinFNT_Header' to get the WinFNT charset ID.
Werner Lemberg48b6ddb2003-12-22 23:01:20 +0000706
Werner Lemberg9914b972004-01-02 16:33:04 +0000707 - The descender metrics (face->size->metrics.descender) for WinFNT
708 bitmap fonts had the wrong sign.
709
Werner Lembergc78df1e2004-04-21 07:36:38 +0000710 - The (emulated) `seac' support for CFF fonts was broken.
Werner Lemberg5972e9a2004-02-01 00:49:56 +0000711
Werner Lembergc78df1e2004-04-21 07:36:38 +0000712 - The `flex' operator didn't work for CFF fonts.
Werner Lemberg5972e9a2004-02-01 00:49:56 +0000713
Werner Lemberg460355a2004-02-24 07:52:45 +0000714 - PS glyphs which use the `hintmask' operator haven't been
715 rendered correctly in some cases.
Werner Lemberga5724ef2004-02-21 16:47:20 +0000716
Werner Lemberge0c50442004-02-08 16:30:37 +0000717 - Metrics for BDF and PCF bitmap font formats have been fixed.
718
Werner Lembergba80d612004-04-16 09:56:30 +0000719 - Autohinting is now disabled for glyphs which are vertically
720 distorted or mirrored (using a transformation matrix). This
721 fixes a bug which produced zero-height glyphs.
722
Werner Lemberg53a1edd2004-02-08 22:45:48 +0000723 - The `freetype-config' script now handles --prefix and
724 --exec-prefix correctly; it also returns the proper --rpath (or
725 -R) value if FreeType has been built as a shared library.
726
Werner Lemberg51ecb692003-11-13 10:19:27 +0000727
728 II. IMPORTANT CHANGES
729
730 - Both PCF and BDF drivers now handle the SETWIDTH_NAME and
731 ADD_STYLE_NAME properties. Values are appended to
732 face->style_name; example: `Bold SemiCondensed'.
733
Werner Lembergdfa46192004-03-05 09:26:24 +0000734 - The PCF driver now handles bitmap fonts compressed with the LZW
735 algorithm (extension .pcf.Z, compressed with `compress').
736
Werner Lemberg7f1458a2003-12-17 21:57:56 +0000737 - A new API function `FT_Get_CMap_Language_ID' (declared in
738 `tttables.h') is available to get the language ID of a
739 TrueType/SFNT cmap.
740
Werner Lembergef512e32004-01-23 19:52:40 +0000741 - The hexadecimal format of data after the `StartData' command in
742 CID-keyed Type 1 fonts is now supported. While this can't occur
743 in file-based fonts, it can happen in document-embedded
744 resources of PostScript documents.
745
Werner Lembergdfa46192004-03-05 09:26:24 +0000746 - Embedded bitmaps in SFNT-based CFF fonts are now supported.
747
Werner Lemberg460355a2004-02-24 07:52:45 +0000748 - A simple API is now available to control FreeType's tracing
749 mechanism if compiled with FT_DEBUG_LEVEL_TRACE. See the file
750 `ftdebug.h' for more details.
751
Werner Lemberg675431b2004-02-25 21:17:49 +0000752 - YAMATO Masatake contributed improved handling of MacOS resource
753 forks on non-MacOS platforms (for example, Linux can mount MacOS
754 file systems).
755
Werner Lemberge2455ba2004-02-26 21:56:27 +0000756 - Support for MacOS has been improved; there is now a new function
757 `FT_New_Face_From_FSSpec' similar to `FT_New_Face' except that
758 it accepts an FSSpec instead of a path.
759
Werner Lemberg80cfbd72003-12-26 07:26:08 +0000760 - The cache sub-system has been rewritten.
761
762 - There is now support for deinstallation of faces.
763
764 - A new API function `FTC_Manager_RemoveFaceID' has been added
765 to delete all `idle' nodes that correspond to a given
766 FTC_FaceID. All `locked' nodes (i.e., those with a reference
767 count > 0), will be modified to prevent them from appearing in
768 further lookups (they will be cleaned normally when their
769 reference count reaches 0).
770
771 - There is now support for point scaling (i.e., providing
772 character sizes in points + dpis, instead of pixels).
773
774 - Three abstract cache classes are now available:
775
776 FTC_GCache: Used to store one glyph item per cache node,
777 with the ability to group common attributes into
778 `families'. This replaces the old
779 FTC_GlyphCache class.
780
781 FTC_ICache: Used to store one FT_Glyph per cache node. This
782 extends FTC_GCache. Family definition, family
783 comparison, and glyph loading are however left
784 to sub-classes.
785
786 FTC_SCache: Used to store up to 16 small bitmaps per cache
787 node. This extends FTC_GCache. Family
788 definition, family comparison and glyph loading
789 are however left to sub-classes.
790
791 - The file `src/cache/ftcbasic.c' implements:
792
793 FTC_ImageCache: Extends FTC_ICache; implements family
794 definitions and glyph loading similar to the
795 old API.
796
797 FTC_SBitCache: Extends FTC_SCache, implements family
798 definitions and glyph loading similar to the
799 old API
800
801 Client applications should be able to extend FTC_GCache,
802 FTC_ICache, or FTC_SCache much more easily (i.e., less code to
803 write, and less callbacks). For example, one could envision
804 caches that are capable of storing transformed (obliqued),
805 stroked, emboldened, or colored glyph images. Use
806 `ftcbasic.c' as an example.
807
808 - All public APIs are now in `include/freetype/ftcache.h', (to
809 be accessed as `FT_CACHE_H'). The contents of
810 `include/freetype/cache/' is only needed by applications that
811 wish to implement their own caches.
812
813 - There were some major performance improvements through the use
814 of various programming tricks. Cache hits are up to 70%
815 faster than in the old code.
816
Werner Lembergb4142d52007-01-17 12:45:26 +0000817 - The FTC_CMapCache has been simplified. Charmaps can only be
Werner Lemberg80cfbd72003-12-26 07:26:08 +0000818 accessed by index right now. There is also a new API named
819 `FT_Charmap_GetIndex' for this purpose.
820
821 - The demo programs have been updated to the new code. The
822 previous versions will not work with the current one.
823
Werner Lemberg2630e542004-03-20 14:26:38 +0000824 - Using an invalid face index in FT_Open_Face and friends now
825 causes an error even if the font contains a single face only.
826
Werner Lemberg51ecb692003-11-13 10:19:27 +0000827
Werner Lemberge1075142003-12-16 06:04:44 +0000828 III. MISCELLANEOUS
829
Werner Lemberg110246c2006-09-26 21:55:44 +0000830 - Wolfgang Domröse contributed support files for building FreeType
Werner Lembergb066c152003-12-16 06:42:11 +0000831 on the Atari using the PureC compiler. Note that the Atari is a
832 16bit platform.
Werner Lemberge1075142003-12-16 06:04:44 +0000833
Werner Lemberg9cef4792004-02-08 09:07:08 +0000834 - Vitaliy Pasternak contributed project files for VS.NET 2003.
835
Werner Lemberge1075142003-12-16 06:04:44 +0000836
Werner Lemberg51ecb692003-11-13 10:19:27 +0000837======================================================================
838
Werner Lemberg94168f02006-05-11 07:07:09 +0000839CHANGES BETWEEN 2.1.7 and 2.1.6
Werner Lemberge42dbce2003-11-09 08:37:14 +0000840
841 I. IMPORTANT BUG FIXES
842
843 - Updated to newest libtool version, fixing build problems on
844 various platforms.
845
846 - On Unix platforms, `make install' didn't copy the correct
847 `ftconfig.h' file.
848
849 Note that version 2.1.7 contains the same library C source code as
850 version 2.1.6.
851
852
853======================================================================
854
Werner Lemberg94168f02006-05-11 07:07:09 +0000855CHANGES BETWEEN 2.1.6 and 2.1.5
David Turnerdb3faff2003-09-11 19:58:19 +0000856
857 I. IMPORTANT BUG FIXES
858
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000859 - The PFR font driver didn't load kerning tables correctly, and
860 the functions in FT_PFR_H didn't work at all.
David Turnerdb3faff2003-09-11 19:58:19 +0000861
Werner Lemberg99ee4992003-09-20 17:23:36 +0000862 - Type 1 font files in binary format (PFB) with an end-of-file
863 indicator weren't accepted by the FreeType engine.
864
Werner Lemberg4795b362003-10-23 16:24:10 +0000865 - Fonts which contain /PaintType and /StrokeWidth no longer cause
866 a segfault. This bug has been introduced in version 2.1.5.
867
868 - Fonts loaded with FT_LOAD_RENDER no longer cause strange
869 results. This bug has been introduced in version 2.1.5.
870
871 - Some Windows (bitmap) FNT/FON files couldn't be handled
872 correctly.
873
Werner Lemberge42dbce2003-11-09 08:37:14 +0000874
David Turnerdb3faff2003-09-11 19:58:19 +0000875 II. IMPORTANT CHANGES
876
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000877 - The internal module API has been heavily changed in favor of
878 massive simplifications within the font engine. This also means
879 that authors of third-party modules must adapt their code to the
Werner Lemberge42dbce2003-11-09 08:37:14 +0000880 new scheme.
881
882 NOTE: THE NEW SCHEME IS NOT COMPLETED YET. PLEASE WAIT UNTIL A
883 FINAL ANNOUNCEMENT!
David Turnerdb3faff2003-09-11 19:58:19 +0000884
Werner Lemberg4795b362003-10-23 16:24:10 +0000885 - The PostScript parser has been enhanced to handle comments and
886 strings correctly. Additionally, more syntax forms are
887 recognized.
888
Werner Lemberge42dbce2003-11-09 08:37:14 +0000889 - Added the optional unpatented hinting system for TrueType. It
890 allows typefaces which need hinting to produce correct glyph
891 forms (e.g., Chinese typefaces from Dynalab) to work acceptably
892 without infringing Apple patents. This system is compiled only
893 if TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING is defined in
894 ftoption.h (activated by default).
David Turnerdb3faff2003-09-11 19:58:19 +0000895
Werner Lemberge42dbce2003-11-09 08:37:14 +0000896
897 III. MISCELLANEOUS
898
899 - There is now a guard in the public header files to protect
900 against inclusion of freetype.h from FreeType 1.
901
902 - Direct inclusion of freetype.h and other public header files no
903 longer works. You have to use the documented scheme
904
905 #include <ft2build.h>
906 #include FT_FREETYPE_H
907
908 to load freetype.h with a symbolic name. This protects against
909 renaming of public header files (which shouldn't happen but
910 actually has, avoiding two public header files with the same
911 name).
912
913
914======================================================================
David Turner7543f392003-09-01 21:18:03 +0000915
Werner Lemberg94168f02006-05-11 07:07:09 +0000916CHANGES BETWEEN 2.1.5 and 2.1.4
Werner Lembergf9d864a2003-07-25 05:57:21 +0000917
Werner Lembergf9d864a2003-07-25 05:57:21 +0000918 I. IMPORTANT BUG FIXES
919
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000920 - Parsing the /CIDFontName field now removes the leading slash to
Werner Lembergf9d864a2003-07-25 05:57:21 +0000921 be in sync with other font drivers.
922
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000923 - gzip support was buggy. Some fonts could not be read.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000924
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000925 - Fonts which have nested subglyphs more than one level deep no
Werner Lembergf9d864a2003-07-25 05:57:21 +0000926 longer cause a segfault.
927
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000928 - Creation of synthetic cmaps for fonts in CFF format was broken
Werner Lembergf9d864a2003-07-25 05:57:21 +0000929 partially.
930
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000931 - Numeric font dictionary entries for synthetic fonts are no
932 longer overwritten.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000933
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000934 - The font matrix wasn't applied to the advance width for Type1,
Werner Lemberg4795b362003-10-23 16:24:10 +0000935 CID, and CFF fonts. This caused problems when loading certain
936 synthetic Type 1 fonts like `Helvetica Narrow'.
Werner Lemberge8ff7692003-08-06 04:40:48 +0000937
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000938 - The test for the charset registry in BDF and PCF fonts is now
Werner Lembergf9d864a2003-07-25 05:57:21 +0000939 case-insensitive.
940
Werner Lemberg4795b362003-10-23 16:24:10 +0000941 - FT_Vector_Rotate sometimes returned strange values due to
942 rounding errors.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000943
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000944 - The PCF driver now returns the correct number of glyphs
945 (including an artificial `notdef' glyph at index 0).
Werner Lembergf9d864a2003-07-25 05:57:21 +0000946
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000947 - FreeType now supports buggy CMaps which are contained in many
948 CJK fonts from Dynalab.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000949
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000950 - Opening an invalid font on a Mac caused a segfault due to
Werner Lembergf9d864a2003-07-25 05:57:21 +0000951 double-freeing memory.
952
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000953 - BDF fonts with more than 32768 glyphs weren't supported
954 properly.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000955
956
957 II. IMPORTANT CHANGES
958
Werner Lembergf9d864a2003-07-25 05:57:21 +0000959 - Accessing bitmap font formats has been synchronized. To do that
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000960 the FT_Bitmap_Size structure has been extended to contain new
Werner Lembergf9d864a2003-07-25 05:57:21 +0000961 fields `size', `x_ppem', and `y_ppem'.
962
963 - The FNT driver now returns multiple faces, not multiple strikes.
964
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000965 - The `psnames' module has been updated to the Adobe Glyph List
Werner Lembergf9d864a2003-07-25 05:57:21 +0000966 version 2.0.
967
968 - The `psnames' module now understands `uXXXX[X[X]]' glyph names.
969
970 - The algorithm for guessing the font style has been improved.
971
Werner Lemberg7f1458a2003-12-17 21:57:56 +0000972 - For fonts in SFNT format, root->height is no longer increased if
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000973 the line gap is zero. There exist fonts (containing e.g. form
974 drawing characters) which intentionally have a zero line gap
975 value.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000976
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000977 - ft_glyph_bbox_xxx flags are now deprecated in favour of
Werner Lembergf9d864a2003-07-25 05:57:21 +0000978 FT_GLYPH_BBOX_XXX.
979
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000980 - ft_module_xxx flags are now deprecated in favour of
981 FT_MODULE_XXX.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000982
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000983 - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now
984 deprecated in favour of
985 FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB} -- those encodings
986 are not specific to Microsoft.
Werner Lemberged2a8df2003-09-01 07:06:06 +0000987
Werner Lembergf9d864a2003-07-25 05:57:21 +0000988
989 III. MISCELLANEOUS
990
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000991 - The autohinter has been further improved; for example, `m'
992 glyphs now retain its vertical symmetry.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000993
Werner Lembergf9d864a2003-07-25 05:57:21 +0000994 - Partial support of Mac fonts on non-Mac platforms.
995
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000996 - `make refdoc' (after first `make') builds the HTML
997 documentation. You need Python for this.
Werner Lembergf9d864a2003-07-25 05:57:21 +0000998
Werner Lemberg5e3614f2003-09-12 19:38:13 +0000999 - The make build system should now work more reliably on DOS-like
Werner Lembergf9d864a2003-07-25 05:57:21 +00001000 platforms.
1001
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001002 - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has
1003 been added.
Werner Lembergf9d864a2003-07-25 05:57:21 +00001004
1005 - Better VMS build support.
1006
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001007 - Support for the pkg-config package by providing a `freetype.pc'
Werner Lembergf9d864a2003-07-25 05:57:21 +00001008 file.
1009
1010 - New configure option --with-old-mac-fonts for Darwin.
1011
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001012 - Some source files have been renamed (mainly to fit into the 8.3
Werner Lembergf9d864a2003-07-25 05:57:21 +00001013 naming scheme).
1014
1015
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001016======================================================================
Werner Lembergf9d864a2003-07-25 05:57:21 +00001017
Werner Lemberg94168f02006-05-11 07:07:09 +00001018CHANGES BETWEEN 2.1.4 and 2.1.3
David Turner9acb09e2003-01-24 08:30:36 +00001019
1020 I. IMPORTANT BUG FIXES
1021
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001022 - Updated to newest libtool version, fixing build problems on
1023 various platforms.
David Turner9acb09e2003-01-24 08:30:36 +00001024
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001025 - A fix in the Gzip stream reader: It couldn't read certain .gz
1026 files properly due to a small typo. In certain cases, FreeType
1027 could also loop endlessly when trying to load tiny gzipped
1028 files.
David Turner9acb09e2003-01-24 08:30:36 +00001029
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001030 - The configure script now tries to use the system-wide zlib when
1031 it finds one (instead of the copy found in src/gzip). And
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001032 `freetype-config' has been updated to return relevant flags in
1033 this case when invoked with `--libs' (e.g. `-lzlib').
David Turner9acb09e2003-01-24 08:30:36 +00001034
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001035 - Certain fonts couldn't be loaded by 2.1.3 because they lacked a
1036 Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously
1037 rejected them.
David Turner9acb09e2003-01-24 08:30:36 +00001038
Werner Lemberga16c4a72003-04-21 13:30:27 +00001039 - The CFF loader was modified to accept fonts which only contain a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001040 subset of their reference charset. This prevented the correct
1041 use of PDF-embedded fonts.
David Turner9acb09e2003-01-24 08:30:36 +00001042
Werner Lemberga16c4a72003-04-21 13:30:27 +00001043 - The logic to detect Unicode charmaps has been modified. This is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001044 required to support fonts which include both 16-bit and 32-bit
1045 charmaps (like very recent asian ones) using the new 10 and 12
1046 SFNT formats.
David Turner9acb09e2003-01-24 08:30:36 +00001047
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001048 - The TrueType loader now limits the depth of composite glyphs.
1049 This is necessary to prevent broken fonts to break the engine by
1050 blowing the stack with recursive glyph definitions.
David Turner9acb09e2003-01-24 08:30:36 +00001051
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001052 - The CMap cache is now capable of managing UCS-4 character codes
1053 that are mapped through extended charmaps in recent
1054 TrueType/OpenType fonts.
David Turnerb848b682003-02-25 21:44:11 +00001055
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001056 - The cache sub-system now properly manages out-of-memory
1057 conditions instead of blindly reporting them to the caller.
1058 This means that it will try to empty the cache before restarting
1059 its allocations to see if that can help.
David Turner66cbc202003-03-20 07:04:40 +00001060
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001061 - The PFR driver didn't return the list of available embedded
1062 bitmaps properly.
David Turnerb848b682003-02-25 21:44:11 +00001063
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001064 - There was a nasty memory leak when using embedded bitmaps in
1065 certain font formats.
David Turnerb6b63372003-04-09 06:55:57 +00001066
Werner Lemberga16c4a72003-04-21 13:30:27 +00001067
David Turner9acb09e2003-01-24 08:30:36 +00001068 II. IMPORTANT CHANGES
1069
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001070 - David Chester contributed some enhancements to the auto-hinter
1071 that significantly increase the quality of its output. The
1072 Postscript hinter was also improved in several ways.
David Turner9acb09e2003-01-24 08:30:36 +00001073
Werner Lemberga16c4a72003-04-21 13:30:27 +00001074 - The FT_RENDER_MODE_LIGHT render mode was implemented.
David Turner9acb09e2003-01-24 08:30:36 +00001075
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001076 - A new API function called `FT_Get_BDF_Property' has been added
1077 to FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font
1078 files. THIS IS STILL EXPERIMENTAL, since it hasn't been
1079 properly tested yet.
David Turner9acb09e2003-01-24 08:30:36 +00001080
Werner Lemberga16c4a72003-04-21 13:30:27 +00001081 - A Windows FNT specific API has been added, mostly to access font
1082 headers. This is used by Wine.
David Turner9acb09e2003-01-24 08:30:36 +00001083
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001084 - TrueType tables without an `hmtx' table are now tolerated when
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001085 an incremental interface is used. This happens for certain
1086 Type42 fonts passed from Ghostscript to FreeType.
David Turner9acb09e2003-01-24 08:30:36 +00001087
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001088 - The PFR font driver is now capable of returning the font family
1089 and style names when they are available (instead of the sole
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001090 `FontID'). This is performed by parsing an *undocumented*
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001091 portion of the font file!
Werner Lemberga16c4a72003-04-21 13:30:27 +00001092
David Turnerb848b682003-02-25 21:44:11 +00001093
David Turner9acb09e2003-01-24 08:30:36 +00001094 III. MISCELLANEOUS
1095
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001096 - The path stroker in FT_STROKER_H has entered beta stage. It now
1097 works very well, but its interface might change a bit in the
1098 future. More on this in later releases.
David Turner9acb09e2003-01-24 08:30:36 +00001099
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001100 - The documentation for FT_Size_Metrics didn't appear properly in
1101 the API reference.
David Turner9acb09e2003-01-24 08:30:36 +00001102
Werner Lemberga16c4a72003-04-21 13:30:27 +00001103 - The file docs/VERSION.DLL has been updated to explain versioning
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001104 with FreeType (i.e., comparing release/libtool/so numbers, and
1105 how to use them in autoconf scripts).
David Turner9acb09e2003-01-24 08:30:36 +00001106
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001107 - The installation documentation has been seriously revamped.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001108 Everything is now in the `docs' directory.
Werner Lemberga16c4a72003-04-21 13:30:27 +00001109
David Turner66cbc202003-03-20 07:04:40 +00001110
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001111======================================================================
Werner Lemberga16c4a72003-04-21 13:30:27 +00001112
Werner Lemberg94168f02006-05-11 07:07:09 +00001113CHANGES BETWEEN 2.1.3 and 2.1.2
David Turner86e6a712002-08-29 23:18:56 +00001114
1115 I. IMPORTANT BUG FIXES
1116
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001117 - FT_Vector_Transform had been incorrectly modified in 2.1.2,
1118 resulting in incorrect transformations being applied (for
1119 example, rotations were processed in opposite angles).
David Turner86e6a712002-08-29 23:18:56 +00001120
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001121 - The format 8 and 12 TrueType charmap enumeration routines have
1122 been fixed (FT_Get_Next_Char returned invalid values).
David Turner86e6a712002-08-29 23:18:56 +00001123
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001124 - The PFR font driver returned incorrect advance widths if the
1125 outline and metrics resolution defined in the font file were
1126 different.
David Turner86e6a712002-08-29 23:18:56 +00001127
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001128 - FT_Glyph_To_Bitmap now returns successfully when called with an
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001129 FT_BitmapGlyph argument (it previously returned an error).
David Turner86e6a712002-08-29 23:18:56 +00001130
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001131 - A bug in the Type 1 loader that prevented valid font bounding
1132 boxes to be loaded from multiple master fonts.
David Turner86e6a712002-08-29 23:18:56 +00001133
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001134 - The SFNT validation code has been rewritten. FreeType can now
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001135 load `broken' fonts that were usable on Windows, but not with
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001136 previous versions of the library.
David Turner86e6a712002-08-29 23:18:56 +00001137
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001138 - The computation of bearings in the BDF driver has been fixed.
David Turner86e6a712002-08-29 23:18:56 +00001139
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001140 - The Postscript hinter crashed when trying to hint certain glyphs
1141 (more precisely, when trying to apply hints to an empty glyph
1142 outline).
David Turnerdb3d5c12002-09-18 07:53:22 +00001143
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001144 - The TrueType glyph loader now supports composites in `Apple
1145 format' (they differ slightly from Microsoft/OpenType ones in
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001146 the way transformation offsets are computed).
Werner Lemberg98add9e2002-09-18 11:32:12 +00001147
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001148 - FreeType was very slow at opening certain asian CID/CFF fonts,
1149 due to fixed increment in dynamic array re-allocations. This
1150 has been changed to exponential behaviour to get acceptable
1151 performance.
Werner Lemberga16c4a72003-04-21 13:30:27 +00001152
1153
David Turner86e6a712002-08-29 23:18:56 +00001154
David Turnerb0b8df62002-09-25 00:10:27 +00001155 II. IMPORTANT CHANGES
David Turner86e6a712002-08-29 23:18:56 +00001156
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001157 - The PCF driver now supports gzip-compressed font files natively.
1158 This means that you will be able to use all these bitmap fonts
1159 that come with XFree86 with FreeType (and libXft/libXft2, by
1160 extension).
David Turner6048e3d2002-11-13 23:28:08 +00001161
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001162 - The automatic and postscript hinters have both been updated.
1163 This results in a relatively important increase of rendering
Werner Lembergb4142d52007-01-17 12:45:26 +00001164 quality since many nasty defaults have been suppressed. Please
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001165 visit the web page:
David Turnerdb3d5c12002-09-18 07:53:22 +00001166
David Turner6048e3d2002-11-13 23:28:08 +00001167 http://www.freetype.org/hinting/smooth-hinting.html
David Turnerdb3d5c12002-09-18 07:53:22 +00001168
Werner Lemberg98add9e2002-09-18 11:32:12 +00001169 for additional details on this topic.
David Turnerdb3d5c12002-09-18 07:53:22 +00001170
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001171 - The `load_flags' parameter of `FT_Load_Glyph' is now an FT_Int32
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001172 (instead of just being an FT_Int). This breaks source and
1173 binary compatibility for 16bit systems only, while retaining
1174 both of them for 32 and 64 bit ones.
David Turner86e6a712002-08-29 23:18:56 +00001175
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001176 Some new flags have been added consequently:
David Turner86e6a712002-08-29 23:18:56 +00001177
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001178 FT_LOAD_NO_AUTOHINT :: Disable the use of the auto-hinter
1179 (but not native format hinters).
David Turner86e6a712002-08-29 23:18:56 +00001180
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001181 FT_LOAD_TARGET_NORMAL :: Hint and render for normal
1182 anti-aliased displays.
David Turner86e6a712002-08-29 23:18:56 +00001183
Werner Lemberg6b5c6692002-09-05 15:10:54 +00001184 FT_LOAD_TARGET_MONO :: Hint and render for 1-bit displays.
David Turner86e6a712002-08-29 23:18:56 +00001185
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001186 FT_LOAD_TARGET_LCD :: Hint and render for horizontal RGB or
1187 BGR sub-pixel displays (like LCD
1188 screens). THIS IS STILL
1189 EXPERIMENTAL!
David Turner86e6a712002-08-29 23:18:56 +00001190
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001191 FT_LOAD_TARGET_LCD_V :: Same as FT_LOAD_TARGET_LCD, for
1192 vertical sub-pixel displays (like
1193 rotated LCD screens). THIS IS STILL
1194 EXPERIMENTAL!
David Turner86e6a712002-08-29 23:18:56 +00001195
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001196 FT_LOAD_MONOCHROME is still supported, but only affects
1197 rendering, not the hinting.
David Turner86e6a712002-08-29 23:18:56 +00001198
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001199 Note that the `ftview' demo program available in the `ft2demos'
1200 package has been updated to support LCD-optimized display on
1201 non-paletted displays (under Win32 and X11).
David Turnerb0b8df62002-09-25 00:10:27 +00001202
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001203 - The PFR driver now supports embedded bitmaps (all formats
1204 supported), and returns correct kerning metrics for all glyphs.
David Turner072f7f82002-10-05 15:00:36 +00001205
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001206 - The TrueType charmap loader now supports certain `broken' fonts
1207 that load under Windows without problems.
David Turnerb0b8df62002-09-25 00:10:27 +00001208
Werner Lembergcfd5dec2002-09-27 18:17:17 +00001209 - The cache API has been slightly modified (it's still a beta!):
David Turnerb0b8df62002-09-25 00:10:27 +00001210
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001211 - The type FTC_ImageDesc has been removed; it is now replaced
1212 by FTC_ImageTypeRec. Note that one of its fields is a
1213 `load_flag' parameter for FT_Load_Glyph.
David Turnerb0b8df62002-09-25 00:10:27 +00001214
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001215 - The field `num_grays' of FT_SBitRec has been changed to
1216 `max_grays' in order to fit within a single byte. Its
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001217 maximum value is thus 255 (instead of 256 as previously).
David Turnerb0b8df62002-09-25 00:10:27 +00001218
1219
1220 III. MISCELLANEOUS
1221
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001222 - Added support for the DESTDIR variable during `make install'.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001223 This simplifies packaging of FreeType.
David Turnerb0b8df62002-09-25 00:10:27 +00001224
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001225 - Included modified copies of the ZLib sources in `src/gzip' in
1226 order to support gzip-compressed PCF fonts. We do not use the
1227 system-provided zlib for now, though this is a probable
1228 enhancement for future releases.
David Turner6048e3d2002-11-13 23:28:08 +00001229
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001230 - The DocMaker tool used to generate the on-line API reference has
1231 been completely rewritten. It is now located in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001232 `src/tools/docmaker/docmaker.py'. Features:
David Turnerb0b8df62002-09-25 00:10:27 +00001233
1234 - better cross-referenced output
1235 - more polished output
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001236 - uses Python regular expressions (though it didn't speed the
David Turnerb0b8df62002-09-25 00:10:27 +00001237 program)
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001238 - much more modular structure, which allows for different
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001239 `backends' in order to generate HTML, XML, or whatever
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001240 format.
David Turnerb0b8df62002-09-25 00:10:27 +00001241
1242 One can regenerate the API reference by calling:
1243
1244 python src/tools/docmaker/docmaker.py \
1245 --prefix=ft2 \
1246 --title=FreeType-2.1.3 \
1247 --output=<outputdirectory>
1248 include/freetype/*.h \
1249 include/freetype/config/*.h \
1250 include/freetype/cache/*.h
1251
1252 - A new, experimental, support for incremental font loading (i.e.,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001253 loading of fonts where the glyphs are not in the font file
1254 itself, but provided by an external component, like a Postscript
1255 interpreter) has been added by Graham Asher. This is still work
1256 in progress, however.
David Turnerb0b8df62002-09-25 00:10:27 +00001257
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001258 - A new, EXPERIMENTAL, path stroker has been added. It doesn't
1259 suffer from severe rounding errors and treat bezier arcs
1260 directly. Still work in progress (i.e. not part of the official
1261 API). See the file <freetype/ftstroker.h> for some of the
1262 details.
David Turnerb0b8df62002-09-25 00:10:27 +00001263
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001264 - The massive re-formatting of sources and internal re-design is
1265 still under-way. Many internal functions, constants, and types
1266 have been renamed.
David Turnerb0b8df62002-09-25 00:10:27 +00001267
David Turner86e6a712002-08-29 23:18:56 +00001268
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001269======================================================================
David Turner86e6a712002-08-29 23:18:56 +00001270
Werner Lemberg94168f02006-05-11 07:07:09 +00001271CHANGES BETWEEN 2.1.2 and 2.1.1
David Turnerd490e372002-05-28 23:40:37 +00001272
1273 I. IMPORTANT BUG FIXES
1274
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001275 - Many font drivers didn't select a Unicode charmap by default
1276 when a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS
1277 options enabled), causing many applications to not be able to
1278 display text correctly with the 2.1.x releases.
David Turner86e6a712002-08-29 23:18:56 +00001279
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001280 - The PFR driver had a bug in its composite loading code that
1281 produces incorrectly placed accents with many fonts.
David Turner86e6a712002-08-29 23:18:56 +00001282
Werner Lemberg9cbb1662002-06-22 13:35:41 +00001283 - The Type42 driver crashed sometimes due to a nasty bug.
David Turner86e6a712002-08-29 23:18:56 +00001284
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001285 - The Type 1 custom encoding charmap didn't handle the case where
1286 the first glyph index wasn't 0.
David Turner38f8e892002-06-21 07:33:23 +00001287
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001288 - A serious typo in the TrueType composite loader produced
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001289 incorrectly placed glyphs in fonts like `Wingdings' and a few
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001290 others.
David Turner38f8e892002-06-21 07:33:23 +00001291
1292
1293 II. MISCELLANEOUS
1294
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001295 - The Win32 Visual C++ project file has been updated to include
1296 the PFR driver as well.
David Turner38f8e892002-06-21 07:33:23 +00001297
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001298 - `freetype.m4' is now installed by default by `make install' on
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001299 Unix systems.
David Turner38f8e892002-06-21 07:33:23 +00001300
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001301 - The function FT_Get_PS_Font_Info now works with CID and Type42
1302 fonts as well.
Werner Lemberg9cbb1662002-06-22 13:35:41 +00001303
David Turnera0d8abf2002-06-21 07:42:50 +00001304
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001305======================================================================
Werner Lemberg9cbb1662002-06-22 13:35:41 +00001306
Werner Lemberg94168f02006-05-11 07:07:09 +00001307CHANGES BETWEEN 2.1.1 and 2.1.0
David Turner38f8e892002-06-21 07:33:23 +00001308
1309 I. IMPORTANT BUG FIXES
1310
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001311 - The `version_info' returned by `freetype-config' in 2.1.0
1312 returned an invalid value. It now returns 9:1:3 (2.0.9 returned
1313 9:0:3).
David Turnerd490e372002-05-28 23:40:37 +00001314
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001315 - Version 2.1.0 couldn't be linked against applications on Win32
1316 and Amiga systems due to a new debug function that wasn't
1317 properly propagated to the system-specific directory in
1318 `builds'.
David Turnerd490e372002-05-28 23:40:37 +00001319
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001320 - Various MacOS and Mac OS X specific fixes.
David Turnerd490e372002-05-28 23:40:37 +00001321
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001322 - Fixed a bug in the TrueType charmap validation routines that
1323 made version 2.1.0 too restrictive -- many popular fonts have
1324 been rejected.
David Turnerd490e372002-05-28 23:40:37 +00001325
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001326 - There was still a very small difference between the monochrome
1327 glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the
1328 bytecode interpreter enabled. This was caused by an invalid
1329 flag setting in the TrueType glyph loader, making the rasterizer
Werner Lembergb4142d52007-01-17 12:45:26 +00001330 change its drop-out control mode. Now the results should
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001331 _really_ be completely identical.
David Turnerd490e372002-05-28 23:40:37 +00001332
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001333 - The TrueType name table loader has been improved to support many
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001334 popular though buggy Asian fonts. It now ignores empty name
1335 entries, invalid pointer offsets and a few other incorrect
1336 subtleties. Moreover, name strings are now loaded on demand,
1337 which reduces the memory load of many faces (e.g. the ARIAL.TTF
1338 font file contains a 10kByte name table with 70 names).
David Turnerd490e372002-05-28 23:40:37 +00001339
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001340 - Fixed a bug in the Postscript hinter that prevented family blues
David Turnerd490e372002-05-28 23:40:37 +00001341 substitution to happen correctly.
1342
1343
1344 II. NEW FEATURES
1345
Werner Lemberg5bbb4942002-05-30 19:22:14 +00001346 - Three new font drivers in this release:
David Turnerd490e372002-05-28 23:40:37 +00001347
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001348 * A BDF font driver, contributed by Franco Zappa Nardelli,
1349 heavily modified by Werner Lemberg. It also supports
1350 anti-aliased bitmaps (using a slightly extended BDF format).
David Turnerd490e372002-05-28 23:40:37 +00001351
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001352 * A Type42 font driver, contributed by Roberto Alameda. It is
David Turnerb1d8f732002-06-10 22:41:57 +00001353 still experimental but seems to work relatively well.
David Turnerd490e372002-05-28 23:40:37 +00001354
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001355 * A PFR font driver, contributed by David Turner himself. It
1356 doesn't support PFR hinting -- note that BitStream has at
1357 least two patents on this format!
David Turnerd490e372002-05-28 23:40:37 +00001358
1359
David Turnerb1d8f732002-06-10 22:41:57 +00001360 III. MISCELLANEOUS
1361
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001362 - The cache sub-system has been optimized in important ways.
1363 Cache hits are now significantly faster. For example, using the
1364 CMap cache is about twice faster than calling FT_Get_Char_Index
1365 on most platforms. Similarly, using an SBit cache is about five
1366 times faster than loading the bitmaps from a bitmap file, and
1367 300 to 500 times faster than generating them from a scalable
1368 format.
David Turnerb1d8f732002-06-10 22:41:57 +00001369
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001370 Note that you should recompile your sources if you designed a
1371 custom cache class for the FT2 Cache subsystem, since the
1372 changes performed are source, but not binary, compatible.
David Turnerb1d8f732002-06-10 22:41:57 +00001373
1374
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001375======================================================================
David Turnerd490e372002-05-28 23:40:37 +00001376
Werner Lemberg94168f02006-05-11 07:07:09 +00001377CHANGES BETWEEN 2.1.0 and 2.0.9
David Turner498eed22002-04-15 12:01:10 +00001378
1379 I. IMPORTANT BUG FIXES
1380
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001381 - The TrueType bytecode interpreter has been fixed to produce
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001382 _exactly_ the same output as FreeType 1.x. Previous differences
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001383 were due to slightly distinct fixed-point computation routines
David Turner498eed22002-04-15 12:01:10 +00001384 used to perform dot products and vector length measurements.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001385
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001386 It seems that native TrueType hinting is _extremely_ sensitive
1387 to rounding errors. The required vector computation routines
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001388 have been optimized and placed within the `ttinterp.c' file.
David Turner498eed22002-04-15 12:01:10 +00001389
Werner Lemberg6e188b42002-04-17 22:42:13 +00001390 - Fixed the parsing of accelerator tables in the PCF font driver.
David Turnerd490e372002-05-28 23:40:37 +00001391
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001392 - Fixed the Type1 glyph loader routine used to compute the font's
David Turner11cfdd02002-04-17 09:37:59 +00001393 maximum advance width.
David Turner498eed22002-04-15 12:01:10 +00001394
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001395
David Turner498eed22002-04-15 12:01:10 +00001396 II. NEW FEATURES
1397
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001398 - The `configure' script used on Unix systems has been modified to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001399 check that GNU Make is being used to build the library.
1400 Otherwise, it will display a message proposing to use the
1401 GNUMAKE environment variable to name it.
David Turner498eed22002-04-15 12:01:10 +00001402
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001403 The Unix-specific file README.UNX has been modified accordingly.
1404
1405
David Turner498eed22002-04-15 12:01:10 +00001406 III. MISCELLANEOUS
1407
Werner Lemberg56c368c2005-06-04 23:00:25 +00001408 - The FreeType License in `docs/FTL.TXT' has been updated to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001409 include a proposed preferred disclaimer. If you are using
1410 FreeType in your products, you are encouraged (but not mandated)
1411 to use the following text in your documentation:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001412
1413 """
Werner Lemberg110246c2006-09-26 21:55:44 +00001414 Portions of this software are copyright © 1996-2002 The
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001415 FreeType Project (www.freetype.org). All rights reserved.
David Turner498eed22002-04-15 12:01:10 +00001416 """
1417
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001418 - The default size of the render pool has been reduced to 16kByte.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001419 This shouldn't result in any noticeable performance penalty,
1420 unless you are using the engine as-is to render very large and
1421 complex glyphs.
David Turner498eed22002-04-15 12:01:10 +00001422
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001423 - The FreeType 2 redesign has begun. More information can be
1424 found at this URL:
David Turner498eed22002-04-15 12:01:10 +00001425
David Turner498eed22002-04-15 12:01:10 +00001426 http://www.freetype.org/freetype2/redesign.html
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001427
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001428 The following internal changes have been performed within the
1429 sources of this release:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001430
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001431 - Many internal types have been renamed to increase
1432 consistency. The following should be true, except for
1433 public types:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001434
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001435 * All structure types have a name ending in `Rec' (short
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001436 for `record').
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001437
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001438 * A pointer-to-structure type has the same name as the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001439 structure, _without_ the `Rec' suffix.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001440
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001441 Example:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001442
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001443 typedef struct FooRec_
1444 {
1445 ...
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001446
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001447 } FooRec, *Foo;
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001448
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001449 - Many internal macros have been renamed to increase
1450 consistency. The following should be true:
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001451
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001452 * All macros have a name beginning with `FT_'. This
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001453 required a few changes like
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001454
1455 ALLOC => FT_ALLOC
1456 FREE => FT_FREE
1457 REALLOC => FT_REALLOC
1458
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001459 * All macros are completely UPPERCASE. This required a
1460 few changes like:
David Turner498eed22002-04-15 12:01:10 +00001461
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001462 READ_Short => FT_READ_SHORT
1463 NEXT_Short => FT_NEXT_SHORT
1464 GET_ULongLE => FT_GET_ULONG_LE
1465 MEM_Set => FT_MEM_SET
1466 MEM_Copy => FT_MEM_COPY
1467 etc.
David Turner498eed22002-04-15 12:01:10 +00001468
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001469 * Whenever possible, all macro names follow the
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001470 FT_<OBJECT>_<METHOD> pattern. For example
David Turner498eed22002-04-15 12:01:10 +00001471
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001472 ACCESS_Frame => FT_FRAME_ENTER
1473 FORGET_Frame => FT_FRAME_EXIT
1474 EXTRACT_Frame => FT_FRAME_EXTRACT
1475 RELEASE_Frame => FT_FRAME_RELEASE
David Turner498eed22002-04-15 12:01:10 +00001476
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001477 FILE_Pos => FT_STREAM_POS
1478 FILE_Seek => FT_STREAM_SEEK
1479 FILE_Read => FT_STREAM_READ
1480 FILE_ReadAt => FT_STREAM_READ_AT
1481 READ_Fields => FT_STREAM_READ_FIELDS
David Turner498eed22002-04-15 12:01:10 +00001482
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001483 - Many internal functions have been renamed to follow the
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001484 FT_<Object>_<Method> pattern. For example:
David Turner498eed22002-04-15 12:01:10 +00001485
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001486 FT_Seek_Stream => FT_Stream_Seek
1487 FT_Read_Stream_At => FT_Stream_ReadAt
1488 FT_Done_Stream => FT_Stream_Close
1489 FT_New_Stream => FT_Stream_Open
1490 FT_New_Memory_Stream => FT_Stream_OpenMemory
1491 FT_Extract_Frame => FT_Stream_ExtractFrame
David Turner498eed22002-04-15 12:01:10 +00001492
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001493 Note that method names do not contain `_'.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001494
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001495 - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced
1496 with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a
1497 type as the fourth argument. Instead, the array element
1498 type size is computed automatically from the type of the
1499 target pointer used.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001500
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001501 - A new object class, FT_CMap, has been introduced. These
1502 internal objects are used to model character maps. This
1503 eases the support of additional charmap types within the
1504 engine.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001505
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001506 - A new configuration file named `ftstdlib.h' has been added
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001507 to `include/freetype/config'. It is used to define aliases
1508 for _every_ routine of the ISO C library that the font
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001509 engine uses. Each aliases has a `ft_' prefix
1510 (e.g. `ft_strlen' is an alias for `strlen').
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001511
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001512 This is used to ease the porting of FreeType 2 to exotic
1513 runtime environments where the ISO C Library isn't available
1514 (e.g. XFree86 extension modules).
David Turner498eed22002-04-15 12:01:10 +00001515
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001516 More details are available in the `ChangeLog' file.
David Turner498eed22002-04-15 12:01:10 +00001517
1518
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001519======================================================================
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001520
Werner Lemberg94168f02006-05-11 07:07:09 +00001521CHANGES BETWEEN 2.0.9 and 2.0.8
David Turner2c7558c2002-04-11 14:21:16 +00001522
1523 I. IMPORTANT BUG FIXES
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001524
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001525 - Certain fonts like `foxjump.ttf' contain broken name tables with
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001526 invalid entries and wild offsets. This caused FreeType to crash
1527 when trying to load them.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001528
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001529 The SFNT `name' table loader has been fixed to be able to
1530 support these strange fonts.
David Turner2c7558c2002-04-11 14:21:16 +00001531
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001532 Moreover, the code in charge of processing this table has been
1533 changed to always favour Windows-formatted entries over other
1534 ones. Hence, a font that works on Windows but not on the Mac
1535 will load cleanly in FreeType and report accurate values for
1536 Family & PostScript names.
David Turner2c7558c2002-04-11 14:21:16 +00001537
1538 - The CID font driver has been fixed. It unfortunately returned a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001539 Postscript Font name with a leading slash, as in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001540 `/MunhwaGothic-Regular'.
David Turner2c7558c2002-04-11 14:21:16 +00001541
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001542 - FreeType 2 should now compile fine on AIX 4.3.3 as a shared
1543 library.
David Turner2c7558c2002-04-11 14:21:16 +00001544
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001545 - A bug in the Postscript hinter has been found and fixed,
1546 removing un-even stem widths at small pixel sizes (like 14-17).
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001547
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001548 This improves the quality of a certain number of Postscript
1549 fonts.
David Turner2c7558c2002-04-11 14:21:16 +00001550
1551
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001552 II. NEW FEATURES
David Turner2c7558c2002-04-11 14:21:16 +00001553
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001554 - A new function named `FT_Library_Version' has been added to
1555 return the current library's major, minor, and patch version
1556 numbers. This is important since the macros FREETYPE_MAJOR,
1557 FREETYPE_MINOR, and FREETYPE_PATCH cannot be used when the
1558 library is dynamically linked by a program.
David Turner2c7558c2002-04-11 14:21:16 +00001559
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001560 - Two new APIs have been added: `FT_Get_First_Char' and
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001561 `FT_Get_Next_Char'.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001562
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001563 Together, these can be used to iterate efficiently over the
1564 currently selected charmap of a given face. Read the API
1565 reference for more details.
David Turner2c7558c2002-04-11 14:21:16 +00001566
1567
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001568 III. MISCELLANEOUS
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001569
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001570 - The FreeType sources are under heavy internal re-factoring. As
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001571 a consequence, we have created a branch named `STABLE' on the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001572 CVS to hold all future releases/fixes in the 2.0.x family.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001573
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001574 The HEAD branch now contains the re-factored sources and
1575 shouldn't be used for testing or packaging new releases. In
1576 case you would like to access the 2.0.9 sources from our CVS
1577 repository, use the tag `VER-2-0-9'.
David Turner2c7558c2002-04-11 14:21:16 +00001578
1579
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001580======================================================================
David Turner2c7558c2002-04-11 14:21:16 +00001581
Werner Lemberg94168f02006-05-11 07:07:09 +00001582CHANGES BETWEEN 2.0.8 and 2.0.7
David Turner1c6af482002-02-08 14:00:20 +00001583
1584 I. IMPORTANT BUG FIXES
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001585
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001586 - There was a small but nasty bug in `freetype-config.in' which
1587 caused the `freetype-config' script to fail on Unix.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001588
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001589 This didn't prevent the installation of the library or even its
1590 execution, but caused problems when trying to compile many Unix
1591 packages that depend on it.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001592
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001593 - Some TrueType or OpenType fonts embedded in PDF documents do not
1594 have a 'cmap', 'post' and 'name' as is required by the
Werner Lemberg0cc456a2002-04-11 19:55:58 +00001595 specification. FreeType no longer refuses to load such fonts.
David Turner1c6af482002-02-08 14:00:20 +00001596
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001597 - Various fixes to the PCF font driver.
Werner Lemberg4639c4b2002-04-15 13:37:29 +00001598
David Turner1c6af482002-02-08 14:00:20 +00001599
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001600======================================================================
David Turner1c6af482002-02-08 14:00:20 +00001601
Werner Lemberg94168f02006-05-11 07:07:09 +00001602CHANGES BETWEEN 2.0.7 and 2.0.6
David Turner944b7292002-01-31 17:42:05 +00001603
1604 I. IMPORTANT BUG FIXES
1605
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001606 - Fixed two bugs in the Type 1 font driver. The first one
1607 resulted in a memory leak in subtle cases. The other one caused
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001608 FreeType to crash when trying to load `.gsf' files (Ghostscript
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001609 so-called Postscript fonts).
David Turner944b7292002-01-31 17:42:05 +00001610
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001611 (This made _many_ KDE applications crash on certain systems.
1612 FreeType _is_ becoming a critical system component on Linux :-)
David Turner944b7292002-01-31 17:42:05 +00001613
Werner Lemberg32b53462002-02-01 01:20:11 +00001614 - Fixed a memory leak in the CFF font driver.
David Turner944b7292002-01-31 17:42:05 +00001615
Werner Lemberg32b53462002-02-01 01:20:11 +00001616 - Fixed a memory leak in the PCF font driver.
David Turner944b7292002-01-31 17:42:05 +00001617
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001618 - Fixed the Visual C++ project file
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001619 `builds/win32/visualc/freetype.dsp' since it didn't include the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001620 Postscript hinter component, causing errors at build time.
David Turner944b7292002-01-31 17:42:05 +00001621
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001622 - Fixed a small rendering bug in the anti-aliased renderer that
1623 only occurred when trying to draw thin (less than 1 pixel)
1624 strokes.
David Turner944b7292002-01-31 17:42:05 +00001625
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001626 - Fixed `builds/unix/freetype2.a4' which is used to generate a
1627 valid `freetype2.m4' for use with autoconf.
Werner Lemberg32b53462002-02-01 01:20:11 +00001628
1629 - Fixed the OpenVMS Makefiles.
David Turner944b7292002-01-31 17:42:05 +00001630
1631
1632 II. MISCELLANEOUS
1633
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001634 - Added `configure' and `install' scripts to the top-level
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001635 directory. A GNU-style installation is thus now easily possible
1636 with
Werner Lemberg32b53462002-02-01 01:20:11 +00001637
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001638 ./configure <options>
1639 make
1640 make install
David Turner944b7292002-01-31 17:42:05 +00001641
1642
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001643======================================================================
David Turner944b7292002-01-31 17:42:05 +00001644
Werner Lemberg94168f02006-05-11 07:07:09 +00001645CHANGES BETWEEN 2.0.6 and 2.0.5
David Turnerafa38542001-10-18 13:22:01 +00001646
Werner Lembergf41e71a2001-12-20 21:22:02 +00001647 I. IMPORTANT BUG FIXES
David Turner640078d2001-12-10 10:47:47 +00001648
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001649 - It wasn't possible to load embedded bitmaps when the auto-hinter
1650 was used. This is now fixed.
David Turner640078d2001-12-10 10:47:47 +00001651
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001652 - The TrueType font driver didn't load some composites properly
1653 (the sub-glyphs were slightly shifted, and this was only
1654 noticeable when using monochrome rendering).
David Turnerafa38542001-10-18 13:22:01 +00001655
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001656 - Various fixes to the auto-hinter. They merely improve the
1657 output of sans-serif fonts. Note that there are still problems
1658 with serifed fonts and composites (accented characters).
David Turnerafa38542001-10-18 13:22:01 +00001659
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001660 - All scalable font drivers erroneously returned un-fitted glyph
1661 advances when hinting was requested. This created problems for
1662 a number of layout applications. This is a very old bug that
1663 got undetected mainly because most test/demo program perform
1664 rounding explicitly or implicitly (through the cache).
Werner Lembergf41e71a2001-12-20 21:22:02 +00001665
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001666 - `FT_Glyph_To_Bitmap' did erroneously modify the source glyph in
Werner Lembergf41e71a2001-12-20 21:22:02 +00001667 certain cases.
1668
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001669 - `glnames.py' still contained a bug that made FreeType return
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001670 invalid names for certain glyphs.
David Turnerafa38542001-10-18 13:22:01 +00001671
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001672 - The library crashed when loading certain Type 1 fonts like
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001673 `sadn.pfb' (`Stalingrad Normal'), which appear to contain
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001674 pathetic font info dictionaries.
David Turner6096b5a2002-01-07 10:40:48 +00001675
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001676 - The TrueType glyph loader is now much more paranoid and checks
1677 everything when loading a given glyph image. This was necessary
1678 to avoid problems (crashes and/or memory overwrites) with broken
1679 fonts that came from a really buggy automatic font converter.
David Turner6096b5a2002-01-07 10:40:48 +00001680
1681
Werner Lembergf41e71a2001-12-20 21:22:02 +00001682 II. IMPORTANT UPDATES AND NEW FEATURES
David Turner0fcb4122001-12-20 13:33:03 +00001683
Werner Lembergf41e71a2001-12-20 21:22:02 +00001684 - Important updates to the Mac-specific parts of the library.
David Turner0fcb4122001-12-20 13:33:03 +00001685
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001686 - The caching sub-system has been completely re-designed, and its
Werner Lemberg4db32ec2006-03-24 11:54:53 +00001687 API has evolved (the old one is still supported for backward
Werner Lembergf41e71a2001-12-20 21:22:02 +00001688 compatibility).
David Turner0fcb4122001-12-20 13:33:03 +00001689
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001690 The documentation for it is not yet completed, sorry. For now,
1691 you are encouraged to continue using the old API. However, the
1692 ftview demo program in the ft2demos package has already been
1693 updated to use the new caching functions.
David Turner0fcb4122001-12-20 13:33:03 +00001694
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001695 - A new charmap cache is provided too. See `FTC_CMapCache'. This
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001696 is useful to perform character code -> glyph index translations
1697 quickly, without the need for an opened FT_Face.
David Turner0fcb4122001-12-20 13:33:03 +00001698
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001699 - A NEW POSTSCRIPT HINTER module has been added to support native
1700 hints in the following formats: PostScript Type 1, PostScript
1701 CID, and CFF/CEF.
Werner Lembergf41e71a2001-12-20 21:22:02 +00001702
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001703 Please test! Note that the auto-hinter produces better results
1704 for a number of badly-hinted fonts (mostly auto-generated ones)
1705 though.
Werner Lembergf41e71a2001-12-20 21:22:02 +00001706
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001707 - A memory debugger is now part of the standard FreeType sources.
1708 To enable it, define FT_DEBUG_MEMORY in
1709 <freetype/config/ftoption.h>, and recompile the library.
Werner Lembergf41e71a2001-12-20 21:22:02 +00001710
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001711 Additionally, define the _environment_ variable FT_DEBUG_MEMORY
1712 and run any program using FreeType. When the library is exited,
1713 a summary of memory footprints and possible leaks will be
1714 displayed.
Werner Lembergf41e71a2001-12-20 21:22:02 +00001715
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001716 This works transparently with _any_ program that uses FreeType.
1717 However, you will need a lot of memory to use this (allocated
1718 blocks are never released to the heap to detect double deletes
1719 easily).
David Turner0fcb4122001-12-20 13:33:03 +00001720
1721
Werner Lembergf41e71a2001-12-20 21:22:02 +00001722 III. MISCELLANEOUS
David Turner0fcb4122001-12-20 13:33:03 +00001723
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001724 - We are aware of subtle differences between the output of
1725 FreeType versions 1 and 2 when it comes to monochrome
1726 TrueType-hinted glyphs. These are most probably due to small
1727 differences in the monochrome rasterizers and will be worked out
1728 in an upcoming release.
David Turner0fcb4122001-12-20 13:33:03 +00001729
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001730 - We have decided to fork the sources in a `stable' branch, and an
1731 `unstable' one, since FreeType is becoming a critical component
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001732 of many Unix systems.
Werner Lemberg32b53462002-02-01 01:20:11 +00001733
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001734 The next bug-fix releases of the library will be named 2.0.7,
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001735 2.0.8, etc., while the `2.1' branch will contain a version of
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001736 the sources where we will start major reworking of the library's
1737 internals, in order to produce FreeType 2.2.0 (or even 3.0) in a
1738 more distant future.
Werner Lemberg32b53462002-02-01 01:20:11 +00001739
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001740 We also hope that this scheme will allow much more frequent
1741 releases than in the past.
David Turner6096b5a2002-01-07 10:40:48 +00001742
David Turner0fcb4122001-12-20 13:33:03 +00001743
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001744======================================================================
David Turnerafa38542001-10-18 13:22:01 +00001745
Werner Lemberg94168f02006-05-11 07:07:09 +00001746CHANGES BETWEEN 2.0.5 and 2.0.4
David Turner1cd4f852001-10-09 07:32:50 +00001747
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001748 NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER. THIS MODULE
1749 WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1)
David Turner1cd4f852001-10-09 07:32:50 +00001750
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001751 - Fixed a bug that made certain glyphs, like `Cacute', `cacute' and
1752 `lslash' unavailable from Unicode charmaps of Postscript fonts.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001753 This prevented the correct display of Polish text, for example.
David Turner1cd4f852001-10-09 07:32:50 +00001754
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001755 - The kerning table of Type 1 fonts was loaded by FreeType, when its
1756 AFM file was attached to its face, but the
1757 FT_FACE_FLAG_HAS_KERNING bit flags was not set correctly,
1758 preventing FT_Get_Kerning to return meaningful values.
David Turner1cd4f852001-10-09 07:32:50 +00001759
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001760 - Improved SFNT (TrueType & OpenType) charmap support. Slightly
1761 better performance, as well as support for the new formats defined
1762 by the OpenType 1.3 specification (8, 10, and 12)
David Turner1cd4f852001-10-09 07:32:50 +00001763
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001764 - Fixed a serious typo in `src/base/ftcalc.c' which caused invalid
Werner Lemberg80b8d772001-10-10 19:56:42 +00001765 computations in certain rare cases, producing ugly artefacts.
1766
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001767 - The size of the EM square is computed with a more accurate
1768 algorithm for Postscript fonts. The old one caused slight errors
1769 with embedded fonts found in PDF documents.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001770
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001771 - Fixed a bug in the cache manager that prevented normal LRU
1772 behaviour within the cache manager, causing unnecessary reloads
1773 (for FT_Face and FT_Size objects only).
Werner Lemberg80b8d772001-10-10 19:56:42 +00001774
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001775 - Added a new function named `FT_Get_Name_Index' to retrieve the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001776 glyph index of a given glyph name, when found in a face.
David Turner1cd4f852001-10-09 07:32:50 +00001777
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001778 - Added a new function named `FT_Get_Postscript_Name' to retrieve
1779 the `unique' Postscript font name of a given face.
David Turner034a1932001-10-17 13:57:02 +00001780
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001781 - Added a new public header size named FT_SIZES_H (or
1782 <freetype/ftsizes.h>) providing new FT_Size-management functions:
Werner Lembergf41e71a2001-12-20 21:22:02 +00001783 FT_New_Size, FT_Activate_Size, FT_Done_Size.
David Turner034a1932001-10-17 13:57:02 +00001784
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001785 - Fixed a reallocation bug that generated a dangling pointer (and
1786 possibly memory leaks) with Postscript fonts (in
1787 src/psaux/psobjs.c).
David Turner1cd4f852001-10-09 07:32:50 +00001788
Werner Lemberg80b8d772001-10-10 19:56:42 +00001789 - Many fixes for 16-bit correctness.
David Turner1cd4f852001-10-09 07:32:50 +00001790
Werner Lemberg80b8d772001-10-10 19:56:42 +00001791 - Removed many pedantic compiler warnings from the sources.
1792
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001793 - Added an Amiga build directory in `builds/amiga'.
David Turner1cd4f852001-10-09 07:32:50 +00001794
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001795
1796======================================================================
David Turner1cd4f852001-10-09 07:32:50 +00001797
Werner Lemberg94168f02006-05-11 07:07:09 +00001798CHANGES BETWEEN 2.0.4 and 2.0.3
David Turner995ff202001-06-22 08:45:31 +00001799
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001800 - Fixed a rather annoying bug that was introduced in 2.0.3. Namely,
1801 the font transformation set through FT_Set_Transform was applied
1802 twice to auto-hinted glyphs, resulting in incorrectly rotated text
1803 output.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001804
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001805 - Fixed _many_ compiler warnings. FT2 should now compile cleanly
1806 with Visual C++'s most pedantic warning level (/W4). It already
1807 compiled fine with GCC and a few other compilers.
David Turner995ff202001-06-22 08:45:31 +00001808
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001809 - Fixed a bug that prevented the linear advance width of composite
Werner Lemberg80b8d772001-10-10 19:56:42 +00001810 TrueType glyphs to be correctly returned.
David Turner21939452001-10-05 14:23:03 +00001811
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001812 - Fixed the Visual C++ project files located in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001813 `builds/win32/visualc' (previous versions used older names of the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001814 library).
Werner Lemberg80b8d772001-10-10 19:56:42 +00001815
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001816 - Many 32-bit constants have an `L' appended to their value, in
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001817 order to improve the 16-bitness of the code. Someone is actually
1818 trying to use FT2 on an Atari ST machine!
David Turner995ff202001-06-22 08:45:31 +00001819
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001820 - Updated the `builds/detect.mk' file in order to automatically
1821 build FT2 on AIX systems. AIX uses `/usr/sbin/init' instead of
1822 `/sbin/init' and wasn't previously detected as a Unix platform by
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001823 the FreeType build system.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001824
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001825 - Updated the Unix-specific portions of the build system (new
1826 libtool version, etc.).
David Turner995ff202001-06-22 08:45:31 +00001827
Werner Lembergb4142d52007-01-17 12:45:26 +00001828 - The SFNT kerning loader now ensures that the table is sorted
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001829 (since some problem fonts do not meet this requirement).
David Turnerc40f3862001-06-27 12:42:10 +00001830
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001831
1832=======================================================================
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001833
Werner Lemberg94168f02006-05-11 07:07:09 +00001834CHANGES BETWEEN 2.0.3 and 2.0.2
David Turner4312f422001-05-24 15:00:19 +00001835
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001836 I. CHANGES TO THE MODULES / FONT DRIVERS
Werner Lemberg80b8d772001-10-10 19:56:42 +00001837
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001838 - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix
1839 several annoying artefacts, mainly:
Werner Lemberg80b8d772001-10-10 19:56:42 +00001840
Werner Lembergb4142d52007-01-17 12:45:26 +00001841 - Blue zone alignment of horizontal stems wasn't performed
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001842 correctly, resulting in artefacts like the `d' being placed
1843 one pixel below the `b' in some fonts like Time New Roman.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001844
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001845 - Overshoot thresholding wasn't performed correctly, creating
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001846 unpleasant artefacts at large character pixel sizes.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001847
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001848 - Composite glyph loading has been simplified. This gets rid
1849 of various artefacts where the components of a composite
1850 glyphs were not correctly spaced.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001851
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001852 These are the last changes to the current auto-hinting module.
1853 A new hinting sub-system is currently in the work in order to
1854 support native hints in Type 1 / CFF / OpenType fonts, as well
1855 as globally improve rendering.
David Turner4312f422001-05-24 15:00:19 +00001856
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001857 - The PCF driver has been fixed. It reported invalid glyph
1858 dimensions for the fonts available on Solaris.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001859
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001860 - The Type 1, CID and CFF drivers have been modified to fix the
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001861 computation of the EM size.
David Turner4312f422001-05-24 15:00:19 +00001862
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001863 - The Type 1 driver has been fixed to avoid a dangerous bug that
1864 crashed the library with non-conforming fonts (i.e. ones that do
1865 not place the .notdef glyph at position 0).
David Turner4312f422001-05-24 15:00:19 +00001866
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001867 - The TrueType driver had a rather subtle bug (dangling pointer
1868 when loading composite glyphs) that could crash the library in
1869 rare occasions!
David Turner4312f422001-05-24 15:00:19 +00001870
1871
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001872 II. HIGH-LEVEL API CHANGES
Werner Lemberg80b8d772001-10-10 19:56:42 +00001873
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001874 - The error code enumeration values have been changed. An error
1875 value is decomposed in a generic error code, and a module
1876 number. see <freetype/fterrors.h> for details.
David Turner4312f422001-05-24 15:00:19 +00001877
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001878 - A new public header file has been introduced, named
1879 FT_TRIGONOMETRY_H (include/freetype/fttrig.h), providing
1880 trigonometric functions to compute sines, cosines, arctangents,
1881 etc. with 16.16 fixed precision. The implementation is based on
1882 the CORDIC algorithm and is very fast while being sufficiently
1883 accurate.
David Turner4312f422001-05-24 15:00:19 +00001884
1885
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001886 III. INTERNALS
Werner Lemberg80b8d772001-10-10 19:56:42 +00001887
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001888 - Added BeOS-specific files in the old build sub-system. Note
1889 that no changes were required to compile the library with Jam.
David Turner4312f422001-05-24 15:00:19 +00001890
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001891 - The configuration is now capable of automatically detecting
1892 64-bit integers on a set of predefined compilers (GCC, Visual
1893 C++, Borland C++) and will use them by default. This provides a
1894 small performance boost.
David Turner4312f422001-05-24 15:00:19 +00001895
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001896 - A small memory leak that happened when opening 0-sized files
1897 (duh!) have been fixed.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001898
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001899 - Fixed bezier stack depth bug in the routines provided by the
1900 FT_BBOX_H header file. Also fixed similar bugs in the
1901 rasterizers.
David Turner4312f422001-05-24 15:00:19 +00001902
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001903 - The outline bounding box code has been rewritten to use direct
1904 computations, instead of bezier sub-division, to compute the
1905 exact bounding box of glyphs. This is slightly slower but more
1906 accurate.
David Turner4312f422001-05-24 15:00:19 +00001907
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001908 - The build system has been improved and fixed, mainly to support
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001909 `make' on Windows 2000 correctly, avoid problems with `make
1910 distclean' on non Unix systems, etc.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001911
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001912 - Hexadecimal constants have been suffixed with `U' to avoid
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001913 problems with certain compilers on 64-bit platforms.
David Turner4312f422001-05-24 15:00:19 +00001914
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001915 - A new directory named `src/tools' has been created. It contains
David Turner4312f422001-05-24 15:00:19 +00001916 Python scripts and simple unit test programs used to develop the
1917 library.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001918
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001919 - The DocMaker tool has been moved from `docs' to `src/tools' and
David Turner4312f422001-05-24 15:00:19 +00001920 has been updated with the following:
Werner Lemberg80b8d772001-10-10 19:56:42 +00001921
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001922 - Now accepts the `--title=XXXX' or `-t XXXX' option from the
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001923 command line to set the project's name in the generated API
1924 reference.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001925
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001926 - Now accepts the `--output=DIR' or `-o DIR' option from the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001927 command line to set the output directory for all generated
1928 HTML files.
Werner Lemberg80b8d772001-10-10 19:56:42 +00001929
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001930 - Now accepts the `--prefix=XXXX' or `-p XXX' option from the
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001931 command line to set the file prefix to use for all
1932 generated HTML files.
David Turner4312f422001-05-24 15:00:19 +00001933
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001934 - Now generates the current time/data on each generated page
David Turner4312f422001-05-24 15:00:19 +00001935 in order to distinguish between versions.
1936
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001937 DocMaker can be used with other projects now, not only FT2
1938 (e.g. MLib, FTLayout, etc.).
Werner Lemberg80b8d772001-10-10 19:56:42 +00001939
Werner Lemberg5e3614f2003-09-12 19:38:13 +00001940
1941======================================================================
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001942
Werner Lemberg94168f02006-05-11 07:07:09 +00001943CHANGES BETWEEN 2.0.2 and 2.0.1
David Turnerd3c8e062000-12-04 22:53:55 +00001944
Werner Lemberg0bf6e062001-06-22 17:17:47 +00001945 I. CHANGES TO THE MODULES / FONT DRIVERS
David Turnera0f89552001-03-23 12:28:59 +00001946
1947 - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to
Werner Lembergab6d1072001-04-02 21:30:06 +00001948 avoid legal problems with the Apple patents. It seems that we
1949 mistakenly turned this option on in previous releases of the
1950 build.
David Turnera0f89552001-03-23 12:28:59 +00001951
Werner Lembergab6d1072001-04-02 21:30:06 +00001952 Note that if you want to use the bytecode interpreter in order
1953 to get high-quality TrueType rendering, you will need to toggle
1954 by hand the definition of the
1955 TT_CONFIG_OPTION_BYTECODE_INTERPRETER macro in the file
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001956 `include/freetype/config/ftoption.h'.
Werner Lembergab6d1072001-04-02 21:30:06 +00001957
1958 - The CFF driver has been improved by Tom Kacvinsky and Sander van
1959 der Wal:
1960
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001961 * Support for `seac' emulation.
1962 * Support for `dotsection'.
Werner Lembergab6d1072001-04-02 21:30:06 +00001963 * Support for retrieving glyph names through
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001964 `FT_Get_Glyph_Name'.
David Turnera0f89552001-03-23 12:28:59 +00001965
1966 The first two items are necessary to correctly a large number of
Werner Lembergab6d1072001-04-02 21:30:06 +00001967 Type 1 fonts converted to the CFF formats by Adobe Acrobat.
David Turnera0f89552001-03-23 12:28:59 +00001968
Werner Lembergab6d1072001-04-02 21:30:06 +00001969 - The Type 1 driver was also improved by Tom & others:
David Turnera0f89552001-03-23 12:28:59 +00001970
Werner Lembergab6d1072001-04-02 21:30:06 +00001971 * Better EM size computation.
1972 * Better support for synthetic (transformed) fonts.
1973 * The Type 1 driver returns the charstrings corresponding to
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001974 each glyph in the `glyph->control_data' field after a call to
1975 `FT_Load_Glyph' (thanks Ha Shao).
David Turnera0f89552001-03-23 12:28:59 +00001976
Werner Lembergab6d1072001-04-02 21:30:06 +00001977 - Various other bugfixes, including the following:
David Turnera0f89552001-03-23 12:28:59 +00001978
Werner Lembergab6d1072001-04-02 21:30:06 +00001979 * Fixed a nasty memory leak in the Type 1 driver.
1980 * The autohinter and the pcf driver used static writable data
1981 when they shouldn't.
1982 * Many casts were added to make the code more 64-bits safe. It
1983 also now compiles on Windows XP 64-bits without warnings.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00001984 * Some incorrect writable statics were removed in the `autohint'
1985 and `pcf' drivers. FreeType 2 now compiles on Epoc again.
David Turnera0f89552001-03-23 12:28:59 +00001986
1987
1988 II. CHANGES TO THE HIGH-LEVEL API
David Turnera0f89552001-03-23 12:28:59 +00001989
Werner Lembergab6d1072001-04-02 21:30:06 +00001990 - The library header files inclusion scheme has been changed. The
1991 old scheme looked like:
1992
1993 #include <freetype/freetype.h>
1994 #include <freetype/ftglyph.h>
1995 #include <freetype/ftcache.h>
1996 #include <freetype/cache/ftimage.h>
1997
1998 Now you should use:
1999
2000 #include <ft2build.h>
2001 #include FT_FREETYPE_H
2002 #include FT_GLYPH_H
2003 #include FT_CACHE_H
2004 #include FT_CACHE_IMAGE_H
2005
2006 NOTE THAT THE OLD INCLUSION SCHEME WILL STILL WORK WITH THIS
2007 RELEASE. HOWEVER, WE DO NOT GUARANTEE THAT THIS WILL STILL BE
2008 TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1).
2009
2010 The file <ft2build.h> is used to define the header filename
2011 macros. The complete and commented list of macros is available
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002012 in the API reference under the section name `Header File Macros'
Werner Lembergab6d1072001-04-02 21:30:06 +00002013 in Chapter I.
David Turnera0f89552001-03-23 12:28:59 +00002014
David Turnerf876b242001-03-23 18:09:09 +00002015 For more information, see section I of the following document:
David Turnerf876b242001-03-23 18:09:09 +00002016
Werner Lembergab6d1072001-04-02 21:30:06 +00002017 http://www.freetype.org/
2018 freetype2/docs/tutorial/step1.html
David Turnerf876b242001-03-23 18:09:09 +00002019
Werner Lembergab6d1072001-04-02 21:30:06 +00002020 or
David Turnera0f89552001-03-23 12:28:59 +00002021
Werner Lembergab6d1072001-04-02 21:30:06 +00002022 http://freetype.sourceforge.net/
2023 freetype2/docs/tutorial/step1.html
2024
2025 - Many, many comments have been added to the public source file in
2026 order to automatically generate the API Reference through the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002027 `docmaker.py' Python script.
Werner Lembergab6d1072001-04-02 21:30:06 +00002028
2029 The latter has been updated to support the grouping of sections
2030 in chapters and better index sort. See:
2031
2032 http://www.freetype.org/freetype2/docs/reference/ft2-toc.html
David Turnera0f89552001-03-23 12:28:59 +00002033
2034
2035 III. CHANGES TO THE BUILD PROCESS
David Turnerb8f56fa2001-03-20 15:04:30 +00002036
Werner Lembergab6d1072001-04-02 21:30:06 +00002037 - If you are not building FreeType 2 with its own build system
2038 (but with your own Makefiles or project files), you will need to
2039 be aware that the build process has changed a little bit.
David Turnera0f89552001-03-23 12:28:59 +00002040
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002041 You don't need to put the `src' directory in the include path
Werner Lembergab6d1072001-04-02 21:30:06 +00002042 when compiling any FT2 component. Instead, simply put the
2043 component's directory in the current include path.
2044
2045 So, if you were doing something like:
2046
2047 cc -c -Iinclude -Isrc src/base/ftbase.c
2048
2049 change the line to:
2050
2051 cc -c -Iinclude -Isrc/base src/base/ftbase.c
2052
2053 If you were doing something like:
2054
2055 cd src/base
2056 cc -c -I../../include -I.. ftbase.c
2057
2058 change it to:
2059
2060 cd src/base
2061 cc -c -I../../include ftbase.c
2062
2063
2064======================================================================
2065
Werner Lemberg94168f02006-05-11 07:07:09 +00002066CHANGES BETWEEN 2.0.1 and 2.0
Werner Lembergab6d1072001-04-02 21:30:06 +00002067
David Turneraaac8132000-12-01 18:55:22 +00002068 2.0.1 introduces a few changes:
2069
Werner Lembergab6d1072001-04-02 21:30:06 +00002070 - Fixed many bugs related to the support of CFF / OpenType fonts.
2071 These formats are now much better supported though there is
2072 still work planned to deal with charset tables and PDF-embedded
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002073 CFF files that use the old `seac' command.
Werner Lembergab6d1072001-04-02 21:30:06 +00002074
2075 - The library could not be compiled in debug mode with a very
2076 small number of C compilers whose pre-processors didn't
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002077 implement the `##' directive correctly (i.e. per se the ANSI C
Werner Lembergab6d1072001-04-02 21:30:06 +00002078 specification!) An elegant fix was found.
2079
2080 - Added support for the free Borland command-line C++ Builder
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002081 compiler. Use `make setup bcc32'. Also fixed a few source
Werner Lembergab6d1072001-04-02 21:30:06 +00002082 lines that generated new warnings with BCC32.
2083
2084 - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of
Werner Lemberg2e82c932000-12-01 21:56:47 +00002085 a conic Bezier arc.
David Turneraaac8132000-12-01 18:55:22 +00002086
Werner Lembergab6d1072001-04-02 21:30:06 +00002087 - Updated the INSTALL file to add IDE compilation.
David Turneraaac8132000-12-01 18:55:22 +00002088
Werner Lembergab6d1072001-04-02 21:30:06 +00002089 - Other minor bug fixes, from invalid Type 1 style flags to
2090 correct support of synthetic (obliqued) fonts in the
2091 auto-hinter, better support for embedded bitmaps in a SFNT font.
David Turneraaac8132000-12-01 18:55:22 +00002092
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002093 - Fixed some problems with `freetype-config'.
David Turneraaac8132000-12-01 18:55:22 +00002094
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002095 Finally, the `standard' scheme for including FreeType headers is now
Werner Lembergab6d1072001-04-02 21:30:06 +00002096 gradually changing, but this will be explained in a later release
2097 (probably 2.0.2).
David Turneraaac8132000-12-01 18:55:22 +00002098
Werner Lembergab6d1072001-04-02 21:30:06 +00002099 And very special thanks to Tom Kacvinsky and YAMANO-UCHI Hidetoshi
2100 for their contributions!
David Turneraaac8132000-12-01 18:55:22 +00002101
Werner Lembergab6d1072001-04-02 21:30:06 +00002102
2103======================================================================
2104
David Turneraaac8132000-12-01 18:55:22 +00002105CHANGES BETWEEN beta8 and 2.0
David Turnerf9b8dec2000-06-16 19:34:52 +00002106
Werner Lembergab6d1072001-04-02 21:30:06 +00002107 - Changed the default installation path for public headers from
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002108 `include/freetype' to `include/freetype2'.
David Turner27c88272000-11-09 19:10:22 +00002109
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002110 Also added a new `freetype-config' that is automatically generated
Werner Lembergab6d1072001-04-02 21:30:06 +00002111 and installed on Unix and Cygwin systems. The script itself is
2112 used to retrieve the current install path, C compilation flags as
2113 well as linker flags.
David Turner27c88272000-11-09 19:10:22 +00002114
Werner Lembergab6d1072001-04-02 21:30:06 +00002115 - Fixed several small bugs:
David Turner27c88272000-11-09 19:10:22 +00002116
Werner Lembergab6d1072001-04-02 21:30:06 +00002117 * Incorrect max advance width for fixed-pitch Type 1 fonts.
2118 * Incorrect glyph names for certain TrueType fonts.
2119 * The glyph advance was not copied when FT_Glyph_To_Bitmap was
2120 called.
Werner Lembergb4142d52007-01-17 12:45:26 +00002121 * The linearHoriAdvance and linearVertAdvance fields were not
Werner Lembergab6d1072001-04-02 21:30:06 +00002122 correctly returned for glyphs processed by the auto-hinter.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002123 * `type1z' renamed back to `type1'; the old `type1' module has
Werner Lembergab6d1072001-04-02 21:30:06 +00002124 been removed.
David Turner27c88272000-11-09 19:10:22 +00002125
Werner Lembergab6d1072001-04-02 21:30:06 +00002126 - Revamped the build system to make it a lot more generic. This
2127 will allow us to re-use nearly un-modified in lots of other
2128 projects (including FreeType Layout).
David Turner27c88272000-11-09 19:10:22 +00002129
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002130 - Changed `cid' to use `psaux' too.
David Turner27c88272000-11-09 19:10:22 +00002131
Werner Lembergab6d1072001-04-02 21:30:06 +00002132 - Added the cache sub-system. See <freetype/ftcache.h> as well as
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002133 the sources in `src/cache'. Note that it compiles but is still
Werner Lembergab6d1072001-04-02 21:30:06 +00002134 untested for now.
David Turner27c88272000-11-09 19:10:22 +00002135
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002136 - Updated `docs/docmaker.py', a draft API reference is available at
Werner Lembergab6d1072001-04-02 21:30:06 +00002137 http://www.freetype.org/ft2api.html.
Werner Lembergb5084e12000-10-28 17:10:06 +00002138
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002139 - Changed `type1' to use `psaux'.
David Turner046f7a02000-09-15 22:42:06 +00002140
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002141 - Created a new module named `psaux' to hold the Type 1 & Type 2
2142 parsing routines. It should be used by `type1', `cid', and `cff'
Werner Lembergab6d1072001-04-02 21:30:06 +00002143 in the future.
David Turner34f1c2f2000-08-23 22:47:44 +00002144
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002145 - Fixed an important bug in `FT_Glyph_Get_CBox'.
David Turner3b2c50e2000-08-23 21:11:13 +00002146
Werner Lembergab6d1072001-04-02 21:30:06 +00002147 - Fixed some compiler warnings that happened since the TrueType
2148 bytecode decoder was deactivated by default.
David Turnera39acf52000-08-23 02:47:57 +00002149
Werner Lembergab6d1072001-04-02 21:30:06 +00002150 - Fixed two memory leaks:
David Turnera39acf52000-08-23 02:47:57 +00002151
Werner Lembergab6d1072001-04-02 21:30:06 +00002152 * The memory manager (16 bytes) isn't released in
2153 FT_Done_FreeType!
2154 * Using custom input streams, the copy of the original stream was
2155 never released.
David Turnera39acf52000-08-23 02:47:57 +00002156
Werner Lembergab6d1072001-04-02 21:30:06 +00002157 - Fixed the auto-hinter by performing automatic computation of the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002158 `filling direction' of each glyph. This is done through a simple
Werner Lembergab6d1072001-04-02 21:30:06 +00002159 and fast approximation, and seems to work (problems spotted by
2160 Werner though). The Arphic fonts are a lot nicer though there are
2161 still a lot of things to do to handle Asian fonts correctly.
David Turnera39acf52000-08-23 02:47:57 +00002162
David Turnerb1693412000-07-27 21:48:48 +00002163
Werner Lembergab6d1072001-04-02 21:30:06 +00002164======================================================================
Werner Lemberge4b32a52000-10-31 20:42:18 +00002165
David Turnerc5cdf8b2000-07-27 21:40:22 +00002166BETA-8 (RELEASE CANDIDATE) CHANGES
2167
Werner Lembergab6d1072001-04-02 21:30:06 +00002168 - Deactivated the TrueType bytecode interpreter by default.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002169
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002170 - Deactivated the `src/type1' font driver. Now `src/type1z' is used
Werner Lembergab6d1072001-04-02 21:30:06 +00002171 by default.
David Turner5f5b4462000-07-26 19:13:51 +00002172
Werner Lembergab6d1072001-04-02 21:30:06 +00002173 - Updates to the build system. We now compile the library correctly
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002174 under Unix system through `configure' which is automatically
2175 called on the first `make' invocation.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002176
Werner Lembergab6d1072001-04-02 21:30:06 +00002177 - Added the auto-hinting module! Fixing some bugs here and there.
David Turner5fe4c002000-07-26 19:04:08 +00002178
Werner Lembergab6d1072001-04-02 21:30:06 +00002179 - Found some bugs in the composite loader (seac) of the Type1-based
2180 font drivers.
David Turner49bd4f02000-07-12 16:57:37 +00002181
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002182 - Renamed the directory `freetype2/config' to `freetype2/builds' and
Werner Lembergab6d1072001-04-02 21:30:06 +00002183 updated all relevant files.
David Turner1ca6f2d2000-07-08 00:49:43 +00002184
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002185 - Found a memory leak in the `type1' driver.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002186
Werner Lembergab6d1072001-04-02 21:30:06 +00002187 - Incorporated Tom's patches to support flex operators correctly in
2188 OpenType/CFF fonts. Now all I need is to support pure CFF and CEF
2189 fonts to be done with this driver :-)
David Turner9b3d1c72000-07-07 19:47:34 +00002190
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002191 - Added the Windows FNT/FON driver in `src/winfonts'. For now, it
2192 always `simulates' a Unicode charmap, so it shouldn't be
Werner Lembergab6d1072001-04-02 21:30:06 +00002193 considered completed right now.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002194
Werner Lembergab6d1072001-04-02 21:30:06 +00002195 It is there to be more a proof of concept than anything else
2196 anyway. The driver is a single C source file, that compiles to 3
2197 Kb of code.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002198
Werner Lembergab6d1072001-04-02 21:30:06 +00002199 I'm still working on the PCF/BDF drivers, but I'm too lazy to
2200 finish them now.
David Turner9b3d1c72000-07-07 19:47:34 +00002201
David Turnerc06aba22000-06-30 23:38:23 +00002202 - CHANGES TO THE HIGH-LEVEL API
Werner Lemberge4b32a52000-10-31 20:42:18 +00002203
Werner Lembergab6d1072001-04-02 21:30:06 +00002204 * FT_Get_Kerning has a new parameter that allows you to select the
2205 coordinates of the kerning vector (font units, scaled, scaled +
2206 grid-fitted).
2207 * The outline functions are now in <freetype/ftoutln.h> and not
2208 part of <freetype/freetype.h> anymore.
2209 * <freetype/ftmodule.h> now contains declarations for
2210 FT_New_Library, FT_Done_Library, FT_Add_Default_Modules.
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002211 * The so-called convenience functions have moved from `ftoutln.c'
2212 to `ftglyph.c', and are thus available with this optional
Werner Lembergab6d1072001-04-02 21:30:06 +00002213 component of the library. They are declared in
2214 <freetype/ftglyph.h> now.
2215 * Anti-aliased rendering is now the default for FT_Render_Glyph
David Turnerc06aba22000-06-30 23:38:23 +00002216 (i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
2217 To generate a monochrome bitmap, use ft_render_mode_mono, or the
Werner Lembergab6d1072001-04-02 21:30:06 +00002218 FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char.
David Turnerc06aba22000-06-30 23:38:23 +00002219 FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
Werner Lembergab6d1072001-04-02 21:30:06 +00002220 * <freetype/freetype.h> now include <freetype/config/ftconfig.h>,
David Turnerc06aba22000-06-30 23:38:23 +00002221 solving a few headaches :-)
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002222 * The type FT_GlyphSlotRec has now a `library' field.
David Turnerc06aba22000-06-30 23:38:23 +00002223
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002224 - CHANGES TO THE `ftglyph.h' API
Werner Lemberge4b32a52000-10-31 20:42:18 +00002225
Werner Lembergab6d1072001-04-02 21:30:06 +00002226 This API has been severely modified in order to make it simpler,
2227 clearer, and more efficient. It certainly now looks like a real
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002228 `glyph factory' object, and allows client applications to manage
Werner Lembergab6d1072001-04-02 21:30:06 +00002229 (i.e. transform, bbox and render) glyph images without ever
2230 knowing their original format.
David Turnerc06aba22000-06-30 23:38:23 +00002231
Werner Lembergab6d1072001-04-02 21:30:06 +00002232 - Added support for CID-keyed fonts to the CFF driver. Maybe
2233 support for pure CFF + CEF fonts should come in?
David Turner9d636b62000-06-27 23:32:27 +00002234
Werner Lembergab6d1072001-04-02 21:30:06 +00002235 - Cleaned up source code in order to avoid two functions with the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002236 same name. Also changed the names of the files in `type1z' from
2237 `t1XXXX' to `z1XXXX' in order to avoid any conflicts.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002238
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002239 `make multi' now works well :-)
Werner Lemberge4b32a52000-10-31 20:42:18 +00002240
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002241 Also removed the use of `cidafm' for now, even if the source files
Werner Lembergab6d1072001-04-02 21:30:06 +00002242 are still there. This functionality will certainly go into a
2243 specific module.
David Turnerc06aba22000-06-30 23:38:23 +00002244
Werner Lemberge4b32a52000-10-31 20:42:18 +00002245 - ADDED SUPPORT FOR THE AUTO-HINTER
2246
Werner Lembergab6d1072001-04-02 21:30:06 +00002247 It works :-) I have a demo program which simply is a copy of
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002248 `ftview' that does a `FT_Add_Module(library,
Werner Lembergab6d1072001-04-02 21:30:06 +00002249 &autohinter_module_class)' after library initialization, and Type
2250 1 & OpenType/CFF fonts are now hinted.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002251
Werner Lembergab6d1072001-04-02 21:30:06 +00002252 CID fonts are not hinted, as they include no charmap and the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002253 auto-hinter doesn't include `generic' global metrics computations
Werner Lembergab6d1072001-04-02 21:30:06 +00002254 yet.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002255
Werner Lembergab6d1072001-04-02 21:30:06 +00002256 Now, I need to release this thing to the FreeType 2 source.
David Turner9d636b62000-06-27 23:32:27 +00002257
2258 - CHANGES TO THE RENDERER MODULES
Werner Lemberge4b32a52000-10-31 20:42:18 +00002259
Werner Lembergab6d1072001-04-02 21:30:06 +00002260 The monochrome and smooth renderers are now in two distinct
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002261 directories, namely `src/raster1' and `src/smooth'. Note that the
2262 old `src/renderer' is now gone.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002263
Werner Lembergab6d1072001-04-02 21:30:06 +00002264 I ditched the 5-gray-levels renderers. Basically, it involved a
2265 simple #define toggle in 'src/raster1/ftraster.c'.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002266
Werner Lembergab6d1072001-04-02 21:30:06 +00002267 FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now
2268 select the best renderer available, depending on render mode. If
2269 the current renderer for a given glyph image format isn't capable
2270 of supporting the render mode, another one will be found in the
2271 library's list. This means that client applications do not need
2272 to switch or set the renderers themselves (as in the latest
2273 change), they'll get what they want automatically. At last.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002274
Werner Lembergab6d1072001-04-02 21:30:06 +00002275 Changed the demo programs accordingly.
David Turner9d636b62000-06-27 23:32:27 +00002276
David Turnerf0df85b2000-06-22 00:17:42 +00002277 - MAJOR INTERNAL REDESIGN:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002278
Werner Lembergab6d1072001-04-02 21:30:06 +00002279 A lot of internal modifications have been performed lately on the
David Turnerf0df85b2000-06-22 00:17:42 +00002280 source in order to provide the following enhancements:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002281
Werner Lembergab6d1072001-04-02 21:30:06 +00002282 * More generic module support:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002283
Werner Lembergab6d1072001-04-02 21:30:06 +00002284 The FT_Module type is now defined to represent a handle to a
2285 given module. The file <freetype/ftmodule.h> contains the
2286 FT_Module_Class definition, as well as the module-loading public
2287 API.
David Turnerf0df85b2000-06-22 00:17:42 +00002288
Werner Lembergab6d1072001-04-02 21:30:06 +00002289 The FT_Driver type is still defined, and still represents a
2290 pointer to a font driver. Note that FT_Add_Driver is replaced
2291 by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc.
2292
2293 * Support for generic glyph image types:
2294
2295 The FT_Renderer type is a pointer to a module used to perform
2296 various operations on glyph image.
2297
2298 Each renderer is capable of handling images in a single format
2299 (e.g. ft_glyph_format_outline). Its functions are used to:
2300
2301 - transform an glyph image
2302 - render a glyph image into a bitmap
2303 - return the control box (dimensions) of a given glyph image
2304
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002305 The scan converters `ftraster.c' and `ftgrays.c' have been moved
2306 to the new directory `src/renderer', and are used to provide two
Werner Lembergab6d1072001-04-02 21:30:06 +00002307 default renderer modules.
2308
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002309 One corresponds to the `standard' scan-converter, the other to
2310 the `smooth' one.
Werner Lembergab6d1072001-04-02 21:30:06 +00002311
2312 he current renderer can be set through the new function
2313 FT_Set_Renderer.
2314
2315 The old raster-related function FT_Set_Raster, FT_Get_Raster and
2316 FT_Set_Raster_Mode have now disappeared, in favor of the new:
2317
2318 FT_Get_Renderer
2319 FT_Set_Renderer
2320
2321 See the file <freetype/ftrender.h> for more details.
2322
2323 These changes were necessary to properly support different
2324 scalable formats in the future, like bi-color glyphs, etc.
2325
2326 * Glyph loader object:
2327
2328 A new internal object, called a 'glyph loader' has been
2329 introduced in the base layer. It is used by all scalable format
2330 font drivers to load glyphs and composites.
2331
2332 This object has been created to reduce the code size of each
2333 driver, as each one of them basically re-implemented its
2334 functionality.
2335
2336 See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for
2337 more information.
2338
2339 * FT_GlyphSlot has new fields:
2340
2341 In order to support extended features (see below), the
2342 FT_GlyphSlot structure has a few new fields:
2343
2344 linearHoriAdvance:
2345
2346 This field gives the linearly scaled (i.e. scaled but
2347 unhinted) advance width for the glyph, expressed as a 16.16
2348 fixed pixel value. This is useful to perform WYSIWYG text.
2349
2350 linearVertAdvance:
2351 This field gives the linearly scaled advance height for the
2352 glyph (relevant in vertical glyph layouts only). This is
2353 useful to perform WYSIWYG text.
2354
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002355 Note that the two above field replace the removed `metrics2'
Werner Lembergab6d1072001-04-02 21:30:06 +00002356 field in the glyph slot.
2357
2358 advance:
2359 This field is a vector that gives the transformed advance for
2360 the glyph. By default, it corresponds to the advance width,
2361 unless FT_LOAD_VERTICAL_LAYOUT was specified when calling
2362 FT_Load_Glyph or FT_Load_Char.
2363
2364 bitmap_left:
2365 This field gives the distance in integer pixels from the
2366 current pen position to the left-most pixel of a glyph image
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002367 IF IT IS A BITMAP. It is only valid when the `format' field
2368 is set to `ft_glyph_format_bitmap', for example, after calling
Werner Lembergab6d1072001-04-02 21:30:06 +00002369 the new function FT_Render_Glyph.
2370
2371 bitmap_top:
2372 This field gives the distance in integer pixels from the
2373 current pen position (located on the baseline) to the top-most
2374 pixel of the glyph image IF IT IS A BITMAP. Positive values
2375 correspond to upwards Y.
2376
2377 loader:
2378 This is a new private field for the glyph slot. Client
2379 applications should not touch it.
David Turnerf0df85b2000-06-22 00:17:42 +00002380
2381
Werner Lembergab6d1072001-04-02 21:30:06 +00002382 * Support for transforms and direct rendering in FT_Load_Glyph:
David Turnerf0df85b2000-06-22 00:17:42 +00002383
Werner Lembergab6d1072001-04-02 21:30:06 +00002384 Most of the functionality found in <freetype/ftglyph.h> has been
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002385 moved to the core library. Hence, the following:
Werner Lemberge4b32a52000-10-31 20:42:18 +00002386
Werner Lembergab6d1072001-04-02 21:30:06 +00002387 - A transform can be specified for a face through
2388 FT_Set_Transform. this transform is applied by FT_Load_Glyph
2389 to scalable glyph images (i.e. NOT TO BITMAPS) before the
2390 function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM
2391 was set in the load flags.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002392
Werner Lembergab6d1072001-04-02 21:30:06 +00002393 - Once a glyph image has been loaded, it can be directly
2394 converted to a bitmap by using the new FT_Render_Glyph
2395 function. Note that this function takes the glyph image from
2396 the glyph slot, and converts it to a bitmap whose properties
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002397 are returned in `face.glyph.bitmap', `face.glyph.bitmap_left'
2398 and `face.glyph.bitmap_top'. The original native image might
Werner Lembergab6d1072001-04-02 21:30:06 +00002399 be lost after the conversion.
2400
2401 - When using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph
2402 and FT_Load_Char functions will call FT_Render_Glyph
2403 automatically when needed.
2404
2405 - Reformatted all modules source code in order to get rid of the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002406 basic data types redifinitions (i.e. `TT_Int' instead of `FT_Int',
2407 `T1_Fixed' instead of `FT_Fixed'). Hence the format-specific
2408 prefixes like `TT_', `T1_', `T2_' and `CID_' are only used for
Werner Lembergab6d1072001-04-02 21:30:06 +00002409 relevant structures.
David Turnerf0df85b2000-06-22 00:17:42 +00002410
2411
Werner Lembergab6d1072001-04-02 21:30:06 +00002412======================================================================
Werner Lemberge4b32a52000-10-31 20:42:18 +00002413
David Turnerf9b8dec2000-06-16 19:34:52 +00002414OLD CHANGES FOR BETA 7
David Turner3475e7f2000-05-17 20:56:01 +00002415
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002416 - bug-fixed the OpenType/CFF parser. It now loads and displays my
Werner Lembergab6d1072001-04-02 21:30:06 +00002417 two fonts nicely, but I'm pretty certain that more testing is
2418 needed :-)
Werner Lemberge4b32a52000-10-31 20:42:18 +00002419
David Turner2b9be992000-06-07 23:41:17 +00002420 - fixed the crummy Type 1 hinter, it now handles accented characters
Werner Lembergab6d1072001-04-02 21:30:06 +00002421 correctly (well, the accent is not always well placed, but that's
David Turner2b9be992000-06-07 23:41:17 +00002422 another problem..)
2423
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002424 - added the CID-keyed Type 1 driver in `src/cid'. Works pretty well
Werner Lembergab6d1072001-04-02 21:30:06 +00002425 for only 13 Kb of code ;-) Doesn't read AFM files though, nor the
2426 really useful CMAP files..
David Turner04aa8002000-06-01 03:27:48 +00002427
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002428 - fixed two bugs in the smooth renderer (src/base/ftgrays.c).
2429 Thanks to Boris Letocha for spotting them and providing a fix.
David Turner04aa8002000-06-01 03:27:48 +00002430
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002431 - fixed potential `divide by zero' bugs in ftcalc.c.
David Turner4f99c3c2000-05-29 20:55:13 +00002432
Werner Lembergab6d1072001-04-02 21:30:06 +00002433 - added source code for the OpenType/CFF driver (still incomplete
2434 though..)
David Turner4f99c3c2000-05-29 20:55:13 +00002435
Werner Lembergab6d1072001-04-02 21:30:06 +00002436 - modified the SFNT driver slightly to perform more robust header
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002437 checks in TT_Load_SFNT_Header. This prevents certain font files
Werner Lembergab6d1072001-04-02 21:30:06 +00002438 (e.g. some Type 1 Multiple Masters) from being incorrectly
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002439 `recognized' as TrueType font files..
David Turner4f99c3c2000-05-29 20:55:13 +00002440
Werner Lembergab6d1072001-04-02 21:30:06 +00002441 - moved a lot of stuff from the TrueType driver to the SFNT module,
2442 this allows greater code re-use between font drivers
2443 (e.g. TrueType, OpenType, Compact-TrueType, etc..)
David Turner2e421312000-05-26 22:13:17 +00002444
2445 - added a tiny segment cache to the SFNT Charmap 4 decoder, in order
2446 to minimally speed it up..
2447
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002448 - added support for Multiple Master fonts in `type1z'. There is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002449 also a new file named <freetype/ftmm.h> which defines functions to
David Turner11187202000-05-26 17:13:23 +00002450 manage them from client applications.
Werner Lemberge4b32a52000-10-31 20:42:18 +00002451
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002452 The new file `src/base/ftmm.c' is also optional to the engine..
David Turner11187202000-05-26 17:13:23 +00002453
Werner Lembergab6d1072001-04-02 21:30:06 +00002454 - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) +
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002455 small bug fixes in FT_Load_Glyph, the `type1' driver, etc..
David Turner11187202000-05-26 17:13:23 +00002456
David Turnerf5dcdd52000-05-23 22:16:27 +00002457 - a minor fix to the Type 1 driver to let them apply the font matrix
2458 correctly (used for many oblique fonts..)
2459
David Turner51179f02000-05-18 16:18:05 +00002460 - some fixes for 64-bit systems (mainly changing some FT_TRACE calls
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002461 to use %p instead of %lx). Thanks to Karl Robillard.
David Turner51179f02000-05-18 16:18:05 +00002462
Werner Lembergab6d1072001-04-02 21:30:06 +00002463 - fixed some bugs in the sbit loader (src/base/sfnt/ttsbit.c) +
2464 added a new flag, FT_LOAD_CROP_BITMAP to query that bitmaps be
2465 cropped when loaded from a file (maybe I should move the bitmap
2466 cropper to the base layer ??).
David Turner109fcf62000-05-17 23:35:37 +00002467
Werner Lembergab6d1072001-04-02 21:30:06 +00002468 - changed the default number of gray levels of the smooth renderer
2469 to 256 (instead of the previous 128). Of course, the human eye
2470 can't see any difference ;-)
David Turner3475e7f2000-05-17 20:56:01 +00002471
Werner Lembergab6d1072001-04-02 21:30:06 +00002472 - removed TT_MAX_SUBGLYPHS, there is no static limit on the number
2473 of subglyphs in a TrueType font now..
David Turner3475e7f2000-05-17 20:56:01 +00002474
Werner Lembergab6d1072001-04-02 21:30:06 +00002475
2476======================================================================
2477
David Turner3475e7f2000-05-17 20:56:01 +00002478OLD CHANGES 16 May 2000
David Turnerefce08d2000-05-11 18:23:52 +00002479
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002480 - tagged `BETA-6' in the CVS tree. This one is a serious release
Werner Lembergab6d1072001-04-02 21:30:06 +00002481 candidate even though it doesn't incorporate the auto-hinter yet..
David Turner968f0c32000-05-16 23:26:01 +00002482
2483 - various obsolete files were removed, and copyright header updated
2484
Werner Lembergab6d1072001-04-02 21:30:06 +00002485 - finally updated the standard raster to fix the monochrome
2486 rendering bug + re-enable support for 5-gray levels anti-aliasing
2487 (suck, suck..)
David Turner968f0c32000-05-16 23:26:01 +00002488
2489 - created new header files, and modified sources accordingly:
David Turnere49ab252000-05-16 23:44:38 +00002490
Werner Lembergab6d1072001-04-02 21:30:06 +00002491 <freetype/fttypes.h>
2492 - simple FreeType types, without the API
2493 <freetype/internal/ftmemory.h>
2494 - definition of memory-management macros
David Turner968f0c32000-05-16 23:26:01 +00002495
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002496 - added the `DSIG' (OpenType Digital Signature) tag to
Werner Lembergab6d1072001-04-02 21:30:06 +00002497 <freetype/tttags.h>
David Turner968f0c32000-05-16 23:26:01 +00002498
Werner Lembergab6d1072001-04-02 21:30:06 +00002499 - light update/cleaning of the build system + changes to the sources
2500 in order to get rid of _all_ compiler warnings with three
2501 compilers, i.e:
David Turnerc30aea92000-05-12 15:01:18 +00002502
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002503 gcc with `-ansi -pedantic -Wall -W', Visual C++ with `/W3 /WX' and
Werner Lembergab6d1072001-04-02 21:30:06 +00002504 LCC
David Turnerc30aea92000-05-12 15:01:18 +00002505
Werner Lembergab6d1072001-04-02 21:30:06 +00002506 IMPORTANT NOTE FOR WIN32-LCC USERS:
2507 |
2508 | It seems the C pre-processor that comes with LCC is broken, it
2509 | doesn't recognize the ANSI standard directives # and ##
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002510 | correctly when one of the argument is a macro. Also,
2511 | something like:
Werner Lembergab6d1072001-04-02 21:30:06 +00002512 |
2513 | #define F(x) print##x
2514 |
2515 | F(("hello"))
2516 |
2517 | will get incorrectly translated to:
2518 |
2519 | print "hello")
2520 |
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002521 | by its pre-processor. For this reason, you simply cannot build
Werner Lembergab6d1072001-04-02 21:30:06 +00002522 | FreeType 2 in debug mode with this compiler..
David Turnerc30aea92000-05-12 15:01:18 +00002523
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002524 - yet another massive grunt work. I've changed the definition of
2525 the EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These
2526 now take an argument, which is the function's return value type.
David Turnere49ab252000-05-16 23:44:38 +00002527
Werner Lembergab6d1072001-04-02 21:30:06 +00002528 This is necessary to compile FreeType as a DLL on Windows and
2529 OS/2. Depending on the compiler used, a compiler-specific keyword
2530 like __export or __system must be placed before (VisualC++) or
2531 after (BorlandC++) the type..
David Turnere49ab252000-05-16 23:44:38 +00002532
David Turnerbfe2f982000-05-12 12:17:15 +00002533 Of course, this needed a lot of changes throughout the source code
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002534 to make it compile again... All cleaned up now, apparently..
David Turnerbfe2f982000-05-12 12:17:15 +00002535
Werner Lembergab6d1072001-04-02 21:30:06 +00002536 Note also that there is a new EXPORT_VAR macro defined to allow
2537 the _declaration_ of an exportable public (constant)
2538 variable. This is the case of the raster interfaces (see
2539 ftraster.h and ftgrays.h), as well as each module's interface (see
2540 sfdriver.h, psdriver.h, etc..)
David Turnerbfe2f982000-05-12 12:17:15 +00002541
Werner Lembergab6d1072001-04-02 21:30:06 +00002542 - new feature: it is now possible to pass extra parameters to font
2543 drivers when creating a new face object. For now,
2544 this capability is unused. It could however prove to
2545 be useful in a near future..
David Turnerbfe2f982000-05-12 12:17:15 +00002546
Werner Lembergab6d1072001-04-02 21:30:06 +00002547 the FT_Open_Args structure was changes, as well as the internal
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002548 driver interface (the specific `init_face' module function has
Werner Lembergab6d1072001-04-02 21:30:06 +00002549 now a different signature).
David Turnerbfe2f982000-05-12 12:17:15 +00002550
2551 - updated the tutorial (not finished though).
Werner Lembergab6d1072001-04-02 21:30:06 +00002552
David Turnerc30aea92000-05-12 15:01:18 +00002553 - updated the top-level BUILD document
David Turnerbfe2f982000-05-12 12:17:15 +00002554
Werner Lembergab6d1072001-04-02 21:30:06 +00002555 - fixed a potential memory leak that could occur when loading
2556 embedded bitmaps.
David Turnerc60c61c2000-05-12 15:26:58 +00002557
Werner Lembergab6d1072001-04-02 21:30:06 +00002558 - added the declaration of FT_New_Memory_Face in
2559 <freetype/freetype.h>, as it was missing from the public header
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002560 (the implementation was already in `ftobjs.c').
David Turnerbfe2f982000-05-12 12:17:15 +00002561
Werner Lembergab6d1072001-04-02 21:30:06 +00002562 - the file <freetype/fterrors.h> has been seriously updated in order
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002563 to allow the automatic generation of error message tables. See
2564 the comments within it for more information.
David Turnerbfe2f982000-05-12 12:17:15 +00002565
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002566 - major directory hierarchy re-organisation. This was done for two
Werner Lembergab6d1072001-04-02 21:30:06 +00002567 things:
David Turnere49ab252000-05-16 23:44:38 +00002568
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002569 * first, to ease the `manual' compilation of the library by
Werner Lembergab6d1072001-04-02 21:30:06 +00002570 requiring at lot less include paths :-)
David Turnerbfe2f982000-05-12 12:17:15 +00002571
Werner Lembergab6d1072001-04-02 21:30:06 +00002572 * second, to allow external programs to effectively access
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002573 internal data fields. For example, this can be extremely
Werner Lembergab6d1072001-04-02 21:30:06 +00002574 useful if someone wants to write a font producer or a font
2575 manager on top of FreeType.
David Turnera9c251c2000-05-11 18:36:19 +00002576
Werner Lembergab6d1072001-04-02 21:30:06 +00002577 Basically, you should now use the 'freetype/' prefix for header
2578 inclusion, as in:
David Turnere49ab252000-05-16 23:44:38 +00002579
David Turnera9c251c2000-05-11 18:36:19 +00002580 #include <freetype/freetype.h>
2581 #include <freetype/ftglyph.h>
2582
2583 Some new include sub-directories are available:
David Turnere49ab252000-05-16 23:44:38 +00002584
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002585 a. the `freetype/config' directory, contains two files used to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002586 configure the build of the library. Client applications
2587 should not need to look at these normally, but they can if
2588 they want.
David Turnere49ab252000-05-16 23:44:38 +00002589
David Turnera9c251c2000-05-11 18:36:19 +00002590 #include <freetype/config/ftoption.h>
2591 #include <freetype/config/ftconfig.h>
David Turnere49ab252000-05-16 23:44:38 +00002592
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002593 b. the `freetype/internal' directory, contains header files that
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002594 describes library internals. These are the header files that
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002595 were previously found in the `src/base' and `src/shared'
Werner Lembergab6d1072001-04-02 21:30:06 +00002596 directories.
David Turnera9c251c2000-05-11 18:36:19 +00002597
2598
Werner Lembergab6d1072001-04-02 21:30:06 +00002599 As usual, the build system and the demos have been updated to
2600 reflect the change..
David Turnere49ab252000-05-16 23:44:38 +00002601
David Turnera9c251c2000-05-11 18:36:19 +00002602 Here's a layout of the new directory hierarchy:
David Turnere49ab252000-05-16 23:44:38 +00002603
Werner Lemberg89df58f2002-06-14 08:09:25 +00002604 TOP_DIR
David Turnera9c251c2000-05-11 18:36:19 +00002605 include/
2606 freetype/
2607 freetype.h
2608 ...
2609 config/
2610 ftoption.h
2611 ftconfig.h
2612 ftmodule.h
David Turnere49ab252000-05-16 23:44:38 +00002613
David Turnera9c251c2000-05-11 18:36:19 +00002614 internal/
2615 ftobjs.h
2616 ftstream.h
2617 ftcalc.h
2618 ...
David Turnere49ab252000-05-16 23:44:38 +00002619
David Turnera9c251c2000-05-11 18:36:19 +00002620 src/
2621 base/
2622 ...
David Turnere49ab252000-05-16 23:44:38 +00002623
David Turnera9c251c2000-05-11 18:36:19 +00002624 sfnt/
2625 psnames/
2626 truetype/
2627 type1/
2628 type1z/
2629
2630
Werner Lembergab6d1072001-04-02 21:30:06 +00002631 Compiling a module is now much easier, for example, the following
Werner Lemberg89df58f2002-06-14 08:09:25 +00002632 should work when in the TOP_DIR directory on an ANSI build:
David Turnere49ab252000-05-16 23:44:38 +00002633
David Turnera9c251c2000-05-11 18:36:19 +00002634 gcc -c -I./include -I./src/base src/base/ftbase.c
2635 gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
2636 etc..
2637
2638 (of course, using -Iconfig/<system> if you provide system-specific
2639 configuration files).
David Turnerefce08d2000-05-11 18:23:52 +00002640
Werner Lembergab6d1072001-04-02 21:30:06 +00002641 - updated the structure of FT_Outline_Funcs in order to allow direct
2642 coordinate scaling within the outline decomposition routine (this
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002643 is important for virtual `on' points with TrueType outlines) +
Werner Lembergab6d1072001-04-02 21:30:06 +00002644 updates to the rasters to support this..
David Turnerefce08d2000-05-11 18:23:52 +00002645
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002646 - updated the OS/2 table loading code in `src/sfnt/ttload.c' in
Werner Lembergab6d1072001-04-02 21:30:06 +00002647 order to support version 2 of the table (see OpenType 1.2 spec)
David Turnerefce08d2000-05-11 18:23:52 +00002648
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002649 - created `include/tttables.h' and `include/t1tables.h' to allow
Werner Lembergab6d1072001-04-02 21:30:06 +00002650 client applications to access some of the SFNT and T1 tables of a
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002651 face with a procedural interface (see `FT_Get_Sfnt_Table') +
Werner Lembergab6d1072001-04-02 21:30:06 +00002652 updates to internal source files to reflect the change..
David Turnerefce08d2000-05-11 18:23:52 +00002653
Werner Lembergab6d1072001-04-02 21:30:06 +00002654 - some cleanups in the source code to get rid of warnings when
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002655 compiling with the `-Wall -W -ansi -pedantic' options in gcc.
David Turnerefce08d2000-05-11 18:23:52 +00002656
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002657 - debugged and moved the smooth renderer to `src/base/ftgrays.c' and
2658 its header to `include/ftgrays.h'
David Turnerefce08d2000-05-11 18:23:52 +00002659
Werner Lembergab6d1072001-04-02 21:30:06 +00002660 - updated TT_MAX_SUBGLYPHS to 96 as some CJK fonts have composites
2661 with up to 80 sub-glyphs !! Thanks to Werner
David Turnerefce08d2000-05-11 18:23:52 +00002662
Werner Lembergab6d1072001-04-02 21:30:06 +00002663
2664======================================================================
2665
David Turnerefce08d2000-05-11 18:23:52 +00002666OLD CHANGES - 14-apr-2000
David Turner77054f22000-04-14 20:49:52 +00002667
Werner Lembergab6d1072001-04-02 21:30:06 +00002668 - fixed a bug in the TrueType glyph loader that prevented the
2669 correct loading of some CJK glyphs in mingli.ttf
David Turnere49ab252000-05-16 23:44:38 +00002670
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002671 - improved the standard Type 1 hinter in `src/type1'
David Turnere49ab252000-05-16 23:44:38 +00002672
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002673 - fixed two bugs in the experimental Type 1 driver in `src/type1z'
David Turner77054f22000-04-14 20:49:52 +00002674 to handle the new XFree86 4.0 fonts (and a few other ones..)
2675
Werner Lembergab6d1072001-04-02 21:30:06 +00002676 - the smooth renderer is now complete and supports sub-banding to
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002677 render large glyphs at high speed. However, it is still located
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002678 in `demos/src/ftgrays.c' and should move to the library itself in
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002679 the next beta. NOTE: The smooth renderer doesn't compile in
David Turner77054f22000-04-14 20:49:52 +00002680 stand-alone mode anymore, but this should be fixed RSN..
David Turnere49ab252000-05-16 23:44:38 +00002681
Werner Lembergab6d1072001-04-02 21:30:06 +00002682 - introduced convenience functions to more easily deal with glyph
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002683 images, see `include/ftglyph.h' for more details, as well as the
2684 new demo program named `demos/src/ftstring.c' that demonstrates
David Turner77054f22000-04-14 20:49:52 +00002685 its use
2686
Werner Lembergab6d1072001-04-02 21:30:06 +00002687 - implemented FT_LOAD_NO_RECURSE in both the TrueType and Type 1
2688 drivers (this is required by the auto-hinter to improve its
2689 results).
David Turner77054f22000-04-14 20:49:52 +00002690
Werner Lembergab6d1072001-04-02 21:30:06 +00002691 - changed the raster interface, in order to allow client
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002692 applications to provide their own span-drawing callbacks.
2693 However, only the smooth renderer supports this. See
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002694 `FT_Raster_Params' in the file `include/ftimage.h'.
David Turner77054f22000-04-14 20:49:52 +00002695
Werner Lembergab6d1072001-04-02 21:30:06 +00002696 - fixed a small bug in FT_MulFix that caused incorrect transform
2697 computation!
David Turner77054f22000-04-14 20:49:52 +00002698
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002699 - Note: The tutorial is out-of-date.
David Turner77054f22000-04-14 20:49:52 +00002700
Werner Lembergab6d1072001-04-02 21:30:06 +00002701
2702======================================================================
2703
David Turner77054f22000-04-14 20:49:52 +00002704OLD CHANGES - 12-mar-2000
David Turnerc3c7e7f2000-03-13 14:19:31 +00002705
Werner Lembergab6d1072001-04-02 21:30:06 +00002706 - changed the layout of configuration files : now, all ANSI
2707 configuration files are located in
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002708 `freetype2/config'. System-specific over-rides can be placed in
2709 `freetype2/config/<system>'.
David Turnere49ab252000-05-16 23:44:38 +00002710
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002711 - moved all configuration macros to `config/ftoption.h'
David Turnere49ab252000-05-16 23:44:38 +00002712
David Turnerc3c7e7f2000-03-13 14:19:31 +00002713 - improvements in the Type 1 driver with AFM support
David Turnere49ab252000-05-16 23:44:38 +00002714
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002715 - changed the fields in the FT_Outline structure : the old `flags'
2716 array is re-named `tags', while all ancient flags are encoded into
2717 a single unsigned int named `flags'.
David Turnerc3c7e7f2000-03-13 14:19:31 +00002718
Werner Lembergab6d1072001-04-02 21:30:06 +00002719 - introduced new flags in FT_Outline.flags (see
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002720 ft_outline_.... enums in `ftimage.h').
David Turnerc3c7e7f2000-03-13 14:19:31 +00002721
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002722 - changed outline functions to `FT_Outline_<action>' syntax
David Turnerc3c7e7f2000-03-13 14:19:31 +00002723
2724 - added a smooth anti-alias renderer to the demonstration programs
Werner Lembergab6d1072001-04-02 21:30:06 +00002725
David Turnerc3c7e7f2000-03-13 14:19:31 +00002726 - added Mac graphics driver (thanks Just)
David Turnere49ab252000-05-16 23:44:38 +00002727
Werner Lembergab6d1072001-04-02 21:30:06 +00002728 - FT_Open_Face changed in order to received a pointer to a
2729 FT_Open_Args descriptor..
David Turnere49ab252000-05-16 23:44:38 +00002730
Werner Lembergab6d1072001-04-02 21:30:06 +00002731 - various cleanups, a few more API functions implemented (see
2732 FT_Attach_File)
David Turnerc3c7e7f2000-03-13 14:19:31 +00002733
2734 - updated some docs
2735
Werner Lembergab6d1072001-04-02 21:30:06 +00002736
2737======================================================================
2738
David Turnerc3c7e7f2000-03-13 14:19:31 +00002739OLD CHANGES - 22-feb-2000
David Turner58c10b52000-02-22 14:31:42 +00002740
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002741 - introduced the `psnames' module. It is used to:
David Turner58c10b52000-02-22 14:31:42 +00002742
Werner Lembergab6d1072001-04-02 21:30:06 +00002743 o convert a Postscript glyph name into the equivalent Unicode
Werner Lembergb4142d52007-01-17 12:45:26 +00002744 character code (used by the Type 1 driver(s) to synthesize on
Werner Lembergab6d1072001-04-02 21:30:06 +00002745 the fly a Unicode charmap).
David Turner58c10b52000-02-22 14:31:42 +00002746
Werner Lembergab6d1072001-04-02 21:30:06 +00002747 o provide an interface to retrieve the Postscript names of the
2748 Macintosh, Adobe Standard & Adobe Expert character codes.
2749 (the Macintosh names are used by the SFNT-module postscript
2750 names support routines, while the other two tables are used by
2751 the Type 1 driver(s)).
David Turner58c10b52000-02-22 14:31:42 +00002752
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002753 - introduced the `type1z' alternate Type 1 driver. This is a (still
Werner Lembergab6d1072001-04-02 21:30:06 +00002754 experimental) driver for the Type 1 format that will ultimately
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002755 replace the one in `src/type1'. It uses pattern matching to load
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002756 data from the font, instead of a finite state analyzer. It works
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002757 much better than the `old' driver with `broken' fonts. It is also
David Turner58c10b52000-02-22 14:31:42 +00002758 much smaller (under 15 Kb).
2759
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002760 - the Type 1 drivers (both in `src/type1' and `src/type1z') are
Werner Lembergab6d1072001-04-02 21:30:06 +00002761 nearly complete. They both provide automatic Unicode charmap
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002762 synthesis through the `psnames' module. No re-encoding vector is
Werner Lembergab6d1072001-04-02 21:30:06 +00002763 needed. (note that they still leak memory due to some code
David Turner58c10b52000-02-22 14:31:42 +00002764 missing, and I'm getting lazy).
2765
Werner Lembergab6d1072001-04-02 21:30:06 +00002766 Trivial AFM support has been added to read kerning information but
2767 wasn't exactly tested as it should ;-)
David Turner58c10b52000-02-22 14:31:42 +00002768
Werner Lembergab6d1072001-04-02 21:30:06 +00002769 - The TrueType glyph loader has been seriously rewritten (see the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002770 file `src/truetype/ttgload.c'. It is now much, much simpler as
Werner Lembergab6d1072001-04-02 21:30:06 +00002771 well as easier to read, maintain and understand :-) Preliminary
2772 versions introduced a memory leak that has been reported by Jack
David Turner58c10b52000-02-22 14:31:42 +00002773 Davis, and is now fixed..
2774
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002775 - introduced the new `ft_glyph_format_plotter', used to represent
2776 stroked outlines like Windows `Vector' fonts, and certain Type 1
2777 fonts like `Hershey'. The corresponding raster will be written
David Turner58c10b52000-02-22 14:31:42 +00002778 soon.
2779
Werner Lembergab6d1072001-04-02 21:30:06 +00002780 - FT_New_Memory_Face is gone. Likewise, FT_Open_Face has a new
2781 interface that uses a structure to describe the input stream, the
2782 driver (if required), etc..
2783
David Turner58c10b52000-02-22 14:31:42 +00002784
2785TODO
Werner Lembergab6d1072001-04-02 21:30:06 +00002786
David Turner58c10b52000-02-22 14:31:42 +00002787 - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap
2788
Werner Lembergb4142d52007-01-17 12:45:26 +00002789 - Add a function like FT_Load_Character(face, char_code, load_flags)
2790 that would really embed a call to FT_Get_Char_Index then
Werner Lembergab6d1072001-04-02 21:30:06 +00002791 FT_Load_Glyph to ease developer's work.
David Turner58c10b52000-02-22 14:31:42 +00002792
Werner Lembergab6d1072001-04-02 21:30:06 +00002793 - Update the tutorial!
2794
2795 - consider adding support for Multiple Master fonts in the Type 1
David Turner58c10b52000-02-22 14:31:42 +00002796 drivers.
2797
Werner Lembergab6d1072001-04-02 21:30:06 +00002798 - Test the AFM routines of the Type 1 drivers to check that kerning
David Turner58c10b52000-02-22 14:31:42 +00002799 information is returned correctly.
2800
Werner Lembergab6d1072001-04-02 21:30:06 +00002801 - write a decent auto-gridding component !! We need this to release
David Turner58c10b52000-02-22 14:31:42 +00002802 FreeType 2.0 gold !
2803
2804
Werner Lembergab6d1072001-04-02 21:30:06 +00002805less urgent needs:
2806
David Turner58c10b52000-02-22 14:31:42 +00002807 - add a CFF/Type2 driver
2808 - add a BDF driver
2809 - add a FNT/PCF/HBF driver
2810 - add a Speedo driver from the X11 sources
2811
2812
Werner Lembergab6d1072001-04-02 21:30:06 +00002813======================================================================
2814
David Turner58c10b52000-02-22 14:31:42 +00002815OLDER CHANGES - 27-jan-2000
David Turner633da992000-01-27 14:07:33 +00002816
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002817 - updated the `sfnt' module interface to allow several SFNT-based
David Turner633da992000-01-27 14:07:33 +00002818 drivers to co-exist peacefully
David Turnere49ab252000-05-16 23:44:38 +00002819
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002820 - updated the `T1_Face' type to better separate Postscript font
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002821 content from the rest of the FT_Face structure. Might be used
Werner Lembergab6d1072001-04-02 21:30:06 +00002822 later by the CFF/Type2 driver..
David Turnere49ab252000-05-16 23:44:38 +00002823
David Turner633da992000-01-27 14:07:33 +00002824 - added an experimental replacement Type 1 driver featuring advanced
2825 (and speedy) pattern matching to retrieve the data from postscript
2826 fonts.
2827
Werner Lembergab6d1072001-04-02 21:30:06 +00002828 - very minor changes in the implementation of FT_Set_Char_Size and
Werner Lembergb4142d52007-01-17 12:45:26 +00002829 FT_Set_Pixel_Sizes (they now implement default to lighten the font
Werner Lembergab6d1072001-04-02 21:30:06 +00002830 driver's code).
David Turner633da992000-01-27 14:07:33 +00002831
2832
Werner Lembergab6d1072001-04-02 21:30:06 +00002833======================================================================
2834
David Turner633da992000-01-27 14:07:33 +00002835OLD MESSAGE
2836
Werner Lembergb4142d52007-01-17 12:45:26 +00002837This file summarizes the changes that occurred since the last `beta'
2838of FreeType 2. Because the list is important, it has been divided into
Werner Lembergab6d1072001-04-02 21:30:06 +00002839separate sections:
David Turnerd2b1f351999-12-16 23:11:37 +00002840
David Turner5951ce91999-12-29 00:53:44 +00002841Table Of Contents:
2842
2843 I High-Level Interface (easier !)
2844 II Directory Structure
2845 III Glyph Image Formats
2846 IV Build System
2847 V Portability
2848 VI Font Drivers
David Turnerd2b1f351999-12-16 23:11:37 +00002849
David Turnerd2b1f351999-12-16 23:11:37 +00002850
Werner Lembergab6d1072001-04-02 21:30:06 +00002851----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00002852
Werner Lembergab6d1072001-04-02 21:30:06 +00002853High-Level Interface:
David Turnere49ab252000-05-16 23:44:38 +00002854
Werner Lembergab6d1072001-04-02 21:30:06 +00002855 The high-level API has been considerably simplified. Here is how:
David Turnere49ab252000-05-16 23:44:38 +00002856
Werner Lembergab6d1072001-04-02 21:30:06 +00002857 - resource objects have disappeared. this means that face objects
2858 can now be created with a single function call (see FT_New_Face
2859 and FT_Open_Face)
David Turnere49ab252000-05-16 23:44:38 +00002860
Werner Lembergab6d1072001-04-02 21:30:06 +00002861 - when calling either FT_New_Face & FT_Open_Face, a size object
2862 and a glyph slot object are automatically created for the face,
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002863 and can be accessed through `face->glyph' and `face->size' if
Werner Lembergab6d1072001-04-02 21:30:06 +00002864 one really needs to. In most cases, there's no need to call
2865 FT_New_Size or FT_New_Glyph.
2866
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002867 - similarly, FT_Load_Glyph now only takes a `face' argument
Werner Lemberg4b2e83d2007-02-01 07:58:02 +00002868 (instead of a glyph slot and a size). Also, its `result'
Werner Lembergab6d1072001-04-02 21:30:06 +00002869 parameter is gone, as the glyph image type is returned in the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002870 field `face->glyph.format'
Werner Lembergab6d1072001-04-02 21:30:06 +00002871
2872 - the list of available charmaps is directly accessible through
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002873 `face->charmaps', counting `face->num_charmaps' elements. Each
Werner Lembergab6d1072001-04-02 21:30:06 +00002874 charmap has an 'encoding' field which specifies which known
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002875 encoding it deals with. Valid values are, for example:
David Turnere49ab252000-05-16 23:44:38 +00002876
David Turnerd2b1f351999-12-16 23:11:37 +00002877 ft_encoding_unicode (for ASCII, Latin-1 and Unicode)
2878 ft_encoding_apple_roman
2879 ft_encoding_sjis
2880 ft_encoding_adobe_standard
David Turner5951ce91999-12-29 00:53:44 +00002881 ft_encoding_adobe_expert
David Turnere49ab252000-05-16 23:44:38 +00002882
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002883 other values may be added in the future. Each charmap still
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002884 holds its `platform_id' and `encoding_id' values in case the
Werner Lembergab6d1072001-04-02 21:30:06 +00002885 encoding is too exotic for the current library
David Turnerd2b1f351999-12-16 23:11:37 +00002886
2887
Werner Lembergab6d1072001-04-02 21:30:06 +00002888----------------------------------------------------------------------
2889
David Turnerd2b1f351999-12-16 23:11:37 +00002890Directory Structure:
2891
2892 Should seem obvious to most of you:
2893
2894 freetype/
2895 config/ -- configuration sub-makefiles
2896 ansi/
David Turner5951ce91999-12-29 00:53:44 +00002897 unix/ -- platform-specific configuration files
David Turnerd2b1f351999-12-16 23:11:37 +00002898 win32/
2899 os2/
2900 msdos/
2901
Werner Lembergab6d1072001-04-02 21:30:06 +00002902 include/ -- public header files, those to be included
2903 directly by client apps
David Turnerd2b1f351999-12-16 23:11:37 +00002904
2905 src/ -- sources of the library
2906 base/ -- the base layer
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002907 sfnt/ -- the sfnt `driver' (see the drivers section
Werner Lembergab6d1072001-04-02 21:30:06 +00002908 below)
David Turnerd2b1f351999-12-16 23:11:37 +00002909 truetype/ -- the truetype driver
2910 type1/ -- the type1 driver
2911 shared/ -- some header files shared between drivers
2912
2913 demos/ -- demos/tools
2914
2915 docs/ -- documentation (a bit empty for now)
2916
David Turnerd2b1f351999-12-16 23:11:37 +00002917
Werner Lembergab6d1072001-04-02 21:30:06 +00002918----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00002919
Werner Lembergab6d1072001-04-02 21:30:06 +00002920Glyph Image Formats:
David Turnerd2b1f351999-12-16 23:11:37 +00002921
Werner Lembergab6d1072001-04-02 21:30:06 +00002922 Drivers are now able to register new glyph image formats within the
2923 library. For now, the base layer supports of course bitmaps and
2924 vector outlines, but one could imagine something different like
Werner Lembergb4142d52007-01-17 12:45:26 +00002925 colored bitmaps, bi-color vectors or whatever else (Metafonts anyone
Werner Lembergab6d1072001-04-02 21:30:06 +00002926 ??).
David Turnerd2b1f351999-12-16 23:11:37 +00002927
Werner Lembergab6d1072001-04-02 21:30:06 +00002928 See the file `include/ftimage.h'. Note also that the type
2929 FT_Raster_Map is gone, and is now replaced by FT_Bitmap, which
2930 should encompass all known bitmap types.
2931
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002932 Each new image format must provide at least one `raster', i.e. a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002933 module capable of transforming the glyph image into a bitmap. It's
Werner Lembergab6d1072001-04-02 21:30:06 +00002934 also possible to change the default raster used for a given glyph
2935 image format.
2936
2937 The default outline scan-converter now uses 128 levels of grays by
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002938 default, which tends to smooth many things. Note that the demo
Werner Lembergab6d1072001-04-02 21:30:06 +00002939 programs have been updated significantly in order to display these..
David Turnerd2b1f351999-12-16 23:11:37 +00002940
2941
Werner Lembergab6d1072001-04-02 21:30:06 +00002942----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00002943
Werner Lembergab6d1072001-04-02 21:30:06 +00002944Build system:
David Turnerd2b1f351999-12-16 23:11:37 +00002945
Werner Lembergab6d1072001-04-02 21:30:06 +00002946 You still need GNU Make to build the library. The build system has
2947 been very seriously re-vamped in order to provide things like :
2948
2949 - automatic host platform detection (reverting to 'config/ansi' if
2950 it is not detected, with pseudo-standard compilation flags)
David Turnerd2b1f351999-12-16 23:11:37 +00002951
2952 - the ability to compile from the Makefiles with very different and
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002953 exotic compilers. Note that linking the library can be difficult
Werner Lembergab6d1072001-04-02 21:30:06 +00002954 for some platforms.
David Turnerd2b1f351999-12-16 23:11:37 +00002955
2956 For example, the file `config/win32/lcclib.bat' is invoked by the
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002957 build system to create the `.lib' file with LCC-Win32 because its
Werner Lembergab6d1072001-04-02 21:30:06 +00002958 librarian has too many flaws to be invoked directly from the
2959 Makefile.
David Turnerd2b1f351999-12-16 23:11:37 +00002960
Werner Lembergab6d1072001-04-02 21:30:06 +00002961 Here's how it works:
David Turnerd2b1f351999-12-16 23:11:37 +00002962
Werner Lembergab6d1072001-04-02 21:30:06 +00002963 - the first time you type `make', the build system runs a series of
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002964 sub-makefiles in order to detect your host platform. It then
2965 dumps what it found, and creates a file called `config.mk' in the
2966 current directory. This is a sub-Makefile used to define many
Werner Lembergab6d1072001-04-02 21:30:06 +00002967 important Make variables used to build the library.
David Turnerd2b1f351999-12-16 23:11:37 +00002968
Werner Lembergab6d1072001-04-02 21:30:06 +00002969 - the second time, the build system detects the `config.mk' then use
2970 it to build the library. All object files go into 'obj' by
2971 default, as well as the library file, but this can easily be
2972 changed.
David Turnerd2b1f351999-12-16 23:11:37 +00002973
Werner Lembergcc7f12a2007-01-09 10:37:36 +00002974 Note that you can run `make setup' to force another host platform
Werner Lembergab6d1072001-04-02 21:30:06 +00002975 detection even if a `config.mk' is present in the current
2976 directory. Another solution is simply to delete the file, then
2977 re-run make.
David Turnerd2b1f351999-12-16 23:11:37 +00002978
Werner Lembergab6d1072001-04-02 21:30:06 +00002979 Finally, the default compiler for all platforms is gcc (for now,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00002980 this will hopefully changed in the future). You can however specify
Werner Lembergab6d1072001-04-02 21:30:06 +00002981 a different compiler by specifying it after the 'setup' target as
2982 in:
David Turnerd2b1f351999-12-16 23:11:37 +00002983
2984 gnumake setup lcc on Win32 to use the LCC compiler
2985 gnumake setup visualc on Win32 to use Visual C++
2986
Werner Lembergab6d1072001-04-02 21:30:06 +00002987 See the file `config/<system>/detect.mk' for a list of supported
2988 compilers for your platforms.
David Turnerd2b1f351999-12-16 23:11:37 +00002989
Werner Lembergab6d1072001-04-02 21:30:06 +00002990 It should be relatively easy to write new detection rules files and
David Turnerd2b1f351999-12-16 23:11:37 +00002991 config.mk..
2992
Werner Lembergab6d1072001-04-02 21:30:06 +00002993 Finally, to build the demo programs, go to `demos' and launch GNU
2994 Make, it will use the `config.mk' in the top directory to build the
2995 test programs..
David Turnerd2b1f351999-12-16 23:11:37 +00002996
David Turnerd2b1f351999-12-16 23:11:37 +00002997
Werner Lembergab6d1072001-04-02 21:30:06 +00002998----------------------------------------------------------------------
David Turnerd2b1f351999-12-16 23:11:37 +00002999
Werner Lembergab6d1072001-04-02 21:30:06 +00003000Portability:
David Turnerd2b1f351999-12-16 23:11:37 +00003001
Werner Lembergab6d1072001-04-02 21:30:06 +00003002 In the previous beta, a single FT_System object was used to
3003 encompass all low-level operations like thread synchronisation,
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003004 memory management and i/o access. This has been greatly simplified:
Werner Lembergab6d1072001-04-02 21:30:06 +00003005
3006 - thread synchronisation has been dropped, for the simple reason
3007 that the library is already re-entrant, and that if you really
3008 need two threads accessing the same FT_Library, you should
3009 really synchronize access to it yourself with a simple mutex.
3010
3011 - memory management is performed through a very simple object
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003012 called `FT_Memory', which really is a table containing a table
Werner Lembergab6d1072001-04-02 21:30:06 +00003013 of pointers to functions like malloc, realloc and free as well
3014 as some user data (closure).
David Turnerd2b1f351999-12-16 23:11:37 +00003015
3016 - resources have disappeared (they created more problems than they
Werner Lembergab6d1072001-04-02 21:30:06 +00003017 solved), and i/o management have been simplified greatly as a
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003018 result. Streams are defined through FT_Stream objects, which
3019 can be either memory-based or disk-based.
David Turnerd2b1f351999-12-16 23:11:37 +00003020
Werner Lembergab6d1072001-04-02 21:30:06 +00003021 Note that each face has its own stream, which is closed only
3022 when the face object is destroyed. Hence, a function like
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003023 TT_Flush_Face in 1.x cannot be directly supported. However, if
Werner Lembergab6d1072001-04-02 21:30:06 +00003024 you really need something like this, you can easily tailor your
3025 own streams to achieve the same feature at a lower level (and
3026 use FT_Open_Face instead of FT_New_Face to create the face).
David Turnerd2b1f351999-12-16 23:11:37 +00003027
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003028 See the file `include/ftsystem.h' for more details, as well as the
3029 implementations found in `config/unix' and `config/ansi'.
David Turnerd2b1f351999-12-16 23:11:37 +00003030
3031
Werner Lembergab6d1072001-04-02 21:30:06 +00003032----------------------------------------------------------------------
David Turnere49ab252000-05-16 23:44:38 +00003033
Werner Lembergab6d1072001-04-02 21:30:06 +00003034Font Drivers:
David Turner5951ce91999-12-29 00:53:44 +00003035
Werner Lembergab6d1072001-04-02 21:30:06 +00003036 The Font Driver interface has been modified in order to support
David Turner5951ce91999-12-29 00:53:44 +00003037 extensions & versioning.
3038
3039
Werner Lembergab6d1072001-04-02 21:30:06 +00003040 The list of the font drivers that are statically linked to the
3041 library at compile time is managed through a new configuration file
David Turner5951ce91999-12-29 00:53:44 +00003042 called `config/<platform>/ftmodule.h'.
3043
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003044 This file is autogenerated when invoking `make modules'. This
3045 target will parse all sub-directories of 'src', looking for a
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003046 `module.mk' rules file, used to describe the driver to the build
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003047 system.
David Turner5951ce91999-12-29 00:53:44 +00003048
Werner Lembergab6d1072001-04-02 21:30:06 +00003049 Hence, one should call `make modules' each time a font driver is
3050 added or removed from the `src' directory.
David Turner5951ce91999-12-29 00:53:44 +00003051
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003052 Finally, this version provides a `pseudo-driver' in `src/sfnt'.
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003053 This driver doesn't support font files directly, but provides
3054 services used by all TrueType-like font drivers. Hence, its code is
3055 shared between the TrueType & OpenType font formats, and possibly
3056 more formats to come if we're lucky..
David Turnerd2b1f351999-12-16 23:11:37 +00003057
Werner Lembergab6d1072001-04-02 21:30:06 +00003058
3059----------------------------------------------------------------------
3060
3061Extensions support:
David Turner5951ce91999-12-29 00:53:44 +00003062
3063 The extensions support is inspired by the one found in 1.x.
3064
Werner Lembergcc7f12a2007-01-09 10:37:36 +00003065 Now, each font driver has its own `extension registry', which lists
Werner Lembergab6d1072001-04-02 21:30:06 +00003066 which extensions are available for the font faces managed by the
3067 driver.
David Turner5951ce91999-12-29 00:53:44 +00003068
Werner Lembergab6d1072001-04-02 21:30:06 +00003069 Extension ids are now strings, rather than 4-byte tags, as this is
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003070 usually more readable.
David Turner5951ce91999-12-29 00:53:44 +00003071
3072 Each extension has:
3073 - some data, associated to each face object
3074 - an interface (table of function pointers)
3075
Werner Lembergab6d1072001-04-02 21:30:06 +00003076 An extension that is format-specific should simply register itself
Werner Lemberg5e3614f2003-09-12 19:38:13 +00003077 to the correct font driver. Here is some example code:
David Turner5951ce91999-12-29 00:53:44 +00003078
3079 // Registering an extensions
3080 //
3081 FT_Error FT_Init_XXXX_Extension( FT_Library library )
3082 {
3083 FT_DriverInterface* tt_driver;
3084
3085 driver = FT_Get_Driver( library, "truetype" );
3086 if (!driver) return FT_Err_Unimplemented_Feature;
3087
David Turnere49ab252000-05-16 23:44:38 +00003088 return FT_Register_Extension( driver, &extension_class );
David Turner5951ce91999-12-29 00:53:44 +00003089 }
3090
David Turnere49ab252000-05-16 23:44:38 +00003091
David Turner5951ce91999-12-29 00:53:44 +00003092 // Implementing the extensions
3093 //
3094 FT_Error FT_Proceed_Extension_XXX( FT_Face face )
3095 {
3096 FT_XXX_Extension ext;
3097 FT_XXX_Extension_Interface ext_interface;
3098
3099 ext = FT_Get_Extension( face, "extensionid", &ext_interface );
3100 if (!ext) return error;
3101
3102 return ext_interface->do_it(ext);
3103 }
David Turnerd2b1f351999-12-16 23:11:37 +00003104
Werner Lemberg56c368c2005-06-04 23:00:25 +00003105------------------------------------------------------------------------
3106
Werner Lemberg5057e362008-02-29 07:23:02 +00003107Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by
Werner Lemberg56c368c2005-06-04 23:00:25 +00003108David Turner, Robert Wilhelm, and Werner Lemberg.
3109
3110This file is part of the FreeType project, and may only be used,
3111modified, and distributed under the terms of the FreeType project
3112license, LICENSE.TXT. By continuing to use, modify, or distribute this
3113file you indicate that you have read the license and understand and
3114accept it fully.
3115
3116
Werner Lemberg110246c2006-09-26 21:55:44 +00003117Local Variables:
3118version-control: never
3119coding: utf-8
3120End:
3121
Werner Lembergab6d1072001-04-02 21:30:06 +00003122--- end of CHANGES ---