From 5e3614f5847370786d8c91e1aa428ed15bbde55d Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Fri, 12 Sep 2003 19:38:13 +0000 Subject: [PATCH] * builds/toplevel.mk (distclean): Remove `builds/unix/freetype2.pc'. * src/cff/cffdrivr.c: Don't load headers twice. * include/freetype/internal/ftserv.h (FT_SERVICE_SFNT_H): New macro. * src/base/ftobjs.c: Include FT_SERVICE_SFNT_H. --- ChangeLog | 204 ++++- builds/toplevel.mk | 1 + docs/CHANGES | 1183 ++++++++++++++-------------- include/freetype/internal/ftserv.h | 1 + src/base/ftobjs.c | 1 + src/cff/cffdrivr.c | 2 - 6 files changed, 777 insertions(+), 615 deletions(-) diff --git a/ChangeLog b/ChangeLog index 04257ad7d..4dc6680d5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,58 +1,176 @@ +2003-09-11 Werner Lemberg + + * builds/toplevel.mk (distclean): Remove `builds/unix/freetype2.pc'. + + * src/cff/cffdrivr.c: Don't load headers twice. + + * include/freetype/internal/ftserv.h (FT_SERVICE_SFNT_H): New macro. + * src/base/ftobjs.c: Include FT_SERVICE_SFNT_H. + 2003-09-11 David Turner - * include/freetype/ftmm.h, include/freetype/ftmodule.h, - include/freetype/tttables.h, include/freetype/config/ftconfig.h, - include/freetype/internal/ftobjs.h, - include/freetype/internal/ftserv.h, - include/freetype/internal/internal.h, - include/freetype/internal/sfnt.h, - include/freetype/internal/tttypes.h, - include/freetype/internal/services/bdf.h, - include/freetype/internal/services/glyfdict.h, - include/freetype/internal/services/multmast.h, - include/freetype/internal/services/postname.h, - include/freetype/internal/services/sfnt.h, - include/freetype/internal/services/xf86name.h, - src/base/ftbdf.c, src/base/ftmm.c, src/base/ftobjs.c, - src/base/ftxf86.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c, - src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/sfnt/sfdriver.c, - src/truetype/ttdriver.c, src/type1/t1driver.c, src/type42/t42drivr.c: + Introducing the concept of `module services'. This is the first + step towards a massive simplification of the engine's internals, in + order to get rid of various numbers of hacks. - heavy internal modifications to introduce the concept of - "module services". This is the first step towards a massive - simplification of the engine's internals, in order to - get rid of various numbers of hacks. + Note that this changes will break source & binary compatibility for + authors of external font drivers. - Note that this changes will break source & binary compatibility - for authors of external font drivers. + * include/freetype/config/ftconfig.h (FT_BEGIN_STMNT, FT_END_STMNT, + FT_DUMMY_STMNT): New macros. - Maybe 2.1.6 will be called 2.2.0 after all :-) + * include/freetype/internal/ftserv.h: New file, containing the new + structures and macros to provide `services'. - * README, builds/unix/configure, builds/unix/configure.ac, - docs/CHANGES, include/freetype/freetype.h: + * include/freetype/internal/internal.h (FT_INTERNAL_EXTENSION_H, + FT_INTERNAL_EXTEND_H, FT_INTERNAL_HASH_H, FT_INTERNAL_OBJECT_H): + Removed, obsolete. + (FT_INTERNAL_SERVICE_H): New macro for `ftserv.h'. - updating version numbers for 2.1.6, and removing obsolete - warnings in the documentation + * include/freetype/internal/services/bdf.h, + include/freetype/internal/services/glyfdict.h, + include/freetype/internal/services/postname.h, + include/freetype/internal/services/xf86name.h: New files. - * include/freetype/internal/ftcore.h, - include/freetype/internal/ftexcept.h, - include/freetype/internal/fthash.h, - include/freetype/internal/ftobject.h: + * include/freetype/ftmm.h (FT_Get_MM_Func, FT_Set_MM_Design_Func, + FT_Set_MM_Blend_Func): Function pointers moved (in modified form) + to... + * include/freetype/internal/services/multmast.h: New file. - removing obsolete files + * include/freetype/internal/sfnt.h (SFNT_Interface): `get_interface' + is now of type `FT_Module_Requester'. + (SFNT_Get_Interface_Func, SFNT_Load_Table_Func): Function pointers + moved (in modified form) to... + * include/freetype/internal/servies/sfnt.h: New file. + + * include/freetype/tttables.h (FT_Get_Sfnt_Table_Func): Function + pointer moved (in modified form) to `services/sfnt.h'. + + * include/freetype/ftmodule.h (FT_Module_Interface): Make it a + a typedef to `FT_Pointer'. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Add + `postscript_name'. + * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove + `postscript_name'. + Add `services' element. + (FT_LibraryRec): Remove `meta_class'. + + * src/base/ftbdf.c: Include FT_SERVICE_BDF_H. + (test_font_type): Removed. + (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): Use services + provided in `FT_SERVICE_ID_BDF' + + * src/base/ftmm.c: Include FT_SERVICE_MULTIPLE_MASTERS_H. + (ft_face_get_mm_service): New auxiliary function to get services + from `FT_SERVICE_ID_MULTI_MASTERS'. + (FT_Get_Multi_Master, FT_Set_MM_Design_Coordinates, + FT_Set_MM_Blend_Coordinates): Use `ft_face_get_mm_service'. + + * src/base/ftobjs.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and + FT_SERVICE_GLYPH_DICT_H. + (ft_service_list_lookup): New function to get a specific service. + (destroy_face): Updated. + (Mac_Read_POST_Resource): Simplify some code. + (IsMacResource): Fix warnings. + (FT_Get_Name_Index, FT_Get_Glyph_Name): Use services provided in + `FT_SERVICE_ID_GLYPH_DICT'. + (FT_Get_Postscript_Name): Use service provided in + `FT_SERVICE_ID_POSTSCRIPT_NAME'. + (FT_Get_Sfnt_Table, FT_Load_Sfnt_Table): Use services provided in + `FT_SERVICE_ID_SFNT_TABLE'. + + * src/base/ftxf86.c: Include FT_SERVICE_XFREE86_NAME_H. + (FT_Get_X11_Font_Format): Use service provided in + `FT_SERVICE_ID_XF86_NAME'. + + * src/bdf/bdfdrivr.c: Include FT_SERVICE_BDF_H and + FT_SERVICE_XFREE86_NAME_H. + (bdf_get_charset_id): New function. + (bdf_service_bdf): New structure providing BDF services. + (bdf_services): New services list. + (bdf_driver_requester): Use `ft_service_list_lookup'. + + * src/cff/cffdrivr.c: Include FT_SERVICE_XFREE86_NAME_H and + FT_SERVICE_GLYPH_DICT_H. + (cff_service_glyph_dict): New structure providing CFF services. + (cff_services): New services list. + (cff_get_interface): Use `ft_service_list_lookup'. + + * src/cid/cidriver.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and + FT_SERVICE_XFREE86_NAME_H. + (cid_service_ps_name): New structure providing CID services. + (cid_services): New services list. + (cid_get_interface): Use `ft_service_list_lookup'. + + * src/pcf/pcfdrivr.c: Include FT_SERVICE_BDF_H and + FT_SERVICE_XFREE86_NAME_H. + (pcf_service_bdf): New structure providing PCF services. + (pcf_services): New services list. + (pcf_driver_requester): Use `ft_service_list_lookup'. + + * src/sfnt/sfdriver.c: Include FT_SERVICE_GLYPH_DICT_H and + FT_SERVICE_POSTSCRIPT_NAME_H. + (get_sfnt_glyph_name): Renamed to... + (sfnt_get_glyph_name): This. + (get_sfnt_postscript_name): Renamed to... + (sfnt_get_ps_name): This. + Updated. + (sfnt_service_glyph_dict, sfnt_service_ps_name): New structures + providing services. + (sfnt_services): New services list. + (sfnt_get_interface): Use `ft_service_list_lookup'. + + * src/truetype/ttdriver.c: Include FT_SERVICE_XFREE86_NAME_H. + (tt_services): New services list. + (tt_get_interface): Use `ft_service_list_lookup'. + + * src/type1/t1driver.c: Include FT_SERVICE_MULTIPLE_MASTERS_H, + FT_SERVICE_GLYPH_DICT_H, FT_SERVICE_XFREE86_NAME_H, and + FT_SERVICE_POSTSCRIPT_NAME_H. + (t1_service_glyph_dict, t1_service_ps_name, + t1_service_multi_masters): New structures providing Type 1 services. + (t1_services): New services list. + (Get_Interface): Use `ft_service_list_lookup'. + + * src/type42/t42drivr.c: Include FT_SERVICE_XFREE86_NAME_H, + FT_SERVICE_GLYPH_DICT_H, and FT_SERVICE_POSTSCRIPT_NAME_H. + (t42_service_glyph_dict, t42_service_ps_name): New strucures + providing Type 42 services. + (t42_services): New services list. + (T42_Get_Interface): Use `ft_service_list_lookup'. + * README, builds/unix/configure, builds/unix/configure.ac, + docs/CHANGES, include/freetype/freetype.h: Updating version numbers + for 2.1.6, and removing obsolete warnings in the documentation. + * include/freetype/internal/ftcore.h, + include/freetype/internal/ftexcept.h, + include/freetype/internal/fthash.h, + include/freetype/internal/ftobject.h: Removed. Obsolete. 2003-09-09 David Turner - * src/base/ftpfr.c, src/pfr/pfrtypes.h, src/pfr/pfrload.c, - src/pfr/pfrobjs.c: fixing PFR kerning support. The tables within - the font file contain (charcode,charcode) kerning pairs, we need - to convert them to (gindex,gindex) ! + Fixing PFR kerning support. The tables within the font file contain + (charcode,charcode) kerning pairs, we need to convert them to + (gindex,gindex). - * include/freetype/ftoption.h: commenting out the macro - TT_CONFIG_OPTION_BYTECODE_INTERPRETER + * src/base/ftpfr.c (ft_pfr_check): Fix serious typo. + * src/pfr/prfload.c: Remove dead code. + (pfr_get_gindex, pfr_compare_kern_pairs, pfr_sort_kerning_pairs): + New functions. + (pfr_phy_font_done): Free `kern_pairs'. + (pfr_phy_font_load): Call `pfr_sort_kerning_pairs'. + * src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix kerning extraction. + * src/pfr/pfrtypes.h (PFR_KERN_PAIR_INDEX): New macro. + (PFR_KernPairRec): Make `kerning' an FT_Int. + (PFR_PhyFontRec): New element `kern_pairs'. + (PFR_KernFlags): Values of PFR_KERN_2BYTE_CHAR and + PFR_KERN_2BYTE_ADJ were erroneously reversed. + + * include/freetype/ftoption.h: Commenting out the macro + TT_CONFIG_OPTION_BYTECODE_INTERPRETER. 2003-08-31 Manish Singh @@ -1957,9 +2075,9 @@ 2002-11-01 David Turner - Added PFR-specific public API. Fixed the kerning retrievel routine - (it returned invalid values when the outline and metrics resolution - differ). + Added PFR-specific public API. Fixed the kerning retrievel routine + (it returned invalid values when the outline and metrics resolution + differ). * include/freetype/ftpfr.h, include/freetype/internal/pfr.h: New files. @@ -6772,7 +6890,7 @@ * src/cff/cffparse.c (cff_parse_font_matrix): Added logic to get the units_per_EM from the FontMatrix. - (cff_parse_fixed_thousand): New function. Gets a real number from + (cff_parse_fixed_thousand): New function. Gets a real number from the CFF font, but multiplies by 1000 (this is to avoid rounding errors when placing this real number into a 16.16 fixed number). diff --git a/builds/toplevel.mk b/builds/toplevel.mk index 08f50b42e..6ee3818df 100644 --- a/builds/toplevel.mk +++ b/builds/toplevel.mk @@ -110,6 +110,7 @@ ifdef check_platform $(RM) builds/unix/config.status $(RM) builds/unix/unix-def.mk $(RM) builds/unix/unix-cc.mk + $(RM) builds/unix/freetype2.pc $(RM) nul endif # test is_unix diff --git a/docs/CHANGES b/docs/CHANGES index b4442bba3..e7c550013 100644 --- a/docs/CHANGES +++ b/docs/CHANGES @@ -3,15 +3,15 @@ LATEST CHANGES BETWEEN 2.1.6 and 2.1.5 I. IMPORTANT BUG FIXES - - the PFR font driver didn't load kerning tables correctly, - and the functions in FT_PFR_H didn't work at all. Ugh !! + - The PFR font driver didn't load kerning tables correctly, and + the functions in FT_PFR_H didn't work at all. II. IMPORTANT CHANGES - - the internal module API has been heavily changed. In favor - of massive simplifications within the font engine. This - also means that authors of third-party modules will need - to adapt their code !! + - The internal module API has been heavily changed in favor of + massive simplifications within the font engine. This also means + that authors of third-party modules must adapt their code to the + new scheme. ===================================================================== @@ -21,51 +21,52 @@ LATEST CHANGES BETWEEN 2.1.5 and 2.1.4 I. IMPORTANT BUG FIXES - - Parsing the /CIDFontName field now removes the leading slash to + - Parsing the /CIDFontName field now removes the leading slash to be in sync with other font drivers. - - gzip support was buggy. Some fonts could not be read. + - gzip support was buggy. Some fonts could not be read. - - Fonts which have nested subglyphs more than one level deep no + - Fonts which have nested subglyphs more than one level deep no longer cause a segfault. - - Creation of synthetic cmaps for fonts in CFF format was broken + - Creation of synthetic cmaps for fonts in CFF format was broken partially. - - Numeric font dictionary entries for synthetic fonts are no longer - overwritten. + - Numeric font dictionary entries for synthetic fonts are no + longer overwritten. - - The font matrix wasn't applied to the advance width for Type1, CID, - and CFF fonts. This caused problem when loading certain synthetic - Type 1 fonts like "Helvetica Narrow" + - The font matrix wasn't applied to the advance width for Type1, + CID, and CFF fonts. This caused problem when loading certain + synthetic Type 1 fonts like "Helvetica Narrow" - - The test for the charset registry in BDF and PCF fonts is now + - The test for the charset registry in BDF and PCF fonts is now case-insensitive. - - FT_Vector_Rotate rotating sometimes returned strange values due to - rounding errors. + - FT_Vector_Rotate rotating sometimes returned strange values due + to rounding errors. - - The PCF driver now returns the correct number of glyphs (including - an artificial `notdef' glyph at index 0). + - The PCF driver now returns the correct number of glyphs + (including an artificial `notdef' glyph at index 0). - - FreeType now supports buggy CMaps which are contained in many CJK - fonts from Dynalab. + - FreeType now supports buggy CMaps which are contained in many + CJK fonts from Dynalab. - - Opening an invalid font on a Mac caused a segfault due to + - Opening an invalid font on a Mac caused a segfault due to double-freeing memory. - - BDF fonts with more than 32768 glyphs weren't supported properly. + - BDF fonts with more than 32768 glyphs weren't supported + properly. II. IMPORTANT CHANGES - Accessing bitmap font formats has been synchronized. To do that - the FT_Bitmap_Size structure has been extended to contain new + the FT_Bitmap_Size structure has been extended to contain new fields `size', `x_ppem', and `y_ppem'. - The FNT driver now returns multiple faces, not multiple strikes. - - The `psnames' module has been updated to the Adobe Glyph List + - The `psnames' module has been updated to the Adobe Glyph List version 2.0. - The `psnames' module now understands `uXXXX[X[X]]' glyph names. @@ -73,261 +74,274 @@ LATEST CHANGES BETWEEN 2.1.5 and 2.1.4 - The algorithm for guessing the font style has been improved. - For fonts in sfnt format, root->height is no longer increased if - the line gap is zero. There exist fonts (containing e.g. form - drawing characters) which intentionally have a zero line gap value. + the line gap is zero. There exist fonts (containing e.g. form + drawing characters) which intentionally have a zero line gap + value. - - ft_glyph_bbox_xxx flags are now deprecated in favour of + - ft_glyph_bbox_xxx flags are now deprecated in favour of FT_GLYPH_BBOX_XXX. - - ft_module_xxx flags are now deprecated in favour of FT_MODULE_XXX. + - ft_module_xxx flags are now deprecated in favour of + FT_MODULE_XXX. - - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now deprecated - in favour of FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB} -- those - encodings are not specific to Microsoft. + - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now + deprecated in favour of + FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB} -- those encodings + are not specific to Microsoft. III. MISCELLANEOUS - - The autohinter has been further improved; for example, `m' glyphs - now retain its vertical symmetry. + - The autohinter has been further improved; for example, `m' + glyphs now retain its vertical symmetry. - Partial support of Mac fonts on non-Mac platforms. - - `make refdoc' (after first `make') builds the HTML documentation. - You need Python for this. + - `make refdoc' (after first `make') builds the HTML + documentation. You need Python for this. - - The make build system should now work more reliably on DOS-like + - The make build system should now work more reliably on DOS-like platforms. - - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has been - added. + - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has + been added. - Better VMS build support. - - Support for the pkg-config package by providing a `freetype.pc' + - Support for the pkg-config package by providing a `freetype.pc' file. - New configure option --with-old-mac-fonts for Darwin. - - Some source files have been renamed (mainly to fit into the 8.3 + - Some source files have been renamed (mainly to fit into the 8.3 naming scheme). -============================================================================== +====================================================================== LATEST CHANGES BETWEEN 2.1.4 and 2.1.3 I. IMPORTANT BUG FIXES - - Updated to newest libtool version, fixing build problems on various - platforms. + - Updated to newest libtool version, fixing build problems on + various platforms. - - A fix in the Gzip stream reader: It couldn't read certain .gz files - properly due to a small typo. In certain cases, FreeType could also - loop endlessly when trying to load tiny gzipped files. + - A fix in the Gzip stream reader: It couldn't read certain .gz + files properly due to a small typo. In certain cases, FreeType + could also loop endlessly when trying to load tiny gzipped + files. - - The configure script now tries to use the system-wide zlib when - it finds one (instead of the copy found in src/gzip). And - "freetype-config" has been updated to return relevant flags in this - case when invoked with "--libs" (e.g. "-lzlib"). + - The configure script now tries to use the system-wide zlib when + it finds one (instead of the copy found in src/gzip). And + "freetype-config" has been updated to return relevant flags in + this case when invoked with "--libs" (e.g. "-lzlib"). - - Certain fonts couldn't be loaded by 2.1.3 because they lacked a - Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously rejected - them. + - Certain fonts couldn't be loaded by 2.1.3 because they lacked a + Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously + rejected them. - The CFF loader was modified to accept fonts which only contain a - subset of their reference charset. This prevented the correct use - of PDF-embedded fonts. + subset of their reference charset. This prevented the correct + use of PDF-embedded fonts. - The logic to detect Unicode charmaps has been modified. This is - required to support fonts which include both 16-bit and 32-bit - charmaps (like very recent asian ones) using the new 10 and 12 SFNT - formats. + required to support fonts which include both 16-bit and 32-bit + charmaps (like very recent asian ones) using the new 10 and 12 + SFNT formats. - - The TrueType loader now limits the depth of composite glyphs. This is - necessary to prevent broken fonts to break the engine by blowing the - stack with recursive glyph definitions. + - The TrueType loader now limits the depth of composite glyphs. + This is necessary to prevent broken fonts to break the engine by + blowing the stack with recursive glyph definitions. - - The CMap cache is now capable of managing UCS-4 character codes that - are mapped through extended charmaps in recent TrueType/OpenType - fonts. + - The CMap cache is now capable of managing UCS-4 character codes + that are mapped through extended charmaps in recent + TrueType/OpenType fonts. - - The cache sub-system now properly manages out-of-memory conditions - instead of blindly reporting them to the caller. This means that it - will try to empty the cache before restarting its allocations to see - if that can help. + - The cache sub-system now properly manages out-of-memory + conditions instead of blindly reporting them to the caller. + This means that it will try to empty the cache before restarting + its allocations to see if that can help. - - The PFR driver didn't return the list of available embedded bitmaps - properly. + - The PFR driver didn't return the list of available embedded + bitmaps properly. - - There was a nasty memory leak when using embedded bitmaps in certain - font formats. + - There was a nasty memory leak when using embedded bitmaps in + certain font formats. II. IMPORTANT CHANGES - - David Chester contributed some enhancements to the auto-hinter that - significantly increase the quality of its output. The Postscript - hinter was also improved in several ways. + - David Chester contributed some enhancements to the auto-hinter + that significantly increase the quality of its output. The + Postscript hinter was also improved in several ways. - The FT_RENDER_MODE_LIGHT render mode was implemented. - - A new API function called `FT_Get_BDF_Property' has been added to - FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font files. - THIS IS STILL EXPERIMENTAL, since it hasn't been properly tested yet. + - A new API function called `FT_Get_BDF_Property' has been added + to FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font + files. THIS IS STILL EXPERIMENTAL, since it hasn't been + properly tested yet. - A Windows FNT specific API has been added, mostly to access font headers. This is used by Wine. - - TrueType tables without an "hmtx" table are now tolerated when an - incremental interface is used. This happens for certain Type42 fonts - passed from Ghostscript to FreeType. + - TrueType tables without an "hmtx" table are now tolerated when + an incremental interface is used. This happens for certain + Type42 fonts passed from Ghostscript to FreeType. - - The PFR font driver is now capable of returning the font family and - style names when they are available (instead of the sole "FontID"). - This is performed by parsing an *undocumented* portion of the font - file! + - The PFR font driver is now capable of returning the font family + and style names when they are available (instead of the sole + "FontID"). This is performed by parsing an *undocumented* + portion of the font file! III. MISCELLANEOUS - - The path stroker in FT_STROKER_H has entered beta stage. It now works - very well, but its interface might change a bit in the future. More - on this in later releases. + - The path stroker in FT_STROKER_H has entered beta stage. It now + works very well, but its interface might change a bit in the + future. More on this in later releases. - - The documentation for FT_Size_Metrics didn't appear properly in the - API reference. + - The documentation for FT_Size_Metrics didn't appear properly in + the API reference. - The file docs/VERSION.DLL has been updated to explain versioning - with FreeType (i.e., comparing release/libtool/so numbers, and how to - use them in autoconf scripts). + with FreeType (i.e., comparing release/libtool/so numbers, and + how to use them in autoconf scripts). - - The installation documentation has been seriously revamped. + - The installation documentation has been seriously revamped. Everything is now in the "docs" directory. -============================================================================== +====================================================================== LATEST CHANGES BETWEEN 2.1.3 and 2.1.2 I. IMPORTANT BUG FIXES - - FT_Vector_Transform had been incorrectly modified in 2.1.2, resulting - in incorrect transformations being applied (for example, rotations - were processed in opposite angles). + - FT_Vector_Transform had been incorrectly modified in 2.1.2, + resulting in incorrect transformations being applied (for + example, rotations were processed in opposite angles). - - The format 8 and 12 TrueType charmap enumeration routines have been - fixed (FT_Get_Next_Char returned invalid values). + - The format 8 and 12 TrueType charmap enumeration routines have + been fixed (FT_Get_Next_Char returned invalid values). - - The PFR font driver returned incorrect advance widths if the outline - and metrics resolution defined in the font file were different. + - The PFR font driver returned incorrect advance widths if the + outline and metrics resolution defined in the font file were + different. - - FT_Glyph_To_Bitmap now returns successfully when called with an + - FT_Glyph_To_Bitmap now returns successfully when called with an FT_BitmapGlyph argument (it previously returned an error). - - A bug in the Type 1 loader that prevented valid font bounding boxes to - be loaded from multiple master fonts. + - A bug in the Type 1 loader that prevented valid font bounding + boxes to be loaded from multiple master fonts. - - The SFNT validation code has been rewritten. FreeType can now load - "broken" fonts that were usable on Windows, but not with previous - versions of the library. + - The SFNT validation code has been rewritten. FreeType can now + load "broken" fonts that were usable on Windows, but not with + previous versions of the library. - The computation of bearings in the BDF driver has been fixed. - - The Postscript hinter crashed when trying to hint certain glyphs (more - precisely, when trying to apply hints to an empty glyph outline). + - The Postscript hinter crashed when trying to hint certain glyphs + (more precisely, when trying to apply hints to an empty glyph + outline). - - The TrueType glyph loader now supports composites in "Apple format" - (they differ slightly from Microsoft/OpenType ones in the way - transformation offsets are computed). + - The TrueType glyph loader now supports composites in "Apple + format" (they differ slightly from Microsoft/OpenType ones in + the way transformation offsets are computed). - - FreeType was very slow at opening certain asian CID/CFF fonts, due - to fixed increment in dynamic array re-allocations. This has been - changed to exponential behaviour to get acceptable performance. + - FreeType was very slow at opening certain asian CID/CFF fonts, + due to fixed increment in dynamic array re-allocations. This + has been changed to exponential behaviour to get acceptable + performance. II. IMPORTANT CHANGES - - The PCF driver now supports gzip-compressed font files natively. This - means that you will be able to use all these bitmap fonts that come - with XFree86 with FreeType (and libXft/libXft2, by extension). + - The PCF driver now supports gzip-compressed font files natively. + This means that you will be able to use all these bitmap fonts + that come with XFree86 with FreeType (and libXft/libXft2, by + extension). - - The automatic and postscript hinters have both been updated. This - results in a relatively important increase of rendering quality since - many nasty defaults have been supressed. Please visit the web page: + - The automatic and postscript hinters have both been updated. + This results in a relatively important increase of rendering + quality since many nasty defaults have been supressed. Please + visit the web page: http://www.freetype.org/hinting/smooth-hinting.html for additional details on this topic. - - The "load_flags" parameter of FT_Load_Glyph is now an FT_Int32 - (instead of just being an FT_Int). This breaks source and binary - compatibility for 16bit systems only, while retaining both of them for - 32 and 64 bit ones. + - The "load_flags" parameter of FT_Load_Glyph is now an FT_Int32 + (instead of just being an FT_Int). This breaks source and + binary compatibility for 16bit systems only, while retaining + both of them for 32 and 64 bit ones. Some new flags have been added consequently: FT_LOAD_NO_AUTOHINT :: Disable the use of the auto-hinter (but not native format hinters). - FT_LOAD_TARGET_NORMAL :: Hint and render for normal anti-aliased - displays. + FT_LOAD_TARGET_NORMAL :: Hint and render for normal + anti-aliased displays. FT_LOAD_TARGET_MONO :: Hint and render for 1-bit displays. - FT_LOAD_TARGET_LCD :: Hint and render for horizontal RGB or BGR - sub-pixel displays (like LCD screens). - THIS IS STILL EXPERIMENTAL! + FT_LOAD_TARGET_LCD :: Hint and render for horizontal RGB or + BGR sub-pixel displays (like LCD + screens). THIS IS STILL + EXPERIMENTAL! - FT_LOAD_TARGET_LCD_V :: Same as FT_LOAD_TARGET_LCD, for vertical - sub-pixel displays (like rotated LCD - screens). THIS IS STILL EXPERIMENTAL! + FT_LOAD_TARGET_LCD_V :: Same as FT_LOAD_TARGET_LCD, for + vertical sub-pixel displays (like + rotated LCD screens). THIS IS STILL + EXPERIMENTAL! - FT_LOAD_MONOCHROME is still supported, but only affects rendering, not - the hinting. + FT_LOAD_MONOCHROME is still supported, but only affects + rendering, not the hinting. - Note that the 'ftview' demo program available in the 'ft2demos' package - has been updated to support LCD-optimized display on non-paletted - displays (under Win32 and X11). + Note that the `ftview' demo program available in the `ft2demos' + package has been updated to support LCD-optimized display on + non-paletted displays (under Win32 and X11). - - The PFR driver now supports embedded bitmaps (all formats supported), - and returns correct kerning metrics for all glyphs. + - The PFR driver now supports embedded bitmaps (all formats + supported), and returns correct kerning metrics for all glyphs. - - The TrueType charmap loader now supports certain "broken" fonts that - load under Windows without problems. + - The TrueType charmap loader now supports certain `broken' fonts + that load under Windows without problems. - The cache API has been slightly modified (it's still a beta!): - - The type FTC_ImageDesc has been removed; it is now replaced by - FTC_ImageTypeRec. Note that one of its fields is a `load_flag' - parameter for FT_Load_Glyph. + - The type FTC_ImageDesc has been removed; it is now replaced + by FTC_ImageTypeRec. Note that one of its fields is a + `load_flag' parameter for FT_Load_Glyph. - - The field "num_grays" of FT_SBitRec has been changed to "max_grays" - in order to fit within a single byte. Its maximum value is thus 255 - (instead of 256 as previously). + - The field "num_grays" of FT_SBitRec has been changed to + "max_grays" in order to fit within a single byte. Its + maximum value is thus 255 (instead of 256 as previously). III. MISCELLANEOUS - - Added support for the DESTDIR variable during "make install". This - simplifies packaging of FreeType. + - Added support for the DESTDIR variable during "make install". + This simplifies packaging of FreeType. - - Included modified copies of the ZLib sources in 'src/gzip' in order to - support gzip-compressed PCF fonts. We do not use the system-provided - zlib for now, though this is a probable enhancement for future - releases. + - Included modified copies of the ZLib sources in `src/gzip' in + order to support gzip-compressed PCF fonts. We do not use the + system-provided zlib for now, though this is a probable + enhancement for future releases. - - The DocMaker tool used to generate the on-line API reference has been - completely rewritten. It is now located in + - The DocMaker tool used to generate the on-line API reference has + been completely rewritten. It is now located in "src/tools/docmaker/docmaker.py". Features: - better cross-referenced output - more polished output - - uses Python regular expressions (though it didn't speed the + - uses Python regular expressions (though it didn't speed the program) - - much more modular structure, which allows for different "backends" - in order to generate HTML, XML, or whatever format. + - much more modular structure, which allows for different + "backends" in order to generate HTML, XML, or whatever + format. One can regenerate the API reference by calling: @@ -340,86 +354,92 @@ LATEST CHANGES BETWEEN 2.1.3 and 2.1.2 include/freetype/cache/*.h - A new, experimental, support for incremental font loading (i.e., - loading of fonts where the glyphs are not in the font file itself, but - provided by an external component, like a Postscript interpreter) has - been added by Graham Asher. This is still work in progress, however. + loading of fonts where the glyphs are not in the font file + itself, but provided by an external component, like a Postscript + interpreter) has been added by Graham Asher. This is still work + in progress, however. - - A new, EXPERIMENTAL, path stroker has been added. It doesn't suffer - from severe rounding errors and treat bezier arcs directly. Still - work in progress (i.e. not part of the official API). See the file - for some of the details. + - A new, EXPERIMENTAL, path stroker has been added. It doesn't + suffer from severe rounding errors and treat bezier arcs + directly. Still work in progress (i.e. not part of the official + API). See the file for some of the + details. - - The massive re-formatting of sources and internal re-design is still - under-way. Many internal functions, constants, and types have been - renamed. + - The massive re-formatting of sources and internal re-design is + still under-way. Many internal functions, constants, and types + have been renamed. -======================================================================== +====================================================================== LATEST CHANGES BETWEEN 2.1.2 and 2.1.1 I. IMPORTANT BUG FIXES - - Many font drivers didn't select a Unicode charmap by default when - a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS options - enabled), causing many applications to not be able to display text - correctly with the 2.1.x releases. + - Many font drivers didn't select a Unicode charmap by default + when a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS + options enabled), causing many applications to not be able to + display text correctly with the 2.1.x releases. - - The PFR driver had a bug in its composite loading code that produces - incorrectly placed accents with many fonts. + - The PFR driver had a bug in its composite loading code that + produces incorrectly placed accents with many fonts. - The Type42 driver crashed sometimes due to a nasty bug. - - The Type 1 custom encoding charmap didn't handle the case where the - first glyph index wasn't 0. + - The Type 1 custom encoding charmap didn't handle the case where + the first glyph index wasn't 0. - - A serious typo in the TrueType composite loader produced incorrectly - placed glyphs in fonts like "Wingdings" and a few others. + - A serious typo in the TrueType composite loader produced + incorrectly placed glyphs in fonts like "Wingdings" and a few + others. II. MISCELLANEOUS - - The Win32 Visual C++ project file has been updated to include the - PFR driver as well. + - The Win32 Visual C++ project file has been updated to include + the PFR driver as well. - - "freetype.m4" is now installed by default by "make install" on Unix - systems. + - "freetype.m4" is now installed by default by "make install" on + Unix systems. - - The function FT_Get_PS_Font_Info now works with CID and Type42 fonts - as well. + - The function FT_Get_PS_Font_Info now works with CID and Type42 + fonts as well. -======================================================================== +====================================================================== LATEST CHANGES BETWEEN 2.1.1 and 2.1.0 I. IMPORTANT BUG FIXES - - The `version_info' returned by `freetype-config' in 2.1.0 returned an - invalid value. It now returns 9:1:3 (2.0.9 returned 9:0:3). + - The `version_info' returned by `freetype-config' in 2.1.0 + returned an invalid value. It now returns 9:1:3 (2.0.9 returned + 9:0:3). - - Version 2.1.0 couldn't be linked against applications on Win32 and - Amiga systems due to a new debug function that wasn't properly - propagated to the system-specific directory in `builds'. + - Version 2.1.0 couldn't be linked against applications on Win32 + and Amiga systems due to a new debug function that wasn't + properly propagated to the system-specific directory in + `builds'. - Various MacOS and Mac OS X specific fixes. - - Fixed a bug in the TrueType charmap validation routines that made - version 2.1.0 too restrictive -- many popular fonts have been - rejected. + - Fixed a bug in the TrueType charmap validation routines that + made version 2.1.0 too restrictive -- many popular fonts have + been rejected. - - There was still a very small difference between the monochrome glyph - bitmaps produced by FreeType 1.x and FreeType 2.x with the bytecode - interpreter enabled. This was caused by an invalid flag setting in - the TrueType glyph loader, making the rasterizer change its drop-out - control mode. Now theresults should _really_ be completely identical. + - There was still a very small difference between the monochrome + glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the + bytecode interpreter enabled. This was caused by an invalid + flag setting in the TrueType glyph loader, making the rasterizer + change its drop-out control mode. Now theresults should + _really_ be completely identical. - The TrueType name table loader has been improved to support many - popular though buggy Asian fonts. It now ignores empty name entries, - invalid pointer offsets and a few other incorrect subtleties. - Moreover, name strings are now loaded on demand, which reduces the - memory load of many faces (e.g. the ARIAL.TTF font file contains a - 10kByte name table with 70 names). + popular though buggy Asian fonts. It now ignores empty name + entries, invalid pointer offsets and a few other incorrect + subtleties. Moreover, name strings are now loaded on demand, + which reduces the memory load of many faces (e.g. the ARIAL.TTF + font file contains a 10kByte name table with 70 names). - Fixed a bug in the Postscript hinter that prevented family blues substitution to happen correctly. @@ -429,116 +449,119 @@ LATEST CHANGES BETWEEN 2.1.1 and 2.1.0 - Three new font drivers in this release: - * A BDF font driver, contributed by Franco Zappa Nardelli, heavily - modified by Werner Lemberg. It also supports anti-aliased bitmaps - (using a slightly extended BDF format). + * A BDF font driver, contributed by Franco Zappa Nardelli, + heavily modified by Werner Lemberg. It also supports + anti-aliased bitmaps (using a slightly extended BDF format). - * A Type42 font driver, contributed by Roberto Alameda. It is + * A Type42 font driver, contributed by Roberto Alameda. It is still experimental but seems to work relatively well. - * A PFR font driver, contributed by David Turner himself. It doesn't - support PFR hinting -- note that BitStream has at least two patents - on this format! + * A PFR font driver, contributed by David Turner himself. It + doesn't support PFR hinting -- note that BitStream has at + least two patents on this format! III. MISCELLANEOUS - - The cache sub-system has been optimized in important ways. Cache hits - are now significantly faster. For example, using the CMap cache is - about twice faster than calling FT_Get_Char_Index on most platforms. - Similarly, using an SBit cache is about five times faster than loading - the bitmaps from a bitmap file, and 300 to 500 times faster than - generating them from a scalable format. + - The cache sub-system has been optimized in important ways. + Cache hits are now significantly faster. For example, using the + CMap cache is about twice faster than calling FT_Get_Char_Index + on most platforms. Similarly, using an SBit cache is about five + times faster than loading the bitmaps from a bitmap file, and + 300 to 500 times faster than generating them from a scalable + format. - Note that you should recompile your sources if you designed a custom - cache class for the FT2 Cache subsystem, since the changes performed - are source, but not binary, compatible. + Note that you should recompile your sources if you designed a + custom cache class for the FT2 Cache subsystem, since the + changes performed are source, but not binary, compatible. -======================================================================== +====================================================================== LATEST CHANGES BETWEEN 2.1.0 and 2.0.9 I. IMPORTANT BUG FIXES - - The TrueType bytecode interpreter has been fixed to produce + - The TrueType bytecode interpreter has been fixed to produce _exactly_ the same output as FreeType 1.x. Previous differences - were due to slightly distinct fixed-point computation routines + were due to slightly distinct fixed-point computation routines used to perform dot products and vector length measurements. - It seems that native TrueType hinting is _extremely_ sensitive - to rounding errors. The required vector computation routines have - been optimized and placed within the "ttinterp.c" file. + It seems that native TrueType hinting is _extremely_ sensitive + to rounding errors. The required vector computation routines + have been optimized and placed within the "ttinterp.c" file. - Fixed the parsing of accelerator tables in the PCF font driver. - - Fixed the Type1 glyph loader routine used to compute the font's + - Fixed the Type1 glyph loader routine used to compute the font's maximum advance width. + II. NEW FEATURES - The `configure' script used on Unix systems has been modified to - check that GNU Make is being used to build the library. Otherwise, - it will display a message proposing to use the GNUMAKE environment - variable to name it. + check that GNU Make is being used to build the library. + Otherwise, it will display a message proposing to use the + GNUMAKE environment variable to name it. The Unix-specific file README.UNX has been modified accordingly. III. MISCELLANEOUS - - The FreeType License in `docs/FTL.txt' has been updated to include - a proposed preferred disclaimer. If you are using FreeType in your - products, you are encouraged (but not mandated) to use the following - text in your documentation: + - The FreeType License in `docs/FTL.txt' has been updated to + include a proposed preferred disclaimer. If you are using + FreeType in your products, you are encouraged (but not mandated) + to use the following text in your documentation: """ - Portions of this software are copyright © 1996-2002 The FreeType - Project (www.freetype.org). All rights reserved. + Portions of this software are copyright © 1996-2002 The + FreeType Project (www.freetype.org). All rights reserved. """ - The default size of the render pool has been reduced to 16kByte. - This shouldn't result in any noticeable performance penalty, unless - you are using the engine as-is to render very large and complex - glyphs. + This shouldn't result in any noticeable performance penalty, + unless you are using the engine as-is to render very large and + complex glyphs. - - The FreeType 2 redesign has begun. More information can be found - at this URL: + - The FreeType 2 redesign has begun. More information can be + found at this URL: http://www.freetype.org/freetype2/redesign.html - The following internal changes have been performed within the sources - of this release: + The following internal changes have been performed within the + sources of this release: - - Many internal types have been renamed to increase consistency. - The following should be true, except for public types: + - Many internal types have been renamed to increase + consistency. The following should be true, except for + public types: - * All structure types have a name ending in "Rec" (short for - `record'). + * All structure types have a name ending in "Rec" (short + for `record'). - * A pointer-to-structure type has the same name as the + * A pointer-to-structure type has the same name as the structure, _without_ the "Rec" suffix. - Example: + Example: - typedef struct FooRec_ - { - ... + typedef struct FooRec_ + { + ... - } FooRec, *Foo; + } FooRec, *Foo; - - Many internal macros have been renamed to increase consistency. - The following should be true: + - Many internal macros have been renamed to increase + consistency. The following should be true: - * All macros have a name beginning with "FT_". This required - a few changes like + * All macros have a name beginning with "FT_". This + required a few changes like ALLOC => FT_ALLOC FREE => FT_FREE REALLOC => FT_REALLOC - * All macros are completely UPPERCASE. This required a few - changes like: + * All macros are completely UPPERCASE. This required a + few changes like: READ_Short => FT_READ_SHORT NEXT_Short => FT_NEXT_SHORT @@ -547,7 +570,7 @@ LATEST CHANGES BETWEEN 2.1.0 and 2.0.9 MEM_Copy => FT_MEM_COPY etc. - * Whenever possible, all macro names follow the + * Whenever possible, all macro names follow the FT__ pattern. For example ACCESS_Frame => FT_FRAME_ENTER @@ -561,7 +584,7 @@ LATEST CHANGES BETWEEN 2.1.0 and 2.0.9 FILE_ReadAt => FT_STREAM_READ_AT READ_Fields => FT_STREAM_READ_FIELDS - - Many internal functions have been renamed to follow the + - Many internal functions have been renamed to follow the FT__ pattern. For example: FT_Seek_Stream => FT_Stream_Seek @@ -573,288 +596,299 @@ LATEST CHANGES BETWEEN 2.1.0 and 2.0.9 Note that method names do not contain "_". - - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced - with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a type - as the fourth argument. Instead, the array element type size - is computed automatically from the type of the target pointer - used. + - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced + with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a + type as the fourth argument. Instead, the array element + type size is computed automatically from the type of the + target pointer used. - - A new object class, FT_CMap, has been introduced. These - internal objects are used to model character maps. This eases - the support of additional charmap types within the engine. + - A new object class, FT_CMap, has been introduced. These + internal objects are used to model character maps. This + eases the support of additional charmap types within the + engine. - - A new configuration file named "ftstdlib.h" has been added - to `include/freetype/config'. It is used to define aliases - for _every_ routine of the ISO C library that the font engine - uses. Each aliases has a "ft_" prefix (e.g. "ft_strlen" is an - alias for "strlen"). + - A new configuration file named "ftstdlib.h" has been added + to `include/freetype/config'. It is used to define aliases + for _every_ routine of the ISO C library that the font + engine uses. Each aliases has a "ft_" prefix + (e.g. "ft_strlen" is an alias for "strlen"). - This is used to ease the porting of FreeType 2 to exotic runtime - environments where the ISO C Library isn't available (e.g. - XFree86 extension modules). + This is used to ease the porting of FreeType 2 to exotic + runtime environments where the ISO C Library isn't available + (e.g. XFree86 extension modules). More details are available in the "ChangeLog" file. -============================================================================ +====================================================================== LATEST CHANGES BETWEEN 2.0.9 and 2.0.8 I. IMPORTANT BUG FIXES - Certain fonts like "foxjump.ttf" contain broken name tables with - invalid entries and wild offsets. This caused FreeType to crash when - trying to load them. + invalid entries and wild offsets. This caused FreeType to crash + when trying to load them. - The SFNT `name' table loader has been fixed to be able to support - these strange fonts. + The SFNT `name' table loader has been fixed to be able to + support these strange fonts. - Moreover, the code in charge of processing this table has been changed - to always favour Windows-formatted entries over other ones. Hence, a - font that works on Windows but not on the Mac will load cleanly in - FreeType and report accurate values for Family & PostScript names. + Moreover, the code in charge of processing this table has been + changed to always favour Windows-formatted entries over other + ones. Hence, a font that works on Windows but not on the Mac + will load cleanly in FreeType and report accurate values for + Family & PostScript names. - The CID font driver has been fixed. It unfortunately returned a - Postscript Font name with a leading slash, as in + Postscript Font name with a leading slash, as in "/MunhwaGothic-Regular". - - FreeType 2 should now compile fine on AIX 4.3.3 as a shared library. + - FreeType 2 should now compile fine on AIX 4.3.3 as a shared + library. - - A bug in the Postscript hinter has been found and fixed, removing - un-even stem widths at small pixel sizes (like 14-17). + - A bug in the Postscript hinter has been found and fixed, + removing un-even stem widths at small pixel sizes (like 14-17). - This improves the quality of a certain number of Postscript fonts. + This improves the quality of a certain number of Postscript + fonts. II. NEW FEATURES - - A new function named `FT_Library_Version' has been added to return - the current library's major, minor, and patch version numbers. This - is important since the macros FREETYPE_MAJOR, FREETYPE_MINOR, and - FREETYPE_PATCH cannot be used when the library is dynamically linked - by a program. + - A new function named `FT_Library_Version' has been added to + return the current library's major, minor, and patch version + numbers. This is important since the macros FREETYPE_MAJOR, + FREETYPE_MINOR, and FREETYPE_PATCH cannot be used when the + library is dynamically linked by a program. - - Two new APIs have been added: `FT_Get_First_Char' and + - Two new APIs have been added: `FT_Get_First_Char' and `FT_Get_Next_Char'. - Together, these can be used to iterate efficiently over the currently - selected charmap of a given face. Read the API reference for more - details. + Together, these can be used to iterate efficiently over the + currently selected charmap of a given face. Read the API + reference for more details. III. MISCELLANEOUS - - The FreeType sources are under heavy internal re-factoring. As a - consequence, we have created a branch named "STABLE" on the CVS to - hold all future releases/fixes in the 2.0.x family. + - The FreeType sources are under heavy internal re-factoring. As + a consequence, we have created a branch named "STABLE" on the + CVS to hold all future releases/fixes in the 2.0.x family. - The HEAD branch now contains the re-factored sources and shouldn't be - used for testing or packaging new releases. In case you would like - to access the 2.0.9 sources from our CVS repository, use the tag - `VER-2-0-9'. + The HEAD branch now contains the re-factored sources and + shouldn't be used for testing or packaging new releases. In + case you would like to access the 2.0.9 sources from our CVS + repository, use the tag `VER-2-0-9'. -============================================================================ +====================================================================== LATEST CHANGES BETWEEN 2.0.8 and 2.0.7 I. IMPORTANT BUG FIXES - - There was a small but nasty bug in "freetype-config.in" which + - There was a small but nasty bug in "freetype-config.in" which caused the "freetype-config" script to fail on Unix. - This didn't prevent the installation of the library or even - its execution, but caused problems when trying to compile many - Unix packages that depend on it. + This didn't prevent the installation of the library or even its + execution, but caused problems when trying to compile many Unix + packages that depend on it. - - Some TrueType or OpenType fonts embedded in PDF documents do - not have a 'cmap', 'post' and 'name' as is required by the + - Some TrueType or OpenType fonts embedded in PDF documents do not + have a 'cmap', 'post' and 'name' as is required by the specification. FreeType no longer refuses to load such fonts. - - various fixes to the PCF font driver + - Various fixes to the PCF font driver. -============================================================================ +====================================================================== LATEST CHANGES BETWEEN 2.0.7 and 2.0.6 I. IMPORTANT BUG FIXES - - Fixed two bugs in the Type 1 font driver. The first one resulted in a - memory leak in subtle cases. The other one caused FreeType to crash - when trying to load ".gsf" files (Ghostscript so-called Postscript - fonts). + - Fixed two bugs in the Type 1 font driver. The first one + resulted in a memory leak in subtle cases. The other one caused + FreeType to crash when trying to load ".gsf" files (Ghostscript + so-called Postscript fonts). - (This made _many_ KDE applications crash on certain systems. FreeType - _is_ becoming a critical system component on Linux :-) + (This made _many_ KDE applications crash on certain systems. + FreeType _is_ becoming a critical system component on Linux :-) - Fixed a memory leak in the CFF font driver. - Fixed a memory leak in the PCF font driver. - - Fixed the Visual C++ project file "builds/win32/visualc/freetype.dsp" - since it didn't include the Postscript hinter component, causing - errors at build time. + - Fixed the Visual C++ project file + "builds/win32/visualc/freetype.dsp" since it didn't include the + Postscript hinter component, causing errors at build time. - - Fixed a small rendering bug in the anti-aliased renderer that only - occurred when trying to draw thin (less than 1 pixel) strokes. + - Fixed a small rendering bug in the anti-aliased renderer that + only occurred when trying to draw thin (less than 1 pixel) + strokes. - - Fixed "builds/unix/freetype2.a4" which is used to generate a valid - "freetype2.m4" for use with autoconf. + - Fixed "builds/unix/freetype2.a4" which is used to generate a + valid "freetype2.m4" for use with autoconf. - Fixed the OpenVMS Makefiles. II. MISCELLANEOUS - - Added "configure" and "install" scripts to the top-level directory. - A GNU-style installation is thus now easily possible with + - Added "configure" and "install" scripts to the top-level + directory. A GNU-style installation is thus now easily possible + with - ./configure - make - make install + ./configure + make + make install -============================================================================ +====================================================================== LATEST CHANGES BETWEEN 2.0.6 and 2.0.5 I. IMPORTANT BUG FIXES - - It wasn't possible to load embedded bitmaps when the auto-hinter was - used. This is now fixed. + - It wasn't possible to load embedded bitmaps when the auto-hinter + was used. This is now fixed. - - The TrueType font driver didn't load some composites properly (the - sub-glyphs were slightly shifted, and this was only noticeable when - using monochrome rendering). + - The TrueType font driver didn't load some composites properly + (the sub-glyphs were slightly shifted, and this was only + noticeable when using monochrome rendering). - - Various fixes to the auto-hinter. They merely improve the output of - sans-serif fonts. Note that there are still problems with serifed - fonts and composites (accented characters). + - Various fixes to the auto-hinter. They merely improve the + output of sans-serif fonts. Note that there are still problems + with serifed fonts and composites (accented characters). - - All scalable font drivers erroneously returned un-fitted glyph - advances when hinting was requested. This created problems for a - number of layout applications. This is a very old bug that got - undetected mainly because most test/demo program perform rounding - explicitly or implicitly (through the cache). + - All scalable font drivers erroneously returned un-fitted glyph + advances when hinting was requested. This created problems for + a number of layout applications. This is a very old bug that + got undetected mainly because most test/demo program perform + rounding explicitly or implicitly (through the cache). - - FT_Glyph_To_Bitmap() did erroneously modify the source glyph in + - FT_Glyph_To_Bitmap() did erroneously modify the source glyph in certain cases. - - "glnames.py" still contained a bug that made FreeType return invalid - names for certain glyphs. + - "glnames.py" still contained a bug that made FreeType return + invalid names for certain glyphs. - - The library crashed when loading certain Type 1 fonts like "sadn.pfb" - ("Stalingrad Normal"), which appear to contain pathetic font info - dictionaries. + - The library crashed when loading certain Type 1 fonts like + "sadn.pfb" ("Stalingrad Normal"), which appear to contain + pathetic font info dictionaries. - - The TrueType glyph loader is now much more paranoid and checks everything - when loading a given glyph image. This was necessary to avoid - problems (crashes and/or memory overwrites) with broken fonts that - came from a really buggy automatic font converter. + - The TrueType glyph loader is now much more paranoid and checks + everything when loading a given glyph image. This was necessary + to avoid problems (crashes and/or memory overwrites) with broken + fonts that came from a really buggy automatic font converter. II. IMPORTANT UPDATES AND NEW FEATURES - Important updates to the Mac-specific parts of the library. - - The caching sub-system has been completely re-designed, and its API - has evolved (the old one is still supported for backwards + - The caching sub-system has been completely re-designed, and its + API has evolved (the old one is still supported for backwards compatibility). - The documentation for it is not yet completed, sorry. For now, you - are encouraged to continue using the old API. However, the ftview - demo program in the ft2demos package has already been updated to use - the new caching functions. + The documentation for it is not yet completed, sorry. For now, + you are encouraged to continue using the old API. However, the + ftview demo program in the ft2demos package has already been + updated to use the new caching functions. - - A new charmap cache is provided too. See FTC_CMapCache(). This is - useful to perform character code -> glyph index translations quickly, - without the need for an opened FT_Face. + - A new charmap cache is provided too. See FTC_CMapCache(). This + is useful to perform character code -> glyph index translations + quickly, without the need for an opened FT_Face. - - A NEW POSTSCRIPT HINTER module has been added to support native hints - in the following formats: PostScript Type 1, PostScript CID, and - CFF/CEF. + - A NEW POSTSCRIPT HINTER module has been added to support native + hints in the following formats: PostScript Type 1, PostScript + CID, and CFF/CEF. - Please test! Note that the auto-hinter produces better results for a - number of badly-hinted fonts (mostly auto-generated ones) though. + Please test! Note that the auto-hinter produces better results + for a number of badly-hinted fonts (mostly auto-generated ones) + though. - - A memory debugger is now part of the standard FreeType sources. To - enable it, define FT_DEBUG_MEMORY in , and - recompile the library. + - A memory debugger is now part of the standard FreeType sources. + To enable it, define FT_DEBUG_MEMORY in + , and recompile the library. - Additionally, define the _environment_ variable FT_DEBUG_MEMORY and - run any program using FreeType. When the library is exited, a summary - of memory footprints and possible leaks will be displayed. + Additionally, define the _environment_ variable FT_DEBUG_MEMORY + and run any program using FreeType. When the library is exited, + a summary of memory footprints and possible leaks will be + displayed. - This works transparently with _any_ program that uses FreeType. - However, you will need a lot of memory to use this (allocated blocks - are never released to the heap to detect double deletes easily). + This works transparently with _any_ program that uses FreeType. + However, you will need a lot of memory to use this (allocated + blocks are never released to the heap to detect double deletes + easily). III. MISCELLANEOUS - - We are aware of subtle differences between the output of FreeType - versions 1 and 2 when it comes to monochrome TrueType-hinted glyphs. - These are most probably due to small differences in the monochrome - rasterizers and will be worked out in an upcoming release. + - We are aware of subtle differences between the output of + FreeType versions 1 and 2 when it comes to monochrome + TrueType-hinted glyphs. These are most probably due to small + differences in the monochrome rasterizers and will be worked out + in an upcoming release. - We have decided to fork the sources in a "stable" branch, and an - "unstable" one, since FreeType is becoming a critical component of - many Unix systems. + "unstable" one, since FreeType is becoming a critical component + of many Unix systems. - The next bug-fix releases of the library will be named 2.0.7, 2.0.8, - etc., while the "2.1" branch will contain a version of the sources - where we will start major reworking of the library's internals, in - order to produce FreeType 2.2.0 (or even 3.0) in a more distant - future. + The next bug-fix releases of the library will be named 2.0.7, + 2.0.8, etc., while the "2.1" branch will contain a version of + the sources where we will start major reworking of the library's + internals, in order to produce FreeType 2.2.0 (or even 3.0) in a + more distant future. - We also hope that this scheme will allow much more frequent releases - than in the past. + We also hope that this scheme will allow much more frequent + releases than in the past. -============================================================================ +====================================================================== LATEST CHANGES BETWEEN 2.0.5 and 2.0.4 - NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER. THIS MODULE WILL - BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1) + NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER. THIS MODULE + WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1) - - Fixed a bug that made certain glyphs, like "Cacute", "cacute" and - "lslash" unavailable from Unicode charmaps of Postscript fonts. This - prevented the correct display of Polish text, for example. + - Fixed a bug that made certain glyphs, like "Cacute", "cacute" and + "lslash" unavailable from Unicode charmaps of Postscript fonts. + This prevented the correct display of Polish text, for example. - - The kerning table of Type 1 fonts was loaded by FreeType, when its AFM - file was attached to its face, but the FT_FACE_FLAG_HAS_KERNING bit - flags was not set correctly, preventing FT_Get_Kerning to return - meaningful values. + - The kerning table of Type 1 fonts was loaded by FreeType, when its + AFM file was attached to its face, but the + FT_FACE_FLAG_HAS_KERNING bit flags was not set correctly, + preventing FT_Get_Kerning to return meaningful values. - - Improved SFNT (TrueType & OpenType) charmap support. Slightly better - performance, as well as support for the new formats defined by the - OpenType 1.3 specification (8, 10, and 12) + - Improved SFNT (TrueType & OpenType) charmap support. Slightly + better performance, as well as support for the new formats defined + by the OpenType 1.3 specification (8, 10, and 12) - - Fixed a serious typo in "src/base/ftcalc.c" which caused invalid + - Fixed a serious typo in "src/base/ftcalc.c" which caused invalid computations in certain rare cases, producing ugly artefacts. - - The size of the EM square is computed with a more accurate algorithm - for Postscript fonts. The old one caused slight errors with embedded - fonts found in PDF documents. + - The size of the EM square is computed with a more accurate + algorithm for Postscript fonts. The old one caused slight errors + with embedded fonts found in PDF documents. - - Fixed a bug in the cache manager that prevented normal LRU behaviour - within the cache manager, causing unnecessary reloads (for FT_Face and - FT_Size objects only). + - Fixed a bug in the cache manager that prevented normal LRU + behaviour within the cache manager, causing unnecessary reloads + (for FT_Face and FT_Size objects only). - - Added a new function named "FT_Get_Name_Index" to retrieve the glyph - index of a given glyph name, when found in a face. + - Added a new function named "FT_Get_Name_Index" to retrieve the + glyph index of a given glyph name, when found in a face. - - Added a new function named "FT_Get_Postscript_Name" to retrieve the - "unique" Postscript font name of a given face. + - Added a new function named "FT_Get_Postscript_Name" to retrieve + the "unique" Postscript font name of a given face. - - Added a new public header size named FT_SIZES_H (or - ) providing new FT_Size-management functions: + - Added a new public header size named FT_SIZES_H (or + ) providing new FT_Size-management functions: FT_New_Size, FT_Activate_Size, FT_Done_Size. - - Fixed a reallocation bug that generated a dangling pointer (and possibly - memory leaks) with Postscript fonts (in src/psaux/psobjs.c). + - Fixed a reallocation bug that generated a dangling pointer (and + possibly memory leaks) with Postscript fonts (in + src/psaux/psobjs.c). - Many fixes for 16-bit correctness. @@ -862,149 +896,156 @@ LATEST CHANGES BETWEEN 2.0.5 and 2.0.4 - Added an Amiga build directory in "builds/amiga". -============================================================================ + +====================================================================== LATEST CHANGES BETWEEN 2.0.4 and 2.0.3 - - Fixed a rather annoying bug that was introduced in 2.0.3. Namely, the - font transformation set through FT_Set_Transform was applied twice to - auto-hinted glyphs, resulting in incorrectly rotated text output. + - Fixed a rather annoying bug that was introduced in 2.0.3. Namely, + the font transformation set through FT_Set_Transform was applied + twice to auto-hinted glyphs, resulting in incorrectly rotated text + output. - - Fixed _many_ compiler warnings. FT2 should now compile cleanly with - Visual C++'s most pedantic warning level (/W4). It already compiled - fine with GCC and a few other compilers. + - Fixed _many_ compiler warnings. FT2 should now compile cleanly + with Visual C++'s most pedantic warning level (/W4). It already + compiled fine with GCC and a few other compilers. - - Fixed a bug that prevented the linear advance width of composite + - Fixed a bug that prevented the linear advance width of composite TrueType glyphs to be correctly returned. - - Fixed the Visual C++ project files located in "builds/win32/visualc" - (previous versions used older names of the library). + - Fixed the Visual C++ project files located in + "builds/win32/visualc" (previous versions used older names of the + library). - - Many 32-bit constants have an "L" appended to their value, in order - to improve the 16-bitness of the code. Someone is actually trying to - use FT2 on an Atari ST machine! + - Many 32-bit constants have an "L" appended to their value, in + order to improve the 16-bitness of the code. Someone is actually + trying to use FT2 on an Atari ST machine! - - Updated the "builds/detect.mk" file in order to automatically build - FT2 on AIX systems. AIX uses "/usr/sbin/init" instead of "/sbin/init" - and wasn't previously detected as a Unix platform by the FreeType build - system. + - Updated the "builds/detect.mk" file in order to automatically + build FT2 on AIX systems. AIX uses "/usr/sbin/init" instead of + "/sbin/init" and wasn't previously detected as a Unix platform by + the FreeType build system. - - Updated the Unix-specific portions of the build system (new libtool - version, etc.). + - Updated the Unix-specific portions of the build system (new + libtool version, etc.). - - The SFNT kerning lodaer now ensures that the table is sorted (since some - problem fonts do not meet this requirement). + - The SFNT kerning lodaer now ensures that the table is sorted + (since some problem fonts do not meet this requirement). -============================================================================ + +======================================================================= LATEST CHANGES BETWEEN 2.0.3 and 2.0.2 I. CHANGES TO THE MODULES / FONT DRIVERS - - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix several - annoying artefacts, mainly: + - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix + several annoying artefacts, mainly: - - Blue zone alignement of horizontal stems wasn't performed - correctly, resulting in artefacts like the "d" being placed one - pixel below the "b" in some fonts like Time New Roman. + - Blue zone alignement of horizontal stems wasn't performed + correctly, resulting in artefacts like the "d" being placed + one pixel below the "b" in some fonts like Time New Roman. - - Overshoot thresholding wasn't performed correctly, creating + - Overshoot thresholding wasn't performed correctly, creating unpleasant artefacts at large character pixel sizes. - - Composite glyph loading has been simplified. This gets rid - of various artefacts where the components of a composite glyphs - were not correctly spaced. + - Composite glyph loading has been simplified. This gets rid + of various artefacts where the components of a composite + glyphs were not correctly spaced. - These are the last changes to the current auto-hinting module. A new - hinting sub-system is currently in the work in order to support native - hints in Type 1 / CFF / OpenType fonts, as well as globally improve - rendering. + These are the last changes to the current auto-hinting module. + A new hinting sub-system is currently in the work in order to + support native hints in Type 1 / CFF / OpenType fonts, as well + as globally improve rendering. - - The PCF driver has been fixed. It reported invalid glyph dimensions - for the fonts available on Solaris. + - The PCF driver has been fixed. It reported invalid glyph + dimensions for the fonts available on Solaris. - - The Type 1, CID and CFF drivers have been modified to fix the + - The Type 1, CID and CFF drivers have been modified to fix the computation of the EM size. - - The Type 1 driver has been fixed to avoid a dangerous bug that - crashed the library with non-conforming fonts (i.e. ones that do not - place the .notdef glyph at position 0). + - The Type 1 driver has been fixed to avoid a dangerous bug that + crashed the library with non-conforming fonts (i.e. ones that do + not place the .notdef glyph at position 0). - - The TrueType driver had a rather subtle bug (dangling pointer when - loading composite glyphs) that could crash the library in rare - occasions! + - The TrueType driver had a rather subtle bug (dangling pointer + when loading composite glyphs) that could crash the library in + rare occasions! II. HIGH-LEVEL API CHANGES - - The error code enumeration values have been changed. An error value - is decomposed in a generic error code, and a module number. see - for details. + - The error code enumeration values have been changed. An error + value is decomposed in a generic error code, and a module + number. see for details. - - A new public header file has been introduced, named FT_TRIGONOMETRY_H - (include/freetype/fttrig.h), providing trigonometric functions to - compute sines, cosines, arctangents, etc. with 16.16 fixed precision. - The implementation is based on the CORDIC algorithm and is very fast - while being sufficiently accurate. + - A new public header file has been introduced, named + FT_TRIGONOMETRY_H (include/freetype/fttrig.h), providing + trigonometric functions to compute sines, cosines, arctangents, + etc. with 16.16 fixed precision. The implementation is based on + the CORDIC algorithm and is very fast while being sufficiently + accurate. III. INTERNALS - - Added BeOS-specific files in the old build sub-system. Note that - no changes were required to compile the library with Jam. + - Added BeOS-specific files in the old build sub-system. Note + that no changes were required to compile the library with Jam. - - The configuration is now capable of automatically detecting 64-bit - integers on a set of predefined compilers (GCC, Visual C++, Borland - C++) and will use them by default. This provides a small performance - boost. + - The configuration is now capable of automatically detecting + 64-bit integers on a set of predefined compilers (GCC, Visual + C++, Borland C++) and will use them by default. This provides a + small performance boost. - - A small memory leak that happened when opening 0-sized files (duh!) - have been fixed. + - A small memory leak that happened when opening 0-sized files + (duh!) have been fixed. - - Fixed bezier stack depth bug in the routines provided by the - FT_BBOX_H header file. Also fixed similar bugs in the rasterizers. + - Fixed bezier stack depth bug in the routines provided by the + FT_BBOX_H header file. Also fixed similar bugs in the + rasterizers. - - The outline bounding box code has been rewritten to use direct - computations, instead of bezier sub-division, to compute the exact - bounding box of glyphs. This is slightly slower but more accurate. + - The outline bounding box code has been rewritten to use direct + computations, instead of bezier sub-division, to compute the + exact bounding box of glyphs. This is slightly slower but more + accurate. - - The build system has been improved and fixed, mainly to support "make" - on Windows 2000 correctly, avoid problems with "make distclean" on non - Unix systems, etc. + - The build system has been improved and fixed, mainly to support + "make" on Windows 2000 correctly, avoid problems with "make + distclean" on non Unix systems, etc. - - Hexadecimal constants have been suffixed with "U" to avoid problems - with certain compilers on 64-bit platforms. + - Hexadecimal constants have been suffixed with "U" to avoid + problems with certain compilers on 64-bit platforms. - A new directory named "src/tools" has been created. It contains Python scripts and simple unit test programs used to develop the library. - - The DocMaker tool has been moved from "docs" to "src/tools" and + - The DocMaker tool has been moved from "docs" to "src/tools" and has been updated with the following: - Now accepts the "--title=XXXX" or "-t XXXX" option from the command line to set the project's name in the generated API reference. - - Now accepts the "--output=DIR" or "-o DIR" option from the - command line to set the output directory for all generated HTML - files. + - Now accepts the "--output=DIR" or "-o DIR" option from the + command line to set the output directory for all generated + HTML files. - Now accepts the "--prefix=XXXX" or "-p XXX" option from the - command line to set the file prefix to use for all generated HTML - files. + command line to set the file prefix to use for all + generated HTML files. - - Now generates the current time/data on each generated page + - Now generates the current time/data on each generated page in order to distinguish between versions. - DocMaker can be used with other projects now, not only FT2 (e.g. MLib, - FTLayout, etc.). + DocMaker can be used with other projects now, not only FT2 + (e.g. MLib, FTLayout, etc.). -=========================================================================== + +====================================================================== LATEST CHANGES BETWEEN 2.0.2 and 2.0.1 - I. CHANGES TO THE MODULES / FONT DRIVERS - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to @@ -1445,7 +1486,7 @@ BETA-8 (RELEASE CANDIDATE) CHANGES * Support for transforms and direct rendering in FT_Load_Glyph: Most of the functionality found in has been - moved to the core library. Hence, the following: + moved to the core library. Hence, the following: - A transform can be specified for a face through FT_Set_Transform. this transform is applied by FT_Load_Glyph @@ -1476,7 +1517,7 @@ BETA-8 (RELEASE CANDIDATE) CHANGES OLD CHANGES FOR BETA 7 - - bug-fixed the OpenType/CFF parser. It now loads and displays my + - bug-fixed the OpenType/CFF parser. It now loads and displays my two fonts nicely, but I'm pretty certain that more testing is needed :-) @@ -1484,20 +1525,20 @@ OLD CHANGES FOR BETA 7 correctly (well, the accent is not always well placed, but that's another problem..) - - added the CID-keyed Type 1 driver in "src/cid". Works pretty well + - added the CID-keyed Type 1 driver in "src/cid". Works pretty well for only 13 Kb of code ;-) Doesn't read AFM files though, nor the really useful CMAP files.. - - fixed two bugs in the smooth renderer (src/base/ftgrays.c). Thanks - to Boris Letocha for spotting them and providing a fix.. + - fixed two bugs in the smooth renderer (src/base/ftgrays.c). + Thanks to Boris Letocha for spotting them and providing a fix. - - fixed potential "divide by zero" bugs in ftcalc.c.. my god.. + - fixed potential "divide by zero" bugs in ftcalc.c. - added source code for the OpenType/CFF driver (still incomplete though..) - modified the SFNT driver slightly to perform more robust header - checks in TT_Load_SFNT_Header. This prevents certain font files + checks in TT_Load_SFNT_Header. This prevents certain font files (e.g. some Type 1 Multiple Masters) from being incorrectly "recognized" as TrueType font files.. @@ -1508,8 +1549,8 @@ OLD CHANGES FOR BETA 7 - added a tiny segment cache to the SFNT Charmap 4 decoder, in order to minimally speed it up.. - - added support for Multiple Master fonts in "type1z". There is also - a new file named which defines functions to + - added support for Multiple Master fonts in "type1z". There is + also a new file named which defines functions to manage them from client applications. The new file "src/base/ftmm.c" is also optional to the engine.. @@ -1521,7 +1562,7 @@ OLD CHANGES FOR BETA 7 correctly (used for many oblique fonts..) - some fixes for 64-bit systems (mainly changing some FT_TRACE calls - to use %p instead of %lx).. Thanks to Karl Robillard + to use %p instead of %lx). Thanks to Karl Robillard. - fixed some bugs in the sbit loader (src/base/sfnt/ttsbit.c) + added a new flag, FT_LOAD_CROP_BITMAP to query that bitmaps be @@ -1540,7 +1581,7 @@ OLD CHANGES FOR BETA 7 OLD CHANGES 16 May 2000 - - tagged "BETA-6" in the CVS tree. This one is a serious release + - tagged "BETA-6" in the CVS tree. This one is a serious release candidate even though it doesn't incorporate the auto-hinter yet.. - various obsolete files were removed, and copyright header updated @@ -1570,8 +1611,8 @@ OLD CHANGES 16 May 2000 | | It seems the C pre-processor that comes with LCC is broken, it | doesn't recognize the ANSI standard directives # and ## - | correctly when one of the argument is a macro. Also, something - | like: + | correctly when one of the argument is a macro. Also, + | something like: | | #define F(x) print##x | @@ -1581,12 +1622,12 @@ OLD CHANGES 16 May 2000 | | print "hello") | - | by its pre-processor. For this reason, you simply cannot build + | by its pre-processor. For this reason, you simply cannot build | FreeType 2 in debug mode with this compiler.. - - yet another massive grunt work. I've changed the definition of the - EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These now - take an argument, which is the function's return value type. + - yet another massive grunt work. I've changed the definition of + the EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These + now take an argument, which is the function's return value type. This is necessary to compile FreeType as a DLL on Windows and OS/2. Depending on the compiler used, a compiler-specific keyword @@ -1594,7 +1635,7 @@ OLD CHANGES 16 May 2000 after (BorlandC++) the type.. Of course, this needed a lot of changes throughout the source code - to make it compile again... All cleaned up now, apparently.. + to make it compile again... All cleaned up now, apparently.. Note also that there is a new EXPORT_VAR macro defined to allow the _declaration_ of an exportable public (constant) @@ -1623,17 +1664,17 @@ OLD CHANGES 16 May 2000 (the implementation was already in "ftobjs.c"). - the file has been seriously updated in order - to allow the automatic generation of error message tables. See the - comments within it for more information. + to allow the automatic generation of error message tables. See + the comments within it for more information. - - major directory hierarchy re-organisation. This was done for two + - major directory hierarchy re-organisation. This was done for two things: * first, to ease the "manual" compilation of the library by requiring at lot less include paths :-) * second, to allow external programs to effectively access - internal data fields. For example, this can be extremely + internal data fields. For example, this can be extremely useful if someone wants to write a font producer or a font manager on top of FreeType. @@ -1646,14 +1687,15 @@ OLD CHANGES 16 May 2000 Some new include sub-directories are available: a. the "freetype/config" directory, contains two files used to - configure the build of the library. Client applications should - not need to look at these normally, but they can if they want. + configure the build of the library. Client applications + should not need to look at these normally, but they can if + they want. #include #include b. the "freetype/internal" directory, contains header files that - describes library internals. These are the header files that + describes library internals. These are the header files that were previously found in the "src/base" and "src/shared" directories. @@ -1736,9 +1778,9 @@ OLD CHANGES - 14-apr-2000 to handle the new XFree86 4.0 fonts (and a few other ones..) - the smooth renderer is now complete and supports sub-banding to - render large glyphs at high speed. However, it is still located in - "demos/src/ftgrays.c" and should move to the library itself in the - next beta.. NOTE: The smooth renderer doesn't compile in + render large glyphs at high speed. However, it is still located + in "demos/src/ftgrays.c" and should move to the library itself in + the next beta. NOTE: The smooth renderer doesn't compile in stand-alone mode anymore, but this should be fixed RSN.. - introduced convenience functions to more easily deal with glyph @@ -1751,14 +1793,14 @@ OLD CHANGES - 14-apr-2000 results). - changed the raster interface, in order to allow client - applications to provide their own span-drawing callbacks. However, - only the smooth renderer supports this. See "FT_Raster_Params" in - the file "include/ftimage.h" + applications to provide their own span-drawing callbacks. + However, only the smooth renderer supports this. See + "FT_Raster_Params" in the file "include/ftimage.h". - fixed a small bug in FT_MulFix that caused incorrect transform computation! - - Note: The tutorial is out-of-date, grumpf.. :-( + - Note: The tutorial is out-of-date. ====================================================================== @@ -1800,7 +1842,7 @@ OLD CHANGES - 12-mar-2000 OLD CHANGES - 22-feb-2000 - - introduced the "psnames" module. It is used to: + - introduced the "psnames" module. It is used to: o convert a Postscript glyph name into the equivalent Unicode character code (used by the Type 1 driver(s) to synthetize on @@ -1812,16 +1854,16 @@ OLD CHANGES - 22-feb-2000 names support routines, while the other two tables are used by the Type 1 driver(s)). - - introduced the "type1z" alternate Type 1 driver. This is a (still + - introduced the "type1z" alternate Type 1 driver. This is a (still experimental) driver for the Type 1 format that will ultimately - replace the one in "src/type1". It uses pattern matching to load - data from the font, instead of a finite state analyzer. It works - much better than the "old" driver with "broken" fonts. It is also + replace the one in "src/type1". It uses pattern matching to load + data from the font, instead of a finite state analyzer. It works + much better than the "old" driver with "broken" fonts. It is also much smaller (under 15 Kb). - the Type 1 drivers (both in "src/type1" and "src/type1z") are nearly complete. They both provide automatic Unicode charmap - synthesis through the "psnames" module. No re-encoding vector is + synthesis through the "psnames" module. No re-encoding vector is needed. (note that they still leak memory due to some code missing, and I'm getting lazy). @@ -1829,7 +1871,7 @@ OLD CHANGES - 22-feb-2000 wasn't exactly tested as it should ;-) - The TrueType glyph loader has been seriously rewritten (see the - file "src/truetype/ttgload.c". It is now much, much simpler as + file "src/truetype/ttgload.c". It is now much, much simpler as well as easier to read, maintain and understand :-) Preliminary versions introduced a memory leak that has been reported by Jack Davis, and is now fixed.. @@ -1880,7 +1922,7 @@ OLDER CHANGES - 27-jan-2000 drivers to co-exist peacefully - updated the "T1_Face" type to better separate Postscript font - content from the rest of the FT_Face structure. Might be used + content from the rest of the FT_Face structure. Might be used later by the CFF/Type2 driver.. - added an experimental replacement Type 1 driver featuring advanced @@ -1932,9 +1974,9 @@ High-Level Interface: field "face->glyph.format" - the list of available charmaps is directly accessible through - "face->charmaps", counting "face->num_charmaps" elements. Each + "face->charmaps", counting "face->num_charmaps" elements. Each charmap has an 'encoding' field which specifies which known - encoding it deals with. Valid values are, for example : + encoding it deals with. Valid values are, for example: ft_encoding_unicode (for ASCII, Latin-1 and Unicode) ft_encoding_apple_roman @@ -1942,7 +1984,7 @@ High-Level Interface: ft_encoding_adobe_standard ft_encoding_adobe_expert - other values may be added in the future. Each charmap still + other values may be added in the future. Each charmap still holds its "platform_id" and "encoding_id" values in case the encoding is too exotic for the current library @@ -1992,12 +2034,12 @@ Glyph Image Formats: should encompass all known bitmap types. Each new image format must provide at least one "raster", i.e. a - module capable of transforming the glyph image into a bitmap. It's + module capable of transforming the glyph image into a bitmap. It's also possible to change the default raster used for a given glyph image format. The default outline scan-converter now uses 128 levels of grays by - default, which tends to smooth many things. Note that the demo + default, which tends to smooth many things. Note that the demo programs have been updated significantly in order to display these.. @@ -2012,7 +2054,7 @@ Build system: it is not detected, with pseudo-standard compilation flags) - the ability to compile from the Makefiles with very different and - exotic compilers. Note that linking the library can be difficult + exotic compilers. Note that linking the library can be difficult for some platforms. For example, the file `config/win32/lcclib.bat' is invoked by the @@ -2023,9 +2065,9 @@ Build system: Here's how it works: - the first time you type `make', the build system runs a series of - sub-makefiles in order to detect your host platform. It then dumps - what it found, and creates a file called `config.mk' in the - current directory. This is a sub-Makefile used to define many + sub-makefiles in order to detect your host platform. It then + dumps what it found, and creates a file called `config.mk' in the + current directory. This is a sub-Makefile used to define many important Make variables used to build the library. - the second time, the build system detects the `config.mk' then use @@ -2039,7 +2081,7 @@ Build system: re-run make. Finally, the default compiler for all platforms is gcc (for now, - this will hopefully changed in the future). You can however specify + this will hopefully changed in the future). You can however specify a different compiler by specifying it after the 'setup' target as in: @@ -2063,7 +2105,7 @@ Portability: In the previous beta, a single FT_System object was used to encompass all low-level operations like thread synchronisation, - memory management and i/o access. This has been greatly simplified: + memory management and i/o access. This has been greatly simplified: - thread synchronisation has been dropped, for the simple reason that the library is already re-entrant, and that if you really @@ -2077,12 +2119,12 @@ Portability: - resources have disappeared (they created more problems than they solved), and i/o management have been simplified greatly as a - result. Streams are defined through FT_Stream objects, which can - be either memory-based or disk-based. + result. Streams are defined through FT_Stream objects, which + can be either memory-based or disk-based. Note that each face has its own stream, which is closed only when the face object is destroyed. Hence, a function like - TT_Flush_Face in 1.x cannot be directly supported. However, if + TT_Flush_Face in 1.x cannot be directly supported. However, if you really need something like this, you can easily tailor your own streams to achieve the same feature at a lower level (and use FT_Open_Face instead of FT_New_Face to create the face). @@ -2103,18 +2145,19 @@ Font Drivers: library at compile time is managed through a new configuration file called `config//ftmodule.h'. - This file is autogenerated when invoking `make modules'. This target - will parse all sub-directories of 'src', looking for a "module.mk" - rules file, used to describe the driver to the build system. + This file is autogenerated when invoking `make modules'. This + target will parse all sub-directories of 'src', looking for a + "module.mk" rules file, used to describe the driver to the build + system. Hence, one should call `make modules' each time a font driver is added or removed from the `src' directory. - Finally, this version provides a "pseudo-driver" in `src/sfnt'. This - driver doesn't support font files directly, but provides services - used by all TrueType-like font drivers. Hence, its code is shared - between the TrueType & OpenType font formats, and possibly more - formats to come if we're lucky.. + Finally, this version provides a "pseudo-driver" in `src/sfnt'. + This driver doesn't support font files directly, but provides + services used by all TrueType-like font drivers. Hence, its code is + shared between the TrueType & OpenType font formats, and possibly + more formats to come if we're lucky.. ---------------------------------------------------------------------- @@ -2128,14 +2171,14 @@ Extensions support: driver. Extension ids are now strings, rather than 4-byte tags, as this is - usually more readable.. + usually more readable. Each extension has: - some data, associated to each face object - an interface (table of function pointers) An extension that is format-specific should simply register itself - to the correct font driver. Here is some example code: + to the correct font driver. Here is some example code: // Registering an extensions // diff --git a/include/freetype/internal/ftserv.h b/include/freetype/internal/ftserv.h index 5e2c32f26..ac755130e 100644 --- a/include/freetype/internal/ftserv.h +++ b/include/freetype/internal/ftserv.h @@ -135,5 +135,6 @@ #define FT_SERVICE_GLYPH_DICT_H #define FT_SERVICE_BDF_H #define FT_SERVICE_XFREE86_NAME_H +#define FT_SERVICE_SFNT_H #endif /* __FT_SERVICE_H__ */ diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c index e50011f8f..6a06e3df1 100644 --- a/src/base/ftobjs.c +++ b/src/base/ftobjs.c @@ -27,6 +27,7 @@ #include FT_TRUETYPE_IDS_H #include FT_OUTLINE_H +#include FT_SERVICE_SFNT_H #include FT_SERVICE_POSTSCRIPT_NAME_H #include FT_SERVICE_GLYPH_DICT_H diff --git a/src/cff/cffdrivr.c b/src/cff/cffdrivr.c index 19c7fa8dc..b018a938b 100644 --- a/src/cff/cffdrivr.c +++ b/src/cff/cffdrivr.c @@ -217,8 +217,6 @@ * */ -#include FT_SERVICE_GLYPH_DICT_H - static FT_Error cff_get_glyph_name( CFF_Face face, FT_UInt glyph_index,