From a16c4a7129d79c18ed74cdf825b67fe17d4707cb Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Mon, 21 Apr 2003 13:30:27 +0000 Subject: [PATCH] * doc/INSTALL.UNX: Cleaned up. Other minor fixes/beautifying/formatting. --- ChangeLog | 275 ++++++++++++++++------------- Jamfile | 63 +++---- Jamfile.in | 64 +++---- Jamrules | 4 +- README | 26 ++- builds/unix/configure.ac | 3 - devel/ft2build.h | 14 +- devel/ftoption.h | 6 +- docs/CHANGES | 120 +++++++------ docs/CUSTOMIZE | 134 +++++++------- docs/DEBUG | 76 ++++---- docs/INSTALL | 73 ++++---- docs/INSTALL.ANY | 119 +++++++------ docs/INSTALL.GNU | 159 +++++++++-------- docs/INSTALL.UNX | 193 ++++---------------- docs/INSTALL.VMS | 15 +- docs/TODO | 12 +- docs/TRUETYPE | 17 +- docs/UPGRADE.UNX | 111 ++++++------ docs/VERSION.DLL | 136 +++++++------- docs/license.txt | 45 +++-- include/freetype/config/ftoption.h | 2 +- 22 files changed, 810 insertions(+), 857 deletions(-) diff --git a/ChangeLog b/ChangeLog index b8b3d0c54..718b045dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,209 +1,233 @@ +2003-04-20 Werner Lemberg + + * doc/INSTALL.UNX: Cleaned up. + 2003-04-09 Torrey Lyons - * src/base/ftmac.c (open_face_from_buffer): removed a double-free bug that - had nasty consequences when trying to open an "invalid" font on a Mac. + * src/base/ftmac.c (open_face_from_buffer): Removed a double-free + bug that had nasty consequences when trying to open an "invalid" + font on a Mac. 2003-04-09 Mike Fabian - * src/bdf/bdfdrivr.h, src/pcf/pcf.h: changed FT_Short to FT_UShort in - order to be able to access more than 32768 glyphs in fonts + * src/bdf/bdfdrivr.h, src/pcf/pcf.h: Changed FT_Short to FT_UShort + in order to be able to access more than 32768 glyphs in fonts. 2003-04-08 David Turner - FreeType 2.1.4 Released - ======================= + + * Version 2.1.4 is released. + ============================ + 2003-04-03 Martin Muskens - * src/type1/t1load.c (T1_Open_Face): fixed the code to make it handle - special cases where a font only contains a ".notdef" glyph (happens in - PDF-embedded fonts !!). Otherwise, FT_Panic was called ! + * src/type1/t1load.c (T1_Open_Face): Fixed the code to make it + handle special cases where a font only contains a ".notdef" glyph + (happens in PDF-embedded fonts). Otherwise, FT_Panic was called. 2003-03-27 David Turner - * README: udpated + * README: Udpated. - * README.UNX: removed (now replaced by docs/INSTALL.UNX) + * README.UNX: Removed (now replaced by docs/INSTALL.UNX). - * src/pshinter/pshalgo3.c: the hinter now performs as in 2.1.3 and - will ignore stem quantization only when FT_LOAD_TARGET_SMOOTH is used + * src/pshinter/pshalgo3.c: The hinter now performs as in 2.1.3 and + will ignore stem quantization only when FT_LOAD_TARGET_SMOOTH is + used. - * src/base/ftobjs.c: changed the default computations to include rounding - in all cases, this is required to provide accurate kerning data when - native TrueType hinting is enabled. + * src/base/ftobjs.c: Changed the default computations to include + rounding in all cases; this is required to provide accurate kerning + data when native TrueType hinting is enabled. - * src/type1/t1load.c: the Type 1 loader now accepts more general names - according to the Postscript spec (the previous one was too restrictive) + * src/type1/t1load.c: The Type 1 loader now accepts more general + names according to the PostScript specification (the previous one + was too restrictive). 2003-03-20 David Turner - * docs/*: serious rewriting of the documentation + Serious rewriting of the documentation. - * include/freetype/internal/ftobjs.h, src/base/ftobjs.c, src/bdf/bdfdrivr.c, - src/pcf/pcfdriver.c, src/pfr/pfrsbit.c, src/sfnt/ttsbit.c, - src/type42/t42objs.c, src/winfonts/winfnt.c: introduced three new functions - to deal with glyph bitmaps within FT_GlyphSlot objects. these are: + * docs/BUGS, docs/BUILD: Removed. + * docs/DEBUG.TXT: Renamed to... + * docs/DEBUG: This. + * docs/CUSTOMIZE, docs/TRUETYPE, docs/UPGRADE.UNX: New files. + * docs/INSTALL.ANY, docs/INSTALL.UNX, docs/INSTALL.GNU New files, + containing platform specific information previously in INSTALL. + * docs/readme.vms: Renamed to... + * docs/INSTALL.VMS: This. - ft_glyphslot_free_bitmap - ft_glyphslot_alloc_bitmap - ft_glyphslot_set_bitmap + * docs/*: Updated. - these are much more convenient to use than managing the FT_GLYPH_OWN_BITMAP - flag manually. the font drivers have been modified to use them as well. + * include/freetype/internal/ftobjs.h, src/base/ftobjs.c, + src/bdf/bdfdrivr.c, src/pcf/pcfdriver.c, src/pfr/pfrsbit.c, + src/sfnt/ttsbit.c, src/type42/t42objs.c, src/winfonts/winfnt.c: + Introduced three new functions to deal with glyph bitmaps within + FT_GlyphSlot objects: - * src/cache/ftlru.c: fixed an invalid assertion check + ft_glyphslot_free_bitmap + ft_glyphslot_alloc_bitmap + ft_glyphslot_set_bitmap - * src/autohint/ahglyph.h, src/autohint/ahglyph.c, src/autohint/ahglobal.c, - src/autohint/ahhint.c: fixed blue-scale problem + These functions are much more convenient to use than managing the + FT_GLYPH_OWN_BITMAP flag manually. The font drivers have been + modified to use them as well. - * src/cache/ftccache.c: fixed small bug that could crash the cache - in rare circumstances (mostly with broken fonts) + * src/cache/ftlru.c: Fixed an invalid assertion check. + * src/autohint/ahglyph.h, src/autohint/ahglyph.c, + src/autohint/ahglobal.c, src/autohint/ahhint.c: Fixed blue-scale + problem. + + * src/cache/ftccache.c: Fixed small bug that could crash the cache + in rare circumstances (mostly with broken fonts). 2003-03-15 David Turner - * src/truetype/ttdriver.c (Set_Char_Sizes): fixed a small rounding bug. - Actually, it seems that previous versions of FreeType didn't perform - TrueType rounding exactly as appropriate. + * src/truetype/ttdriver.c (Set_Char_Sizes): Fixed a small rounding + bug. Actually, it seems that previous versions of FreeType didn't + perform TrueType rounding exactly as appropriate. 2003-03-14 David Turner - * src/truetype/ttdriver.c: fixing the small TrueType native rendering - glitches, they came from a small rounding error. + * src/truetype/ttdriver.c: Fixing the small TrueType native + rendering glitches, they came from a small rounding error. 2003-03-13 David Turner - * src/base/ftdbgmem.c, docs/DEBUG.TXT: added new environment variables - to control memory debugging with FreeType. See the description of - "FT2_DEBUG_MEMORY", "FT2_ALLOC_TOTAL_MAX" and "FT2_ALLOC_COUNT_MAX" - in DEBUG.TXT + * src/base/ftdbgmem.c, docs/DEBUG.TXT: Added new environment + variables to control memory debugging with FreeType. See the + description of "FT2_DEBUG_MEMORY", "FT2_ALLOC_TOTAL_MAX" and + "FT2_ALLOC_COUNT_MAX" in DEBUG.TXT. - * src/cache/ftccache.c, src/cache/ftccmap.c, src/cache/ftcsbits.c, - ftlru.c: fixed the cache sub-system to correctly deal with out-of-memory - conditions. + * src/cache/ftccache.c, src/cache/ftccmap.c, src/cache/ftcsbits.c, + src/cache/ftlru.c: Fixed the cache sub-system to correctly deal with + out-of-memory conditions. - * src/pfr/pfrobjs.c, src/pfr/pfrsbits.c: fixing compiler warnings and a - small memory leak + * src/pfr/pfrobjs.c, src/pfr/pfrsbits.c: Fixing compiler warnings + and a small memory leak. - * src/psaux/psobjs.c (t1_reallocate_table): fixed a bug (memory leak) that - only happened when trying to resize an array would end in an OOM. + * src/psaux/psobjs.c (t1_reallocate_table): Fixed a bug (memory + leak) that only happened when a try to resize an array would end in + an out-of-memory condition. - * src/smooth/ftgrays.c: removed compiler warnings / volatile bug + * src/smooth/ftgrays.c: Removed compiler warnings / volatile bug. - * src/truetype/ttobjs.c: removed segmentation fault that happened in - tight memory environments. + * src/truetype/ttobjs.c: Removed segmentation fault that happened in + tight memory environments. 2003-02-28 Pixel - * src/gzip/ftgzip.c (ft_gzip_file_done): fixed memory leak, the ZLib - stream was not properly finalized + * src/gzip/ftgzip.c (ft_gzip_file_done): Fixed memory leak: The ZLib + stream was not properly finalized. 2003-02-25 Anthony Fok - * src/cache/ftccmap.c: the cmap cache now supports UCS-4 charmaps - when available in Asian fonts + * src/cache/ftccmap.c: The cmap cache now supports UCS-4 charmaps + when available in Asian fonts. - * src/sfnt/ttload.c, src/base/ftobjs.c: changed "asian" to "Asian" in - comments + * src/sfnt/ttload.c, src/base/ftobjs.c: Changed "asian" to "Asian" + in comments. 2003-02-25 David Turner - * src/gzip/ftgzip.c: fixed a bug that caused FreeType to loop endlessly - when trying to read certain compressed gzip files. The following test - could be used to reveal the bug: + * src/gzip/ftgzip.c: Fixed a bug that caused FreeType to loop + endlessly when trying to read certain compressed gzip files. The + following test could be used to reveal the bug: - touch 0123456789 ; gzip 0123456789 ; ftdump 0123456789.gz + touch 0123456789 ; gzip 0123456789 ; ftdump 0123456789.gz + * src/pfr/pfrobjs.c, src/pfr/pfrload.c, src/pfr/pfrtypes.h: Several + fixes to the PFR font driver: - * src/pfr/pfrobjs.c, src/pfr/pfrload.c, src/pfr/pfrtypes.h: several - fixes to the PFR font driver: + - The list of available embedded bitmaps was not correctly set in + the root FT_FaceRec structure describing the face. - - the list of available embedded bitmaps was not correctly set - in the root FT_FaceRec structure describing the face + - The glyph loader always tried to load the outlines when + FT_LOAD_SBITS_ONLY was specified. - - the glyph loader always tried to load the outlines when - FT_LOAD_SBITS_ONLY was specified + - The table loaded now scans for *undocumented* elements of a + physical font's auxiliary data record. This is necessary to + retrieve the "real" family and style names. - - the table loaded now scans for *undocumented* elements of a - physical font's auxiliary data record, this is necessary to - retrieve the "real" family and style names. + NOTE THAT THESE CHANGES THE FAMILY NAME OF MANY PFR FONTS! - NOTE THAT THIS CHANGES THE FAMILY NAME OF MANY PFR FONTS !! - - * src/truetype/ttdriver.c (Set_Char_Sizes): fixed a rounding bug when - computing the scale factors for a given character size in points with - resolution. + * src/truetype/ttdriver.c (Set_Char_Sizes): Fixed a rounding bug + when computing the scale factors for a given character size in + points with resolution. + * devel/ft2build.h, devel/ftoption.h: New files (in a new directory) + which are special development versions of include/ft2build.h and + include/freetype/config/ftoption.h, respectively. 2003-02-18 David Turner - * src/truetype/ttdriver.c, src/truetype/ttobjs.h, src/truetype/ttobjs.c, - src/truetype/ttinterp.c, src/base/ftobjs.c: fixing the slight distortion - problem that occured due to the latest auto-hinter changes + * src/truetype/ttdriver.c, src/truetype/ttobjs.h, + src/truetype/ttobjs.c, src/truetype/ttinterp.c, src/base/ftobjs.c: + Fixing the slight distortion problem that ocurred due to the latest + auto-hinter changes. - - * src/autohint/ahhint.c: disabled the advance width "correction" which - seemed to provide more trouble than benefits.. + * src/autohint/ahhint.c: Disabled the advance width "correction" + which seemed to provide more trouble than benefits. 2003-02-13 Graham Asher - * include/freetype/ftincrem.h, src/cff/cffgload.c, src/cid/cidgload.c, - src/truetype/ttgload.c, src/type1/t1gload.c - [FT_CONFIG_OPTION_INCREMENTAL]: I have changed the incremental loading - interface in a way that makes it simpler and allows glyph metrics to - be changed (e.g., by adding a constant, as required by CFF fonts) - rather than just overridden. This was required to make the GhsotScript- - to-FreeType bridge work. + * include/freetype/ftincrem.h, src/cff/cffgload.c, + src/cid/cidgload.c, src/truetype/ttgload.c, src/type1/t1gload.c + [FT_CONFIG_OPTION_INCREMENTAL]: Changed the incremental loading + interface in a way that makes it simpler and allows glyph metrics to + be changed (e.g., by adding a constant, as required by CFF fonts) + rather than just overridden. This was required to make the + GhsotScript-to-FreeType bridge work. 2003-01-31 David Turner - * docs/CHANGES, docs/VERSION.DLL, docs/TODO: updating documentation for - the 2.1.4 release + * docs/CHANGES, docs/VERSION.DLL, docs/TODO: Updating documentation + for the 2.1.4 release. - * builds/win32/visualc/freetype.dsp, builds/win32/visualc/index.html: - updating the project file for 2.1.4 + * builds/win32/visualc/freetype.dsp, + builds/win32/visualc/index.html: Updating the project file for + 2.1.4. - * src/gzip/adler32.c, src/gzip/ftgzip.c, src/gzip/infblock.c, - src/gzip/infcodes.c, src/gzip/inflate.c, src/gzip/inftrees.c, - src/gzip/infutil.c: removed old-style (K&R)function definitions. This - avoids warnings with Visual C++ at its most pedantic mode. + * src/gzip/adler32.c, src/gzip/ftgzip.c, src/gzip/infblock.c, + src/gzip/infcodes.c, src/gzip/inflate.c, src/gzip/inftrees.c, + src/gzip/infutil.c: Removed old-style (K&R)function definitions. + This avoids warnings with Visual C++ at its most pedantic mode. - * src/pfr/pfrsbit.c: removed compiler warnings + * src/pfr/pfrsbit.c: Removed compiler warnings. - * src/cache/ftccmap.c: changed a FT_ERROR into a FT_TRACE1 since the - it caused "ftview" and others to dump too much junk when trying to - display a waterfall with a font without a Unicode charmap (e.g. - SYMBOL.TTF) + * src/cache/ftccmap.c: Changed an FT_ERROR into an FT_TRACE1 since + it caused "ftview" and others to dump too much junk when trying to + display a waterfall with a font without a Unicode charmap (e.g. + SYMBOL.TTF). - * src/autohint/ahtypes.h, src/autohint/ahhint.c, src/base/ftobjs.c, - src/truetype/ttobjs.c: implemented FT_CONFIG_CHESTER_BLUE_SCALE, - corresponding to the last patch from David Chester, but with a - much simpler (and saner) implementation. + * src/autohint/ahtypes.h, src/autohint/ahhint.c, src/base/ftobjs.c, + src/truetype/ttobjs.c: Implemented FT_CONFIG_CHESTER_BLUE_SCALE, + corresponding to the last patch from David Chester, but with a much + simpler (and saner) implementation. - * src/pshinter/pshalgo3.c: improved the Postscript hinter. Getting rid - of stem snapping seems to work well here (though the stems are still - slightly moved to increase contrast). + * src/pshinter/pshalgo3.c: Improved the Postscript hinter. Getting + rid of stem snapping seems to work well here (though the stems are + still slightly moved to increase contrast). - THIS IMPROVES ANTI-ALIASED RENDERING, BUT MONOCHROME AND LCD MODES - STILL SUCK... I need to work this a bit + THIS IMPROVES ANTI-ALIASED RENDERING, BUT MONOCHROME AND LCD MODES + STILL SUCK. 2003-01-22 David Chester - * src/autohint/ahhint.c: small fix to the stem width optimisation + * src/autohint/ahhint.c: Small fix to the stem width optimization. 2003-01-22 David Turner - * include/freetype/ftbdf.h, include/freetype/internal/bdftypes.h, - src/base/ftbdf.c, src/bdf/bdfdrivr.c, src/pcf/pcfdrivr.c, - src/pcf/pcfread.h: + * include/freetype/ftbdf.h, include/freetype/internal/bdftypes.h, + src/base/ftbdf.c, src/bdf/bdfdrivr.c, src/pcf/pcfdrivr.c, + src/pcf/pcfread.h: Adding a new API `FT_Get_BDF_Property' to + retrieve the BDF properties of a given PCF or BDF font. - adding a new API, named FT_Get_BDF_Property to retrieve the BDF - properties of a given PCF or BDF font - - * src/sfnt/ttload.c (sfnt_dir_check): relaxed the "head" table size - verification to accept a few broken fonts who pad the size incorrectly - (the table should be padded, but its "size" field shouldn't per se - the spec) + * src/sfnt/ttload.c (sfnt_dir_check): Relaxed the "head" table size + verification to accept a few broken fonts who pad the size + incorrectly (the table should be padded, but its "size" field + shouldn't according to the specification). 2003-01-18 Werner Lemberg @@ -325,9 +349,10 @@ 2002-12-23 Anthony Fok - * builds/unix/configure.ac, builds/unix/unix-cc.in, - builds/unix/unix-def.in: Small fix to configure sub-system on Unix - to allow other programs to correctly link with zlib when needed. + * builds/unix/configure.ac, builds/unix/unix-cc.in (LINK_LIBRARY), + builds/unix/unix-def.in (SYSTEM_ZLIB): Small fix to configure + sub-system on Unix to allow other programs to correctly link with + zlib when needed. 2002-12-17 David Turner diff --git a/Jamfile b/Jamfile index 3ba645f6b..c933cd92d 100644 --- a/Jamfile +++ b/Jamfile @@ -1,21 +1,22 @@ -# FreeType 2 top Jamfile (c) 2001-2002 David Turner +# FreeType 2 top Jamfile (c) 2001, 2002, 2003 David Turner # # The HDRMACRO is already defined in FTJam and is used to add # the content of certain macros to the list of included header # files. # -# we can compile FreeType 2 with classic Jam however thanks to +# We can compile FreeType 2 with classic Jam however thanks to # the following code # if ! $(JAM_TOOLSET) { rule HDRMACRO { - # nothing !! + # nothing } } + # We need to invoke a SubDir rule if the FT2 source directory top is not the # current directory. This allows us to build FreeType 2 as part of a larger # project easily. @@ -25,71 +26,71 @@ if $(FT2_TOP) != $(DOT) SubDir FT2_TOP ; } -# -# The following macros define the include directory, the source directory -# and the final library name (without library extensions). They can be + +# The following macros define the include directory, the source directory, +# and the final library name (without library extensions). They can be # replaced by other definitions when the library is compiled as part of # a larger project. # -# name of FreeType include directory during compilation. -# relative to FT2_TOP +# Name of FreeType include directory during compilation. +# This is relative to FT2_TOP. # FT2_INCLUDE_DIR ?= include ; -# name of FreeType source directory during compilation. -# relative to FT2_TOP +# Name of FreeType source directory during compilation. +# This is relative to FT2_TOP. # FT2_SRC_DIR ?= src ; -# name of final library, without extension +# Name of final library, without extension. # FT2_LIB ?= $(LIBPREFIX)freetype ; -# define FT2_BUILD_INCLUDE to point to your build-specific directory -# this is prepended to FT2_INCLUDE_DIR. This can be used to specify +# Define FT2_BUILD_INCLUDE to point to your build-specific directory. +# This is prepended to FT2_INCLUDE_DIR. It can be used to specify # the location of a custom which will point to custom -# versions of "ftmodule.h" and "ftoption.h", for example +# versions of "ftmodule.h" and "ftoption.h", for example. # FT2_BUILD_INCLUDE ?= ; -# the list of modules to compile on any given build of the library -# by default, this will contain _all_ modules defined in FT2_SRC_DIR +# The list of modules to compile on any given build of the library. +# By default, this will contain _all_ modules defined in FT2_SRC_DIR. # # IMPORTANT: You'll need to change the content of "ftmodule.h" as well # if you modify this list or provide your own. # -FT2_COMPONENTS ?= gzip # support for gzip-compressed files. +FT2_COMPONENTS ?= gzip # support for gzip-compressed files autohint # auto-hinter base # base component (public APIs) bdf # BDF font driver cache # cache sub-system cff # CFF/CEF font driver - cid # Postscript CID-keyed font driver + cid # PostScript CID-keyed font driver pcf # PCF font driver pfr # PFR/TrueDoc font driver - psaux # Common Postscript routines module - pshinter # Postscript hinter module - psnames # Postscript names handling - raster # Monochrome rasterizer - smooth # Anti-aliased rasterizer + psaux # common PostScript routines module + pshinter # PostScript hinter module + psnames # PostScript names handling + raster # monochrome rasterizer + smooth # anti-aliased rasterizer sfnt # SFNT-based format support routines truetype # TrueType font driver - type1 # Postscript Type 1 font driver - type42 # Postscript Type 42 (embedded TrueType) driver + type1 # PostScript Type 1 font driver + type42 # PostScript Type 42 (embedded TrueType) driver winfonts # Windows FON/FNT font driver ; -# don't touch +# Don't touch. # FT2_INCLUDE = $(FT2_BUILD_INCLUDE) [ FT2_SubDir $(FT2_INCLUDE_DIR) ] ; FT2_SRC = [ FT2_SubDir $(FT2_SRC_DIR) ] ; -# only used by FreeType developers +# Only used by FreeType developers. # if $(DEBUG_HINTER) { @@ -104,11 +105,12 @@ HDRS += $(FT2_INCLUDE) ; # Uncomment the following line if you want to build individual source files -# for each FreeType 2 module. this is only useful during development, and -# is better defined as an environment variable anyway ! +# for each FreeType 2 module. This is only useful during development, and +# is better defined as an environment variable anyway! # # FT2_MULTI = true ; + # The file is used to define macros that are # later used in #include statements. It needs to be parsed in order to # record these definitions. @@ -116,13 +118,14 @@ HDRS += $(FT2_INCLUDE) ; HDRMACRO [ FT2_SubDir include freetype config ftheader.h ] ; HDRMACRO [ FT2_SubDir include freetype internal internal.h ] ; + # Now include the Jamfile in "freetype2/src", used to drive the compilation # of each FreeType 2 component and/or module. # SubInclude FT2_TOP $(FT2_SRC_DIR) ; -# tests files (hinter debugging). only used by FreeType developers +# Test files (hinter debugging). Only used by FreeType developers. # if $(DEBUG_HINTER) { diff --git a/Jamfile.in b/Jamfile.in index 2ba53bd66..c933cd92d 100644 --- a/Jamfile.in +++ b/Jamfile.in @@ -1,21 +1,22 @@ -# FreeType 2 top Jamfile (c) 2001-2002 David Turner +# FreeType 2 top Jamfile (c) 2001, 2002, 2003 David Turner # # The HDRMACRO is already defined in FTJam and is used to add # the content of certain macros to the list of included header # files. # -# we can compile FreeType 2 with classic Jam however thanks to +# We can compile FreeType 2 with classic Jam however thanks to # the following code # if ! $(JAM_TOOLSET) { rule HDRMACRO { - # nothing !! + # nothing } } + # We need to invoke a SubDir rule if the FT2 source directory top is not the # current directory. This allows us to build FreeType 2 as part of a larger # project easily. @@ -25,71 +26,71 @@ if $(FT2_TOP) != $(DOT) SubDir FT2_TOP ; } -# -# The following macros define the include directory, the source directory -# and the final library name (without library extensions). They can be + +# The following macros define the include directory, the source directory, +# and the final library name (without library extensions). They can be # replaced by other definitions when the library is compiled as part of # a larger project. # -# name of FreeType include directory during compilation. -# relative to FT2_TOP +# Name of FreeType include directory during compilation. +# This is relative to FT2_TOP. # FT2_INCLUDE_DIR ?= include ; -# name of FreeType source directory during compilation. -# relative to FT2_TOP +# Name of FreeType source directory during compilation. +# This is relative to FT2_TOP. # FT2_SRC_DIR ?= src ; -# name of final library, without extension +# Name of final library, without extension. # FT2_LIB ?= $(LIBPREFIX)freetype ; -# define FT2_BUILD_INCLUDE to point to your build-specific directory -# this is prepended to FT2_INCLUDE_DIR. This can be used to specify +# Define FT2_BUILD_INCLUDE to point to your build-specific directory. +# This is prepended to FT2_INCLUDE_DIR. It can be used to specify # the location of a custom which will point to custom -# versions of "ftmodule.h" and "ftoption.h", for example +# versions of "ftmodule.h" and "ftoption.h", for example. # FT2_BUILD_INCLUDE ?= ; -# the list of modules to compile on any given build of the library -# by default, this will contain _all_ modules defined in FT2_SRC_DIR +# The list of modules to compile on any given build of the library. +# By default, this will contain _all_ modules defined in FT2_SRC_DIR. # # IMPORTANT: You'll need to change the content of "ftmodule.h" as well # if you modify this list or provide your own. # -FT2_COMPONENTS ?= gzip # support for gzip-compressed files. +FT2_COMPONENTS ?= gzip # support for gzip-compressed files autohint # auto-hinter base # base component (public APIs) bdf # BDF font driver cache # cache sub-system cff # CFF/CEF font driver - cid # Postscript CID-keyed font driver + cid # PostScript CID-keyed font driver pcf # PCF font driver pfr # PFR/TrueDoc font driver - psaux # Common Postscript routines module - pshinter # Postscript hinter module - psnames # Postscript names handling - raster # Monochrome rasterizer - smooth # Anti-aliased rasterizer + psaux # common PostScript routines module + pshinter # PostScript hinter module + psnames # PostScript names handling + raster # monochrome rasterizer + smooth # anti-aliased rasterizer sfnt # SFNT-based format support routines truetype # TrueType font driver - type1 # Postscript Type 1 font driver - type42 # Postscript Type 42 (embedded TrueType) driver + type1 # PostScript Type 1 font driver + type42 # PostScript Type 42 (embedded TrueType) driver winfonts # Windows FON/FNT font driver ; -# don't touch +# Don't touch. # FT2_INCLUDE = $(FT2_BUILD_INCLUDE) [ FT2_SubDir $(FT2_INCLUDE_DIR) ] ; FT2_SRC = [ FT2_SubDir $(FT2_SRC_DIR) ] ; -# only used by FreeType developers +# Only used by FreeType developers. # if $(DEBUG_HINTER) { @@ -103,13 +104,13 @@ if $(DEBUG_HINTER) HDRS += $(FT2_INCLUDE) ; -#SubDirHdr += $(FT2_INCLUDE) ; - # Uncomment the following line if you want to build individual source files -# for each FreeType 2 module. +# for each FreeType 2 module. This is only useful during development, and +# is better defined as an environment variable anyway! # # FT2_MULTI = true ; + # The file is used to define macros that are # later used in #include statements. It needs to be parsed in order to # record these definitions. @@ -117,13 +118,14 @@ HDRS += $(FT2_INCLUDE) ; HDRMACRO [ FT2_SubDir include freetype config ftheader.h ] ; HDRMACRO [ FT2_SubDir include freetype internal internal.h ] ; + # Now include the Jamfile in "freetype2/src", used to drive the compilation # of each FreeType 2 component and/or module. # SubInclude FT2_TOP $(FT2_SRC_DIR) ; -# tests files (hinter debugging). only used by FreeType developers +# Test files (hinter debugging). Only used by FreeType developers. # if $(DEBUG_HINTER) { diff --git a/Jamrules b/Jamrules index c05e50854..0b68597d0 100644 --- a/Jamrules +++ b/Jamrules @@ -1,4 +1,4 @@ -# FreeType 2 JamRules (c) 2001 David Turner +# FreeType 2 JamRules (c) 2001, 2002, 2003 David Turner # # This file contains the Jam rules needed to build the FreeType 2 library. # It is shared by all Jamfiles and is included only once in the build @@ -6,7 +6,7 @@ # -# call SubDirHdrs on a list of directories +# Call SubDirHdrs on a list of directories. # rule AddSubDirHdrs { diff --git a/README b/README index 13445c7a5..5c5e3634c 100644 --- a/README +++ b/README @@ -2,23 +2,22 @@ Special notes to Unix users =========================== - Please read the file "docs/UPGRADE.UNX", it contains important - information regarding the installation of FreeType on Unix systems, + Please read the file "docs/UPGRADE.UNX". It contains important + information regarding the installation of FreeType on Unix systems, especially GNU based operating systems like GNU/Linux. - FreeType 2's library is called `libfreetype', FreeType 1's library + FreeType 2's library is called `libfreetype', FreeType 1's library is called `libttf'. They are *not* compatible! FreeType 2.1.4 ============== - Please read the docs/CHANGES file, it contains IMPORTANT - INFORMATION. + Please read the docs/CHANGES file, it contains IMPORTANT INFORMATION. - Read the files "docs/INSTALL" for installation instructions. + Read the files "docs/INSTALL" for installation instructions. - Note that the FreeType 2 documentation is now available as a + Note that the FreeType 2 documentation is now available as a separate package from our sites. See: ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.1.4.tar.bz2 @@ -26,14 +25,13 @@ ftp://ftp.freetype.org/pub/freetype2/ftdoc214.zip - Reports - ======= - - Please report bugs by e-mail to `devel@freetype.org'. Don't - forget to send a detailed explanation of the problem -- there is - nothing worse than receiving a terse message that only says "it - doesn't work". + Bugs + ==== + Please report bugs by e-mail to `devel@freetype.org'. Don't forget + to send a detailed explanation of the problem -- there is nothing + worse than receiving a terse message that only says "it doesn't + work". Enjoy! diff --git a/builds/unix/configure.ac b/builds/unix/configure.ac index a90200a7f..c5ed270b6 100644 --- a/builds/unix/configure.ac +++ b/builds/unix/configure.ac @@ -81,7 +81,6 @@ AC_SUBST(FTSYS_SRC) AC_CHECK_FUNCS(memcpy memmove) - dnl Check for system zlib AC_ARG_WITH(zlib, [ --without-zlib use internal zlib instead of system-wide]) @@ -98,8 +97,6 @@ AC_SUBST(CFLAGS) AC_SUBST(LDFLAGS) AC_SUBST(SYSTEM_ZLIB) - - AC_PROG_LIBTOOL dnl create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk' diff --git a/devel/ft2build.h b/devel/ft2build.h index da8b65555..9df94c6c8 100644 --- a/devel/ft2build.h +++ b/devel/ft2build.h @@ -5,7 +5,7 @@ /* FreeType 2 build and setup macros. */ /* (Generic version) */ /* */ -/* Copyright 1996-2001 by */ +/* Copyright 1996-2001, 2003 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -18,14 +18,14 @@ /* - * this is a development version of that is used - * to build the library in debug mode. Its only difference with - * the reference is that is forces the use of the local "ftoption.h" - * which contains different settings for all configuration macros + * Rhis is a development version of that is used + * to build the library in debug mode. Its only difference with + * the reference is that it forces the use of the local "ftoption.h" + * which contains different settings for all configuration macros. * - * to use it, you must define the environment variable FT2_BUILD_INCLUDE + * To use it, you must define the environment variable FT2_BUILD_INCLUDE * to point to the directory containing these two files ("ft2build.h" and - * "ftoption.h"), then invoke Jam as usual + * "ftoption.h"), then invoke Jam as usual. */ #ifndef __FT2_BUILD_GENERIC_H__ diff --git a/devel/ftoption.h b/devel/ftoption.h index df14c5a64..082759150 100644 --- a/devel/ftoption.h +++ b/devel/ftoption.h @@ -4,7 +4,7 @@ /* */ /* User-selectable configuration macros (specification only). */ /* */ -/* Copyright 1996-2001, 2002 by */ +/* Copyright 1996-2001, 2002, 2003 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -23,9 +23,9 @@ #include /* - * this is a special developer version of "ftoption.h", it is used + * This is a special developer version of "ftoption.h". It is used * to define all debugging options, as well as the TrueType bytecode - * interpreter + * interpreter. */ FT_BEGIN_HEADER diff --git a/docs/CHANGES b/docs/CHANGES index 2169976fc..37a298c99 100644 --- a/docs/CHANGES +++ b/docs/CHANGES @@ -2,88 +2,95 @@ LATEST CHANGES BETWEEN 2.1.4 and 2.1.3 I. IMPORTANT BUG FIXES - - updated to newest libtool version, fixes build problems on various + - 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 + - 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 + - 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") + 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 + - 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. + - 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. - - 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. + - 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. - - the TrueType loader now limits the depth of composite glyphs. This is + - 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 + - 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 + - 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 + - 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.. + 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 + - The FT_RENDER_MODE_LIGHT render mode was implemented. - - a new API, 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 + - A Windows FNT specific API has been added, mostly to access font + headers. This is used by Wine. - - TrueType tables without a "hmtx" table are now tolerated when an - incremental interface is used. This happens for certain Type42 fonts + - 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're 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 it's 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) + - 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). + + - The installation documentation has been seriously revamped. + Everything is now in the "docs" directory. - - 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 @@ -114,17 +121,19 @@ LATEST CHANGES BETWEEN 2.1.3 and 2.1.2 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 transform - offsets are computed). + (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 + 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'll be able to use all these bitmap fonts that come + - 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 @@ -163,10 +172,10 @@ LATEST CHANGES BETWEEN 2.1.3 and 2.1.2 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) + displays (under Win32 and X11). - The PFR driver now supports embedded bitmaps (all formats supported), - and returns correct kerning metrics for all glyphs + and returns correct kerning metrics for all glyphs. - The TrueType charmap loader now supports certain "broken" fonts that load under Windows without problems. @@ -187,9 +196,10 @@ LATEST CHANGES BETWEEN 2.1.3 and 2.1.2 - 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 diff --git a/docs/CUSTOMIZE b/docs/CUSTOMIZE index 397c2c33f..2961d174e 100644 --- a/docs/CUSTOMIZE +++ b/docs/CUSTOMIZE @@ -1,79 +1,85 @@ How to customize the compilation of the library: ================================================ - FreeType is highly customizable to fit various needs, and this document - details how it is possible to select options and components at compilation - time. + FreeType is highly customizable to fit various needs, and this + document describes how it is possible to select options and components + at compilation time. -I. Configuration macros: +I. Configuration macros - the file found in "include/freetype/config/ftoption.h" contains a list + The file found in "include/freetype/config/ftoption.h" contains a list of commented configuration macros that can be toggled by developers to - indicate which features to activate in their build of the library. + indicate which features should be active while building the library. - these options range from debug level to availability of certain + These options range from debug level to availability of certain features, like native TrueType hinting through a bytecode interpreter. - we invite you to read this file for more information. You can change - the file's content to suit your needs, or override it with one of the - techniques described below.. + We invite you to read this file for more information. You can change + the file's content to suit your needs, or override it with one of the + techniques described below. -II. Modules list: +II. Modules list - the file found in "include/freetype/config/ftmodule.h" contains a list - of names corresponding to the modules / font drivers to be statically - compiled in the FreeType library during the build. + The file found in "include/freetype/config/ftmodule.h" contains a list + of names corresponding to the modules and font drivers to be + statically compiled in the FreeType library during the build. - you can change it to suit your own preferences. Be aware that certain - modules depend on others, as described by the file "modules.txt" in + You can change it to suit your own preferences. Be aware that certain + modules depend on others, as described by the file "modules.txt" in this directory. - you can modify the file's content to suit your needs, or override it - at compile time with one of the methods described below + You can modify the file's content to suit your needs, or override it + at compile time with one of the methods described below. -III. System interface: +III. System interface - FreeType's default interface to the system (i.e. the parts that deal with - memory management and i/o streams) is located in "src/base/ftsystem.c". + FreeType's default interface to the system (i.e., the parts that deal + with memory management and i/o streams) is located in + "src/base/ftsystem.c". - the current implementation uses standard C library calls to manage - memory and read font files. It is however possible to write custom + The current implementation uses standard C library calls to manage + memory and to read font files. It is however possible to write custom implementations to suit specific systems. - to tell the GNU Make-based build system to use a custom system interface, - you'll need to define the environment variable FTSYS_SRC to point to - the relevant implementation, like in: + To tell the GNU Make-based build system to use a custom system + interface, you have to define the environment variable FTSYS_SRC to + point to the relevant implementation: - on Unix: - ./configure - export FTSYS_SRC=foo/my_ftsystem.c - make - make install + on Unix: + + ./configure + export FTSYS_SRC=foo/my_ftsystem.c + make + make install - on Windows: - make setup - set FTSYS_SRC=foo/my_ftsystem.c - make + on Windows: + + make setup + set FTSYS_SRC=foo/my_ftsystem.c + make -IV. Overriding default configuration and module headers: +IV. Overriding default configuration and module headers - it is possible to over-ride the default configuration and module headers - without changing the original files. There are two ways to do that: + It is possible to override the default configuration and module + headers without changing the original files. There are two ways to do + that: - 1. Using the C include path: + + 1. Using the C include path - use the C include path to ensure that your own versions of the - files are used at compile time when the lines: + Use the C include path to ensure that your own versions of the files + are used at compile time when the lines #include FT_CONFIG_OPTIONS_H #include FT_CONFIG_MODULES_H - are compiled. Their default values being - and , you can do something like: + are compiled. Their default values being + and , you + can do something like: custom/ freetype/ @@ -82,36 +88,38 @@ IV. Overriding default configuration and module headers: ftmodule.h => custom modules list include/ => normal FreeType 2 include - freetype/ - ... + freetype/ + ... - then change the C include path to always give the path to "custom" - before the FreeType 2 "include" + then change the C include path to always give the path to "custom" + before the FreeType 2 "include". 2. Re-defining FT_CONFIG_OPTIONS_H and FT_CONFIG_MODULES_H - another way to do the same thing is to re-define the macros used - to name the configuration headers. To do so, you'll need a custom - "ft2build.h", whose content can be as simple as: + Another way to do the same thing is to redefine the macros used to + name the configuration headers. To do so, you need a custom + "ft2build.h" whose content can be as simple as: - #ifndef __FT2_BUILD_GENERIC_H__ - #define __FT2_BUILD_GENERIC_H__ + #ifndef __FT2_BUILD_GENERIC_H__ + #define __FT2_BUILD_GENERIC_H__ - #define FT_CONFIG_OPTIONS_H - #define FT_CONFIG_MACROS_H + #define FT_CONFIG_OPTIONS_H + #define FT_CONFIG_MACROS_H - #include + #include - #endif /* __FT2_BUILD_GENERIC_H__ */ + #endif /* __FT2_BUILD_GENERIC_H__ */ - place them in: + Place those files in a separate directory, e.g.: - custom/ - ft2build.h => custom version described above - my-ftoption.h => custom options header - my-ftmodule.h => custom modules list header + custom/ + ft2build.h => custom version described above + my-ftoption.h => custom options header + my-ftmodule.h => custom modules list header - and change the C include path to ensure that "custom" is always placed - before the FT2 "include" during compilation. + and change the C include path to ensure that "custom" is always + placed before the FT2 "include" during compilation. + +--- end of CUSTOMIZE --- diff --git a/docs/DEBUG b/docs/DEBUG index 03ed70311..c85ef3cb1 100644 --- a/docs/DEBUG +++ b/docs/DEBUG @@ -1,5 +1,5 @@ -Debugging within the FreeType sources: -====================================== +Debugging within the FreeType sources +===================================== I. Configuration macros ----------------------- @@ -12,15 +12,15 @@ located in the file "ftoptions.h". The macros are: FT_DEBUG_LEVEL_ERROR #define this macro if you want to compile the FT_ERROR macro calls - used to print error messages during program execution. This will - not stop the program, but is very useful to spot invalid fonts - during development and code workarounds for them. + to print error messages during program execution. This will not + stop the program. Very useful to spot invalid fonts during + development and to code workarounds for them. FT_DEBUG_LEVEL_TRACE - #define this macro if you want to compile both the FT_ERROR macro - and the FT_TRACE one. This also includes the variants FT_TRACE0, - FT_TRACE1, FT_TRACE2, ..., FT_TRACE6. + #define this macro if you want to compile both macros FT_ERROR and + FT_TRACE. This also includes the variants FT_TRACE0, FT_TRACE1, + FT_TRACE2, ..., FT_TRACE6. The trace macros are used to send debugging messages when an appropriate "debug level" is configured at runtime through the @@ -28,21 +28,21 @@ located in the file "ftoptions.h". The macros are: FT_DEBUG_MEMORY - If this macro is #defined, the FreeType engines is linked with a + If this macro is #defined, the FreeType engine is linked with a small but effective debugging memory manager that tracks all allocations and frees that are performed within the font engine. When the FT2_DEBUG_MEMORY environment variable is defined at runtime, a call to FT_Done_FreeType will dump memory statistics, including the list of leaked memory blocks with the source locations - where these were allocated. It's always a very good idea to define + where these were allocated. It is always a very good idea to define this in development builds. This works with _any_ program linked to FreeType, but requires a big deal of memory (the debugging memory manager never frees the blocks to the heap in order to detect double frees). When FT2_DEBUG_MEMORY isn't defined at runtime, the debugging memory - manager is ignored, and performance is un-affected. + manager is ignored, and performance is unaffected. II. Debugging macros @@ -59,7 +59,7 @@ its code: either FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined in "ftoption.h". - Note that you must use with a printf-like signature, but with double + Note that you have to use a printf-like signature, but with double parentheses, like in: FT_ERROR(( "your %s is not %s\n", "foo", "bar" )); @@ -93,9 +93,9 @@ its code: trace_XXXX where XXXX is one of the component names defined in the internal file . - Each such component is assigned a "debug level", ranging from 0 to 6 - when a program linked with FreeType starts, through the use of the - FT2_DEBUG environment variable, described later. + Each such component is assigned a "debug level", ranging from 0 + to 6, through the use of the FT2_DEBUG environment variable + (described below) when a program linked with FreeType starts. When FT_TRACE is called, its level is compared to the one of the corresponding component. Messages with trace levels *higher* than @@ -106,7 +106,7 @@ its code: least* 2. The second parameter to FT_TRACE must contain parentheses and - correspond to a print-like call, as in: + correspond to a printf-like call, as in: FT_TRACE( 2, ( "your %s is not %s\n", "foo", "bar" ) ) @@ -123,7 +123,6 @@ III. Environment variables The following environment variables control debugging output and behaviour of FreeType at runtime: - FT2_DEBUG This variable is only used when FreeType is built with @@ -133,51 +132,52 @@ behaviour of FreeType at runtime: component1:level1 component2:level2 component3:level3 ... where "componentX" is the name of a tracing component, as defined in - "fttrace.h", but without the "trace_" prefix, and "levelX" is the + "fttrace.h", but without the "trace_" prefix. "levelX" is the corresponding level to use at runtime. "any" is a special component name that will be interpreted as "any/all components". For example, the following definitions set FT2_DEBUG=any:2 memory:5 io:4 (on Windows) - export FT2_DEBUG="any:2 memory:5 io:4" (on Linux) + export FT2_DEBUG="any:2 memory:5 io:4" (on Linux with bash) both stipulate that all components should have level 2, except for - the memory and io components which will be set to trace levels 5 and - 4 respectively. + the memory and io components which will be set to trace levels 5 + and 4, respectively. FT2_DEBUG_MEMORY This environment variable, when defined, tells FreeType to use a - debugging memory manager that will track leaked memory blocks as + debugging memory manager that will track leaking memory blocks as well as other common errors like double frees. It is also capable - of reporting _where_ the leaked blocks were allocated, which + of reporting _where_ the leaking blocks were allocated, which considerably saves time when debugging new additions to the library. This code is only compiled when FreeType is built with the FT_DEBUG_MEMORY macro #defined in "ftoption.h" though, it will be ignored in other builds. - FT2_ALLOC_TOTAL_MAX - this variable is ignored if FT2_DEBUG_MEMORY is not defined. It allows - you to specify a maximum heap size for all memory allocations performed - by FreeType. This is very useful to test the robustness of the font - engine and programs that use it in tight memory conditions. + This variable is ignored if FT2_DEBUG_MEMORY is not defined. It + allows you to specify a maximum heap size for all memory allocations + performed by FreeType. This is very useful to test the robustness + of the font engine and programs that use it in tight memory + conditions. - If it is undefined, or if its value is not strictly positive, then no - allocation bounds are checked at runtime. - + If it is undefined, or if its value is not strictly positive, then + no allocation bounds are checked at runtime. FT2_ALLOC_COUNT_MAX - this variable is ignored if FT2_DEBUG_MEMORY is not defined. It allows - you to sepcify a maximum number of memory allocations performed by - FreeType before returning the error FT_Err_Out_Of_Memory. This is - useful for debugging and testing the engine's robustness. + This variable is ignored if FT2_DEBUG_MEMORY is not defined. It + allows you to specify a maximum number of memory allocations + performed by FreeType before returning the error + FT_Err_Out_Of_Memory. This is useful for debugging and testing the + engine's robustness. - If it is undefined, or if its value is not strictly positive, then no - allocation bounsd are checked at runtime. + If it is undefined, or if its value is not strictly positive, then + no allocation bounsd are checked at runtime. -End of file + +--- end of DEBUG --- diff --git a/docs/INSTALL b/docs/INSTALL index 8f5bc320c..93c8bd36d 100644 --- a/docs/INSTALL +++ b/docs/INSTALL @@ -1,65 +1,66 @@ -Welcome -There are several ways to build the FreeType library, depending on your -system and the level of customization you need. Here's a short overview -of the documentation available: +There are several ways to build the FreeType library, depending on your +system and the level of customization you need. Here is a short +overview of the documentation available: -I. Normal installation and upgrades: - 1. Native TrueType Hinting: - - Native TrueType hinting is disabled by default[1]. If you really need it, - read the file "TRUETYPE" for information. +I. Normal installation and upgrades +=================================== - - 2. Unix Systems (as well as Cygwin or MSys on Windows): + 1. Native TrueType Hinting + + Native TrueType hinting is disabled by default[1]. If you really + need it, read the file "TRUETYPE" for information. + + 2. Unix Systems (as well as Cygwin or MSys on Windows) Please read *both* UPGRADE.UNX and INSTALL.UNX to install or upgrade - FreeType 2 on a Unix system. Note that you *will* need GNU Make, since - other make tools won't work (this includes BSD Make !!) + FreeType 2 on a Unix system. Note that you *will* need GNU Make, + since other make tools won't work (this includes BSD Make). - 3. On VMS with the "mms" build tool: + 3. On VMS with the "mms" build tool - see INSTALL.VMS for installation instructions on this platform + See INSTALL.VMS for installation instructions on this platform. - 4. Other systems using GNU Make: + 4. Other systems using GNU Make - on non-Unix platforms, it's possible to build the library using - GNU Make utility. Note that *NO OTHER MAKE TOOL WILL WORK* !! - This methods supports several compilers on Windows, OS/2 and BeOS, + On non-Unix platforms, it is possible to build the library using GNU + Make utility. Note that *NO OTHER MAKE TOOL WILL WORK*[2]! This + methods supports several compilers on Windows, OS/2, and BeOS, including Mingw, Visual C++, Borland C++, and more. - instructions are provided in the file "INSTALL.GNU" + Instructions are provided in the file "INSTALL.GNU". - - 5. With an IDE Project File (e.g. for Visual Studio or CodeWarrior): + 5. With an IDE Project File (e.g. for Visual Studio or CodeWarrior) - we provide a small number of "project files" for various IDEs to - automatically build the library as well. Note that these files are - not supported and sporadically maintained by FreeType developers, - so don't expect them to work in each release. + We provide a small number of "project files" for various IDEs to + automatically build the library as well. Note that these files are + not supported and sporadically maintained by FreeType developers, so + don't expect them to work in each release. - to find them, have a look at the content of the "builds/" + To find them, have a look at the content of the "builds/" directory, where stands for your OS or environment. - - 6. From you own IDE, or own Makefiles: + 6. From you own IDE, or own Makefiles If you want to create your own project file, follow the instructions given in the "INSTALL.ANY" document of this directory. -II. Custom builds of the library: +II. Custom builds of the library +================================ - Customizing the compilation of FreeType is easy, and allows you to select - only the components of the font engine that you really need. For more details - read the file "CUSTOMIZE" + Customizing the compilation of FreeType is easy, and allows you to + select only the components of the font engine that you really need. + For more details read the file "CUSTOMIZE". --------------------------------------------------------------------- +------------------------------------------------------------------------ [1] More details on: http://www.freetype.org/patents.html -End of file +[2] make++, a make tool written in Perl, has sufficient support of GNU + make extensions to build FreeType. See + http://makepp.sourceforge.net for more information. - \ No newline at end of file +--- end of INSTALL --- diff --git a/docs/INSTALL.ANY b/docs/INSTALL.ANY index 5e2cf0eea..af3f6e7a3 100644 --- a/docs/INSTALL.ANY +++ b/docs/INSTALL.ANY @@ -1,96 +1,99 @@ -Instructions on how to build FreeType with your own build tool: +Instructions on how to build FreeType with your own build tool +============================================================== - see the file "CUSTOMIZE" to learn how to customize FreeType to - specific environments. +See the file "CUSTOMIZE" to learn how to customize FreeType to specific +environments. - follow these simple steps: -I. Normal way: --------------- +I. Standard procedure +--------------------- - * DISABLE PRE-COMPILED HEADERS ! This is very important for Visual + * DISABLE PRE-COMPILED HEADERS! This is very important for Visual C++, because FreeType uses lines like: - #include FT_FREETYPE_H + #include FT_FREETYPE_H - which are not correctly supported by this compiler, while being - ISO C compliant !! + which are not correctly supported by this compiler while being ISO C + compliant! * You need to add the directories "freetype2/include" to your include path when compiling the library. - * FreeType 2 is made of several components; each one of them is - located in a subdirectory of "freetype2/src". For example, + * FreeType 2 is made of several components; each of them is located in + a subdirectory of "freetype2/src". For example, 'freetype2/src/truetype/' contains the TrueType font driver. * DO NOT COMPILE ALL C FILES! Rather, compile the following ones: - -- base components (required) + -- base components (required) - src/base/ftsystem.c - src/base/ftinit.c - src/base/ftdebug.c - src/base/ftbase.c - src/base/ftglyph.c - src/base/ftbbox.c - src/base/ftmm.c - src/base/ftpfr.c -- optional, see - src/base/ftbdf.c -- optional, see - src/base/ftwinfnt.c -- optional, see + src/base/ftsystem.c + src/base/ftinit.c + src/base/ftdebug.c + src/base/ftbase.c + src/base/ftglyph.c + src/base/ftbbox.c + src/base/ftmm.c + src/base/ftpfr.c -- optional, see + src/base/ftbdf.c -- optional, see + src/base/ftwinfnt.c -- optional, see - src/base/ftmac.c -- only on the Macintosh + src/base/ftmac.c -- only on the Macintosh - -- other components are optional + -- other components (optional) - src/autohint/autohint.c -- auto hinting module - src/cache/ftcache.c -- cache sub-system (in beta) - src/sfnt/sfnt.c -- SFNT files support - (TrueType & OpenType) - src/cff/cff.c -- CFF/OpenType font driver - src/pfr/pfr.c -- PFR/TrueDoc font driver - src/bdf/bdf.c -- BDF font driver - src/pcf/pcf.c -- PCF font driver - src/psnames/psnames.c -- Postscript glyph names support - src/psaux/psaux.c -- Postscript Type 1 parsing - src/truetype/truetype.c -- TrueType font driver - src/type1/type1.c -- Type 1 font driver - src/cid/type1cid.c -- Type 1 CID-keyed font driver - src/winfonts/winfonts.c -- Windows FONT / FNT font driver - src/raster1/raster1.c -- monochrome rasterizer - src/smooth/smooth.c -- anti-aliasing rasterizer + src/autohint/autohint.c -- auto hinting module + src/cache/ftcache.c -- cache sub-system (in beta) + src/sfnt/sfnt.c -- SFNT files support + (TrueType & OpenType) + src/cff/cff.c -- CFF/OpenType font driver + src/pfr/pfr.c -- PFR/TrueDoc font driver + src/bdf/bdf.c -- BDF font driver + src/pcf/pcf.c -- PCF font driver + src/psnames/psnames.c -- PostScript glyph names support + src/psaux/psaux.c -- PostScript Type 1 parsing + src/truetype/truetype.c -- TrueType font driver + src/type1/type1.c -- Type 1 font driver + src/cid/type1cid.c -- Type 1 CID-keyed font driver + src/winfonts/winfonts.c -- Windows FONT / FNT font driver + src/raster1/raster1.c -- monochrome rasterizer + src/smooth/smooth.c -- anti-aliasing rasterizer - Note: + Notes: `truetype.c' needs `sfnt.c' and `psnames.c' `type1.c' needs `psaux.c' and `psnames.c' `type1cid.c' needs `psaux.c' and `psnames.c' `cff.c' needs `sfnt.c', `psaux.c', and `psnames.c' - that should be it ! in case of problems, see the archives of - the FreeType development mailing list. + + You are done. In case of problems, see the archives of the FreeType + development mailing list. II. Support for flat-directory compilation ------------------------------------------ - It is possible to put all FreeType 2 source files into a single + It is possible to put all FreeType 2 source files into a single directory, with the *exception* of the `include' hierarchy. - 1. Copy all files in current directory: + 1. Copy all files in current directory - cp freetype2/src/base/*.[hc] . - cp freetype2/src/raster1/*.[hc] . - cp freetype2/src/smooth/*.[hc] . - etc. + cp freetype2/src/base/*.[hc] . + cp freetype2/src/raster1/*.[hc] . + cp freetype2/src/smooth/*.[hc] . + etc. - 2. Compile sources: + 2. Compile sources - cc -c -Ifreetype2/include ftsystem.c - cc -c -Ifreetype2/include ftinit.c - cc -c -Ifreetype2/include ftdebug.c - cc -c -Ifreetype2/include ftbase.c - etc. + cc -c -Ifreetype2/include ftsystem.c + cc -c -Ifreetype2/include ftinit.c + cc -c -Ifreetype2/include ftdebug.c + cc -c -Ifreetype2/include ftbase.c + etc. - You don't need to define the FT_FLAT_COMPILATION macro (as this was - required in previous releases of FreeType 2). + You don't need to define the FT_FLAT_COMPILATION macro (as this was + required in previous releases of FreeType 2). + +--- end of INSTALL.ANY --- diff --git a/docs/INSTALL.GNU b/docs/INSTALL.GNU index df6f012e3..d984789e5 100644 --- a/docs/INSTALL.GNU +++ b/docs/INSTALL.GNU @@ -1,128 +1,139 @@ -This document contains instructions on how to build the FreeType library -on non-Unix systems with the help of GNU Make. Note that if you're running -Cygwin or MSys in Windows, you should follow the instructions of INSTALL.UNX -instead. +This document contains instructions how to build the FreeType library on +non-Unix systems with the help of GNU Make. Note that if you are +running Cygwin or MSys in Windows, you should follow the instructions in +the file INSTALL.UNX instead. - FreeType 2 includes a powerful and flexible build system that allows - you to easily compile it on a great variety of platforms from the + FreeType 2 includes a powerful and flexible build system that allows + you to easily compile it on a great variety of platforms from the command line. To do so, just follow these simple instructions: - a. Install GNU Make + 1. Install GNU Make + ------------------- - Because GNU Make is the only Make tool supported to compile + Because GNU Make is the only Make tool supported to compile FreeType 2, you should install it on your machine. - The FreeType 2 build system relies on many features special to GNU - Make -- trying to build the library with any other Make tool will + The FreeType 2 build system relies on many features special to GNU + Make -- trying to build the library with any other Make tool will *fail*. - NEARLY ALL OTHER MAKE TOOLS WILL FAIL, INCLUDING "BSD MAKE", SO + NEARLY ALL OTHER MAKE TOOLS WILL FAIL, INCLUDING "BSD MAKE", SO REALLY INSTALL A RECENT VERSION OF GNU MAKE ON YOUR SYSTEM! - Make sure that you are invoking GNU Make from the command line, by + Note that make++, a make tool written in Perl, supports enough + features of GNU make to compile FreeType. See + http://makepp.sourceforge.net for more information. + + Make sure that you are invoking GNU Make from the command line, by typing something like: - make -v + make -v to display its version number. VERSION 3.78.1 OR NEWER IS NEEDED! + 2. Invoke 'make' + ---------------- - b. Invoke 'make' - - Go to the root directory of FreeType 2, then simply invoke GNU - Make from the command line. This will launch the FreeType 2 host - platform detection routines. A summary will be displayed, for + Go to the root directory of FreeType 2, then simply invoke GNU Make + from the command line. This will launch the FreeType 2 host + platform detection routines. A summary will be displayed, for example, on Win32: - ============================================================== - FreeType build system -- automatic system detection + ============================================================== + FreeType build system -- automatic system detection - The following settings are used: + The following settings are used: - platform win32 - compiler gcc - configuration directory ./builds/win32 - configuration rules ./builds/win32/w32-gcc.mk + platform win32 + compiler gcc + configuration directory ./builds/win32 + configuration rules ./builds/win32/w32-gcc.mk - If this does not correspond to your system or settings please - remove the file 'config.mk' from this directory then read the - INSTALL file for help. + If this does not correspond to your system or settings please + remove the file 'config.mk' from this directory then read the + INSTALL file for help. - Otherwise, simply type 'make' again to build the library. - ============================================================= + Otherwise, simply type 'make' again to build the library. + ============================================================= - If the detected settings correspond to your platform and compiler, - skip to step e. Note that if your platform is completely alien to + If the detected settings correspond to your platform and compiler, + skip to step 5. Note that if your platform is completely alien to the build system, the detected platform will be 'ansi'. - c. Configure the build system for a different compiler + 3. Configure the build system for a different compiler + ------------------------------------------------------ - If the build system correctly detected your platform, but you want - to use a different compiler than the one specified in the summary - (for most platforms, gcc is the defaut compiler), invoke GNU Make + If the build system correctly detected your platform, but you want + to use a different compiler than the one specified in the summary + (for most platforms, gcc is the defaut compiler), invoke GNU Make with - make setup + make setup - For example: + Examples: - to use Visual C++ on Win32, type: "make setup visualc" - to use Borland C++ on Win32, type "make setup bcc32" - to use Watcom C++ on Win32, type "make setup watcom" - to use Intel C++ on Win32, type "make setup intelc" - to use LCC-Win32 on Win32, type: "make setup lcc" - to use Watcom C++ on OS/2, type "make setup watcom" - to use VisualAge C++ on OS/2, type "make setup visualage" + to use Visual C++ on Win32, type: "make setup visualc" + to use Borland C++ on Win32, type "make setup bcc32" + to use Watcom C++ on Win32, type "make setup watcom" + to use Intel C++ on Win32, type "make setup intelc" + to use LCC-Win32 on Win32, type: "make setup lcc" + to use Watcom C++ on OS/2, type "make setup watcom" + to use VisualAge C++ on OS/2, type "make setup visualage" - The name to use is platform-dependent. The list of - available compilers for your system is available in the file + The name to use is platform-dependent. The list of + available compilers for your system is available in the file `builds//detect.mk' - If you are satisfied by the new configuration summary, skip to - step e. + If you are satisfied by the new configuration summary, skip to + step 5. - d. Configure the build system for an unknown platform/compiler - The auto-detection/setup phase of the build system copies a file - to the current directory under the name `config.mk'. + 4. Configure the build system for an unknown platform/compiler + -------------------------------------------------------------- - For example, on OS/2+gcc, it would simply copy + The auto-detection/setup phase of the build system copies a file to + the current directory under the name `config.mk'. + + For example, on OS/2+gcc, it would simply copy `builds/os2/os2-gcc.mk' to `./config.mk'. - If for some reason your platform isn't correctly detected, copy - manually the configuration sub-makefile to `./config.mk' and go to - step e. + If for some reason your platform isn't correctly detected, copy + manually the configuration sub-makefile to `./config.mk' and go to + step 5. - Note that this file is a sub-Makefile used to specify Make - variables for compiler and linker invocation during the build. - You can easily create your own version from one of the existing - configuration files, then copy it to the current directory under - the name `./config.mk'. + Note that this file is a sub-Makefile used to specify Make variables + for compiler and linker invocation during the build. You can easily + create your own version from one of the existing configuration + files, then copy it to the current directory under the name + `./config.mk'. - e. Build the library - The auto-detection/setup phase should have copied a file in the - current directory, called `./config.mk'. This file contains - definitions of various Make variables used to invoke the compiler + 5. Build the library + -------------------- + + The auto-detection/setup phase should have copied a file in the + current directory, called `./config.mk'. This file contains + definitions of various Make variables used to invoke the compiler and linker during the build. - To launch the build, simply invoke GNU Make again: The top - Makefile will detect the configuration file and run the build with - it. + To launch the build, simply invoke GNU Make again: The top Makefile + will detect the configuration file and run the build with it. - - Final note: + Final note - the build system builds a statically linked library of the font engine - in the "objs" directory. It does _not_ support the build of DLLs on - Windows and OS/2, if you need these, you'll have to either use - a IDE-specific project file, or follow the instructions in + The build system builds a statically linked library of the font + engine in the "objs" directory. It does _not_ support the build of + DLLs on Windows and OS/2. If you need these, you have to either use + a IDE-specific project file, or follow the instructions in "INSTALL.ANY" to create your own Makefiles. + + +--- end of INSTALL.GNU --- diff --git a/docs/INSTALL.UNX b/docs/INSTALL.UNX index 6af176dba..148338098 100644 --- a/docs/INSTALL.UNX +++ b/docs/INSTALL.UNX @@ -1,181 +1,64 @@ This document contains instructions on how to build the FreeType library -on Unix systems. This also works for emulations like Cygwin or MSys on +on Unix systems. This also works for emulations like Cygwin or MSys on Win32: - I. Ensure that you are using GNU Make + 1. Ensure that you are using GNU Make ------------------------------------- - The FreeType build system _exclusively_ works with GNU Make. You - will not be able to compile the library with the instructions - below using any other alternative (including BSD Make). + The FreeType build system _exclusively_ works with GNU Make. You + will not be able to compile the library with the instructions below + using any other alternative (including BSD Make). - Trying to compile the library with a different Make tool will - print a message like: + [Well, this is not really correct. Recently, a perl implementation + of make called `makepp' has appeared which can also build FreeType 2 + successfully on Unix platforms. See http://makepp.sourceforge.net + for more details.] + + Trying to compile the library with a different Make tool will print + a message like: Sorry, GNU make is required to build FreeType2. - and the build process will be aborted. If this happens, install - GNU Make on your system, and use the GNUMAKE environment variable - to name it. + and the build process will be aborted. If this happens, install GNU + Make on your system, and use the GNUMAKE environment variable to + name it. + 2. Build and install the library + -------------------------------- - IV. Build and install the library - --------------------------------- - - The following should work on all Unix systems where the 'make' + The following should work on all Unix systems where the `make' command invokes GNU Make: - ./configure --prefix= + ./configure [options] make make install (as root) - where "" must be replaced by the prefix returned by - the "freetype-config" command. + The default installation path is "/usr/local". It can be changed + with the `--prefix=' option. Example: - When using a different command to invoke GNU Make, use the GNUMAKE - variable. For example, if `gmake' is the command to use on your + ./configure --prefix=/usr + + When using a different command to invoke GNU Make, use the GNUMAKE + variable. For example, if `gmake' is the command to use on your system, do something like: - GNUMAKE=gmake ./configure --prefix= + GNUMAKE=gmake ./configure [options] gmake gmake install (as root) - If this still doesn't work, something's rotten on your system( - (e.g. you're using a very old version of GNU Make) + If this still doesn't work, something's rotten on your system + (e.g. you are using a very old version of GNU Make). + + It is possible to compile FreeType in a different directory. + Assuming the FreeType source files in directory `/src/freetype' a + compilation in directory `foo' works as follows: + + cd foo + /src/freetype/configure [options] + make + make install - -I. Unix systems ---------------- - - If you have GNU Make installed, simply type - - ./configure - make - make install - - on the command line to configure, build and install FreeType on your - system. Note that the default installation path is "/usr/local". - - Please read the file README.UNX, it contains _critical_ information - regarding the installation of FreeType on many Unix systems. - - -II. From the command line -------------------------- - - If you are not using Unix, there are two ways to quickly build - FreeType 2 from the command line. - - The first, and favorite one, is to use the "Jam" build tool. Jam is - a highly portable replacement for Make whose control files do not - depend on the current platform or compiler toolset. - - For more information, please see: - - http://www.freetype.org/jam/index.html - - The second one is to use "GNU Make" (and NO OTHER MAKE TOOL). - - - 1. Building FT2 with "Jam" - -------------------------- - - Once you've got *our version* of the Jam tool installed on your - system, simply go to the top-level FT2 directory, then type - - "jam" - - on the command line. This will build the library and place it in - the "objs" directory. - - By default, a static library is built. On Unix systems, it is - possible to build a shared library through the "libtool" script. - You need to have libtool installed on your system, then re-define - a few environment variables before invoking Jam, as in - - export CC="libtool --mode=compile cc" - export LINK="libtool --mode=link cc" - jam - - In later releases of FT2, building shared libraries with Jam - should become automatic on Unix systems. - - - 2. Building FT2 with "GNU Make" - ------------------------------- - - You need to have GNU Make (version 3.78.1 or newer) installed on - your system to compile the library from the command line. This will - _NOT_ work with other make tools (including BSD make)! - - [Well, this is not really correct. Recently, a perl implementation - of make called `makepp' has appeared which can also build FreeType 2 - successfully on Unix platforms. See http://makepp.sourceforge.net - for more details.] - - - Go to the `freetype2' directory. - - - Unix (any C compiler should work): - - - make setup (don't worry, this will invoke a configure script) - - make - - make install - - Alternatively, you can pass parameters to the configure script - within the CFG variable, as in: - - - make setup CFG="--prefix=/usr" - - make - - make install - - If the configure script isn't run, try to add `unix' as a target - on the command line, e.g.: - - - make setup unix CFG="--prefix=/opt/experimental" - - - - Windows: - - We provide a version of GNU Make for Win32 on the FreeType site. - See http://www.freetype.org/download.html for details. - - - gcc (Mingw, _not_ CygWin): - - - make setup - - make - - - - Visual C++: - - - make setup visualc - - make - - - - other compilers: - - - make setup bcc32 -> Borland C++ 32 bits - - make setup intelc -> Intel C++ - - make setup watcom -> Watcom C++ - - make setup lcc -> Win32-LCC - - - If you want to build FreeType 2 in another directory, you must set - two environment variables, `OJB_DIR' and `TOP_DIR'. The former - gives the directory where the object files and the library should be - created (this directory must exist), the latter the top directory of - the FreeType 2 source tree. Example: - - OBJ_DIR=~/freetype2.compiled TOP_DIR=~/freetype2 \ - make -f$TOP_DIR/Makefile setup ansi - OBJ_DIR=~/freetype2.compiled TOP_DIR=~/freetype2 \ - make -f$TOP_DIR/Makefile - - On Unix boxes, calling `configure' from the build directory is - sufficient; it will build a small Makefile which calls the - FreeType 2 Makefile with the necessary parameters. - - ---- end of INSTALL -- +--- end of INSTALL.UNX -- diff --git a/docs/INSTALL.VMS b/docs/INSTALL.VMS index a82b9fd01..4d9d64ca2 100644 --- a/docs/INSTALL.VMS +++ b/docs/INSTALL.VMS @@ -1,8 +1,8 @@ How to build the freetype2 library on VMS ----------------------------------------- -Just type one of the following depending on the type of external entries you -want: +Just type one of the following depending on the type of external entries +you want: mms @@ -14,22 +14,23 @@ The library is avalaible in the directory [.LIB] -To compile applications using freetype2 you'll need to define the logical +To compile applications using FreeType 2 you have to define the logical FREETYPE pointing to the directory [.INCLUDE.FREETYPE] -(i.e., if the directory in which this README.VMS file is located is +i.e., if the directory in which this INSTALL.VMS file is located is $disk:[freetype] then define the logical with define freetype $disk:[freetype.include.freetype] -This version has been tested with Compaq C V6.2-006 on OpenVMS Alpha V7.2-1. +This version has been tested with Compaq C V6.2-006 on OpenVMS Alpha +V7.2-1. Any problems can be reported to - joukj@hrem.stm.tudelft.nl + Jouk Jansen - Jouk Jansen +--- end of INSTALL.VMS --- diff --git a/docs/TODO b/docs/TODO index b0abb6875..73a349868 100644 --- a/docs/TODO +++ b/docs/TODO @@ -1,13 +1,13 @@ -Note that the list of known bugs for FreeType 2 is now located in the -document "docs/BUGS". - Here is a list of items that need to be addressed in FreeType 2; they are not exactly bugs, but should be considered though: * Implement stem3/counter hints properly in the Postscript hinter. -* FInalize the cache sub-system. If has been in beta for too long :-) +* Finalize the cache sub-system. It has been in beta far too long :-) * The automatic and Postscript hinters have been improved to increase - the quality of AA text, but Monochrome and LCD hinting still suck. we - need to do something about that.. + the quality of AA text, but Monochrome and LCD hinting still suck. We + need to do something about that. + + +--- end of TODO --- diff --git a/docs/TRUETYPE b/docs/TRUETYPE index 4ec4001b2..68ecf1971 100644 --- a/docs/TRUETYPE +++ b/docs/TRUETYPE @@ -1,14 +1,14 @@ How to enable the TrueType native hinter if you need it -------------------------------------------------------- - The TrueType bytecode interpreter is disabled in all public - releases of the FreeType packages for patents reasons (see + The TrueType bytecode interpreter is disabled in all public releases + of the FreeType packages for patents reasons (see http://www.freetype.org/patents.html for more details). - However, many Linux distributions do enable the interpreter in the - FreeType packages (DEB/RPM/etc.) they produce for their platforms. - If you are using TrueType fonts on your system, you most probably - want to enable it manually by doing the following: + However, many Linux distributions do enable the interpreter in the + FreeType packages (DEB/RPM/etc.) they produce for their platforms. If + you are using TrueType fonts on your system, you most probably want to + enable it manually by doing the following: - open the file "include/freetype/config/ftoption.h" @@ -20,4 +20,7 @@ How to enable the TrueType native hinter if you need it #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER - of course, this must be done _before_ compiling the library + These steps must be done _before_ compiling the library. + + +--- end of TRUETYPE --- diff --git a/docs/UPGRADE.UNX b/docs/UPGRADE.UNX index 0e67f9077..0246b97c7 100644 --- a/docs/UPGRADE.UNX +++ b/docs/UPGRADE.UNX @@ -2,87 +2,88 @@ SPECIAL NOTE FOR UNIX USERS =========================== - If you are installing this release of FreeType on a system that - already uses release 2.0.5 (or even an older version), you have to + If you are installing this release of FreeType on a system that + already uses release 2.0.5 (or even an older version), you have to perform a few special steps to ensure that everything goes well. - I. Enable the TrueType bytecode hinter if you need it + 1. Enable the TrueType bytecode hinter if you need it ----------------------------------------------------- See the instructions in the file "TRUETYPE" of this directory. - Note that FreeType supports TrueType fonts without the bytecode - interpreter through its auto-hinter, which now generate relatively good - results with most fonts. + Note that FreeType supports TrueType fonts without the bytecode + interpreter through its auto-hinter, which now generates relatively + good results with most fonts. - II. Determine the correct installation path - -------------------------------------------- + 2. Determine the correct installation path + ------------------------------------------ - By default, the source package will install the library in - "/usr/local". However, many Unix distributions now install the - library in "/usr", since FreeType is becoming a critical system + By default, the configure script will install the library in + "/usr/local". However, many Unix distributions now install the + library in "/usr", since FreeType is becoming a critical system component. If FreeType is already installed on your system, type freetype-config --prefix - on the command line. This should return the installation path to - use below (e.g. "/usr" or "/usr/local"). Otherwise, simply use - "/usr" (or what you think is adequate for your installation). + on the command line. This should return the installation path + (e.g., "/usr" or "/usr/local"). To avoid problems of parallel + FreeType versions, use this path for the --prefix option of the + configure script. + + Otherwise, simply use "/usr" (or whatever you think is adequate for + your installation). + 3. Ensure that you are using GNU Make + ------------------------------------- - III. Ensure that you are using GNU Make - --------------------------------------- + The FreeType build system _exclusively_ works with GNU Make (as an + exception you can use make++ which emulates GNU Make sufficiently; + see http://makepp.sourceforge.net). You will not be able to compile + the library with the instructions below using any other alternative + (including BSD Make). - The FreeType build system _exclusively_ works with GNU Make. You - will not be able to compile the library with the instructions - below using any other alternative (including BSD Make). - - Trying to compile the library with a different Make tool will - print a message like: + Trying to compile the library with a different Make tool will print + a message like: Sorry, GNU make is required to build FreeType2. - and the build process will be aborted. If this happens, install - GNU Make on your system, and use the GNUMAKE environment variable - to name it. + and the build process will be aborted. If this happens, install GNU + Make on your system, and use the GNUMAKE environment variable to + name it. + 4. Build and install the library + -------------------------------- - IV. Build and install the library - --------------------------------- - - The following should work on all Unix systems where the `make' + The following should work on all Unix systems where the `make' command invokes GNU Make: ./configure --prefix= make make install (as root) - where "" must be replaced by the prefix returned by - the "freetype-config" command. + where "" must be replaced by the prefix returned by the + "freetype-config" command. - When using a different command to invoke GNU Make, use the GNUMAKE - variable. For example, if `gmake' is the command to use on your + When using a different command to invoke GNU Make, use the GNUMAKE + variable. For example, if `gmake' is the command to use on your system, do something like: GNUMAKE=gmake ./configure --prefix= gmake gmake install (as root) - If this still doesn't work, read the detailed compilation - procedure available in the file "docs/BUILD" for troubleshooting. - - V. Take care of XFree86 version 4 + 5. Take care of XFree86 version 4 --------------------------------- - Certain recent Linux distributions will install _several_ versions - of FreeType on your system. For example, on a fresh Mandrake 8.1 + Certain recent Linux distributions will install _several_ versions + of FreeType on your system. For example, on a fresh Mandrake 8.1 system, you can find the following files: /usr/lib/libfreetype.so which links to @@ -93,22 +94,21 @@ SPECIAL NOTE FOR UNIX USERS /usr/X11R6/lib/libfreetype.so which links to /usr/X11R6/lib/libfreetype.6.0.so - Note that these files correspond to two distinct versions of the - library! It seems that this surprising issue is due to the - install scripts of recent XFree86 servers (from 4.1.0) which - irremediably install their own (dated) version of the library in - "/usr/X11R6/lib". + Note that these files correspond to two distinct versions of the + library! It seems that this surprising issue is due to the install + scripts of recent XFree86 servers (from 4.1.0) which install their + own (dated) version of the library in "/usr/X11R6/lib". - In certain _rare_ cases you may experience minor problems if you - install this release of the library in "/usr" only, namely, that - certain applications will not benefit from the bug fixes and - rendering improvements you'd expect. + In certain _rare_ cases you may experience minor problems if you + install this release of the library in "/usr" only, namely, that + certain applications will not benefit from the bug fixes and + rendering improvements you would expect. There are two good ways to deal with this situation: - - Install the library _twice_, in "/usr" and in "/usr/X11R6" - (you have to do that each time you install a new FreeType - release though). + - Install the library _twice_, in "/usr" and in "/usr/X11R6" (you + have to do that each time you install a new FreeType release + though). - Change the link in /usr/X11R6/lib/libfreetype.so to point to @@ -118,7 +118,10 @@ SPECIAL NOTE FOR UNIX USERS /usr/X11R6/lib/libfreetype.6.0.so - The FreeType Team is not responsible for this problem, so please - contact either the XFree86 development team or your Linux - distributor to help clear this issue in case the information given + The FreeType Team is not responsible for this problem, so please + contact either the XFree86 development team or your Linux + distributor to help clear this issue in case the information given here doesn't help. + + +---- end of UPGRADE.UNX --- diff --git a/docs/VERSION.DLL b/docs/VERSION.DLL index ec4f4c61b..10ccbfe82 100644 --- a/docs/VERSION.DLL +++ b/docs/VERSION.DLL @@ -1,90 +1,98 @@ -Due to our use of "libtool" to generate and install the FreeType 2 libraries -on Unix systems, as well as other historical events, it is generally very -difficult to know precisely which release of the font engine is installed -on a given system. +Due to our use of "libtool" to generate and install the FreeType 2 +libraries on Unix systems, as well as other historical events, it is +generally very difficult to know precisely which release of the font +engine is installed on a given system. -This file tries to explain why and to document ways to properly detect +This file tries to explain why and to document ways to properly detect FreeType on Unix. -I. Version & Release numbers: +1. Version & Release numbers +---------------------------- -For each new public release of FreeType 2, there are generally *three* +For each new public release of FreeType 2, there are generally *three* distinct "version" numbers to consider: - * the official FT2 release number, like 2.0.9, or 2.1.3 + * The official FT2 release number, like 2.0.9, or 2.1.3. - * the libtool (and Unix) specific version number, like "9.2.3". This - is what "freetype-config --version" will return + * The libtool (and Unix) specific version number, like "9.2.3". This + is what "freetype-config --version" will return. - * the platform-specific shared object number, used for example when - the library is installed as "/usr/lib/libfreetype.so.6.3.2" + * The platform-specific shared object number, used for example when + the library is installed as "/usr/lib/libfreetype.so.6.3.2". +The platform-specific number is, unsurprisingly, platform-specific and +varies with the operating system you are using (several variants of +Linux, FreeBSD, Solaris, etc.). You should thus _never_ use it, even +for simple tests. -the platform-specific number is, unsurprisingly, platform-specific and varies -with the operating system you're using (several variants of Linux, FreeBSD, -Solaris, etc...). You should thus _never_ use it, even for simple tests. +The libtool-specific number does not equal the release number but is +tied to it. -the libtool-specific number does not equal the release number but is tied -to it. - -the release number is available at *compile* time through the following +The release number is available at *compile* time through the following macros defined in FT_FREETYPE_H: - FREETYPE_MAJOR : major release number - FREETYPE_MINOR : minor release number - FREETYPE_PATCH : patch release number -see below for some Autoconf fragment to +See below for a small autoconf fragment. + +The release number is also available at *runtime* through the +"FT_Library_Version" API. Unfortunately, this one wasn't available or +working correctly before the 2.1.3 official release. -the release number is also available at *runtime* through the -"FT_Library_Version" API. Unfortunately, this one wasn't available or -working correctly before the 2.1.3 official release !! +2. History +---------- + +The following table gives, for each official release, the corresponding +libtool number, as well as the shared object number found on _most_ +systems, but not all of them: + + release libtool so + ------------------------------------- + 2.1.4 9.3.3 6.3.3 + 2.1.3 9.2.3 6.3.2 + 2.1.2 9.1.3 6.3.1 + 2.1.1 9.0.3 ? + 2.1.0 8.0.2 ? + 2.0.9 9.0.3 ? + 2.0.8 8.0.2 ? + +The libtool numbers are a bit inconsistent due to the library's history: + + - 2.1.0 was created as a development branch from 2.0.8 (hence the same + libtool numbers). + + - 2.0.9 was a bug-fix release of the "stable" branch, and we + incorrectly increased its libtool number. + + - 2.1.4 is still in the "development" branch, however it is stable + enough to be the basis of an upcoming 2.2.0 release. -II. Table: +3. Autoconf Code Fragment +------------------------- -the following is a simple table that gives, for each official release, -the corresponding libtool number, as well as the shared object number -found on _most_ systems, but not all of them: +Lars Clausen contributed the following autoconf fragment to detect which +version of FreeType is installed on a system. This one tests for a +version that is at least 2.0.9; you should change the last line to check +against other release numbers. - release libtool so -------------------------------------- - 2.1.4 9.3.3 6.3.3 - 2.1.3 9.2.3 6.3.2 - 2.1.2 9.1.3 6.3.1 - 2.1.1 9.0.3 ? - 2.1.0 8.0.2 ? - 2.0.9 9.0.3 ? - 2.0.8 8.0.2 ? - -the libtool numbers are a bit inconsistent due to the library's history: - - - 2.1.0 was created as a development branch from 2.0.8 - (hence the same libtool numbers) - - - 2.0.9 was a bug-fix release of the "stable" branch, we - apparently incorrectly increased its libtool number - - - 2.1.4 is still in the "development" branch, however it's stable enough - to be the basis of an upcoming 2.2.0 release + AC_MSG_CHECKING([for version of FreeType]) + FREETYPE_INCLUDE=`freetype-config --cflags | cut -c3-` + FREETYPE_MAJOR=`grep '^#define FREETYPE_MAJOR' \ + $FREETYPE_INCLUDE/freetype/freetype.h | cut -d' ' -f3` + FREETYPE_MINOR=`grep '^#define FREETYPE_MINOR' \ + $FREETYPE_INCLUDE/freetype/freetype.h | cut -d' ' -f3` + FREETYPE_PATCH=`grep '^#define FREETYPE_PATCH' \ + $FREETYPE_INCLUDE/freetype/freetype.h | cut -d' ' -f3` + FREETYPE_VERSION=`echo | awk "BEGIN { printf \"%d\", \ + ($FREETYPE_MAJOR * 1000 + $FREETYPE_MINOR) * 1000 \ + + $FREETYPE_PATCH;}"` + AC_MSG_RESULT([$FREETYPE_MAJOR.$FREETYPE_MINOR.$FREETYPE_PATCH]) + if test "$FREETYPE_VERSION" -ge 2000009; then - -III. AutoConf Code Fragment: - -Lars Clausen contributed the following Autoconf fragment to detect at -which version of FreeType is installed on your system. This one tests -for a version that is at least 2.0.9, you should change the last line to -check against other release numbers. - - AC_MSG_CHECKING([for version of FreeType]) - FREETYPE_INCLUDE=`freetype-config --cflags | cut -c3-` - FREETYPE_MAJOR=`grep '^#define FREETYPE_MAJOR' $FREETYPE_INCLUDE/freetype/freetype.h | cut -d' ' -f3` - FREETYPE_MINOR=`grep '^#define FREETYPE_MINOR' $FREETYPE_INCLUDE/freetype/freetype.h | cut -d' ' -f3` - FREETYPE_PATCH=`grep '^#define FREETYPE_PATCH' $FREETYPE_INCLUDE/freetype/freetype.h | cut -d' ' -f3` - FREETYPE_VERSION=`echo | awk "BEGIN { printf \"%d\", ($FREETYPE_MAJOR * 1000 + $FREETYPE_MINOR) * 1000 + $FREETYPE_PATCH;}"` - AC_MSG_RESULT([$FREETYPE_MAJOR.$FREETYPE_MINOR.$FREETYPE_PATCH]) - if test "$FREETYPE_VERSION" -ge 2000009; then - +--- end of VERSION.DLL --- diff --git a/docs/license.txt b/docs/license.txt index 51b52bf87..dc011d1d5 100644 --- a/docs/license.txt +++ b/docs/license.txt @@ -1,28 +1,25 @@ - The FreeType 2 font engine is copyrighted work, and cannot be - used legally without a software license. In order to make this - project usable to a vast majority of developers, we distribute it - under two dual licenses. +The FreeType 2 font engine is copyrighted work and cannot be used +legally without a software license. In order to make this project +usable to a vast majority of developers, we distribute it under two +mutually exclusive licenses. - What this means is that *you* must choose *one* license among those - described below, then obey all its terms and conditions when using - FreeType 2 in any of your projects or products: +This means that *you* must choose *one* license of the two described +below, then obey all its terms and conditions when using FreeType 2 in +any of your projects or products. + + - The FreeType License, found in the file "FTL.TXT", which is an + BSD-style open-source license *with* an advertising clause that + forces you to explicitely cite the FreeType project in your + product's documentation. All details are in the license file. + + - The GNU General Public License, found in "GPL.TXT", which is the + traditionnal and "viral" GPL license that forces you to redistribute + the _complete_ sources of all your products that use FreeType 2. + +Note that the contributed PCF driver comes with a license similar to +that of X Window System which is compatible to the above two licenses +(see file src/pcf/readme). - - The FreeType License, found in the file "FTL.TXT", which is - an BSD-style open-source license *with* an advertising - clause that forces you to explicitely cite the - FreeType project in your product's documentation. All - details are in the license file - - - - The GNU General Public License, found in "GPL.TXT", which is - the traditionnal and "viral" GPL license, that - forces you to redistribute the _complete_ sources of all - your products that simply use FreeType 2. - - - Note that the contributed PCF driver comes with a license similar to - that of X Window System which is compatible to the above two - licenses (see file src/pcf/readme). - +--- end of licence.txt --- diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h index 4e3457f73..44117cdf6 100644 --- a/include/freetype/config/ftoption.h +++ b/include/freetype/config/ftoption.h @@ -4,7 +4,7 @@ /* */ /* User-selectable configuration macros (specification only). */ /* */ -/* Copyright 1996-2001, 2002 by */ +/* Copyright 1996-2001, 2002, 2003 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */