* doc/INSTALL.UNX: Cleaned up.

Other minor fixes/beautifying/formatting.
This commit is contained in:
Werner Lemberg 2003-04-21 13:30:27 +00:00
parent 692bbe59da
commit a16c4a7129
22 changed files with 810 additions and 857 deletions

275
ChangeLog
View File

@ -1,209 +1,233 @@
2003-04-20 Werner Lemberg <wl@gnu.org>
* doc/INSTALL.UNX: Cleaned up.
2003-04-09 Torrey Lyons <torrey@mrcla.com> 2003-04-09 Torrey Lyons <torrey@mrcla.com>
* src/base/ftmac.c (open_face_from_buffer): removed a double-free bug that * src/base/ftmac.c (open_face_from_buffer): Removed a double-free
had nasty consequences when trying to open an "invalid" font on a Mac. bug that had nasty consequences when trying to open an "invalid"
font on a Mac.
2003-04-09 Mike Fabian <mfabian@suse.de> 2003-04-09 Mike Fabian <mfabian@suse.de>
* src/bdf/bdfdrivr.h, src/pcf/pcf.h: changed FT_Short to FT_UShort in * src/bdf/bdfdrivr.h, src/pcf/pcf.h: Changed FT_Short to FT_UShort
order to be able to access more than 32768 glyphs in fonts in order to be able to access more than 32768 glyphs in fonts.
2003-04-08 David Turner <david@freetype.org> 2003-04-08 David Turner <david@freetype.org>
FreeType 2.1.4 Released
======================= * Version 2.1.4 is released.
============================
2003-04-03 Martin Muskens <mmuskens@aurelon.com> 2003-04-03 Martin Muskens <mmuskens@aurelon.com>
* src/type1/t1load.c (T1_Open_Face): fixed the code to make it handle * src/type1/t1load.c (T1_Open_Face): Fixed the code to make it
special cases where a font only contains a ".notdef" glyph (happens in handle special cases where a font only contains a ".notdef" glyph
PDF-embedded fonts !!). Otherwise, FT_Panic was called ! (happens in PDF-embedded fonts). Otherwise, FT_Panic was called.
2003-03-27 David Turner <david@freetype.org> 2003-03-27 David Turner <david@freetype.org>
* 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 * 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 will ignore stem quantization only when FT_LOAD_TARGET_SMOOTH is
used.
* src/base/ftobjs.c: changed the default computations to include rounding * src/base/ftobjs.c: Changed the default computations to include
in all cases, this is required to provide accurate kerning data when rounding in all cases; this is required to provide accurate kerning
native TrueType hinting is enabled. data when native TrueType hinting is enabled.
* src/type1/t1load.c: the Type 1 loader now accepts more general names * src/type1/t1load.c: The Type 1 loader now accepts more general
according to the Postscript spec (the previous one was too restrictive) names according to the PostScript specification (the previous one
was too restrictive).
2003-03-20 David Turner <david@freetype.org> 2003-03-20 David Turner <david@freetype.org>
* docs/*: serious rewriting of the documentation Serious rewriting of the documentation.
* include/freetype/internal/ftobjs.h, src/base/ftobjs.c, src/bdf/bdfdrivr.c, * docs/BUGS, docs/BUILD: Removed.
src/pcf/pcfdriver.c, src/pfr/pfrsbit.c, src/sfnt/ttsbit.c, * docs/DEBUG.TXT: Renamed to...
src/type42/t42objs.c, src/winfonts/winfnt.c: introduced three new functions * docs/DEBUG: This.
to deal with glyph bitmaps within FT_GlyphSlot objects. these are: * 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 * docs/*: Updated.
ft_glyphslot_alloc_bitmap
ft_glyphslot_set_bitmap
these are much more convenient to use than managing the FT_GLYPH_OWN_BITMAP * include/freetype/internal/ftobjs.h, src/base/ftobjs.c,
flag manually. the font drivers have been modified to use them as well. 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, These functions are much more convenient to use than managing the
src/autohint/ahhint.c: fixed blue-scale problem 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 * src/cache/ftlru.c: Fixed an invalid assertion check.
in rare circumstances (mostly with broken fonts)
* 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 <david@freetype.org> 2003-03-15 David Turner <david@freetype.org>
* src/truetype/ttdriver.c (Set_Char_Sizes): fixed a small rounding bug. * src/truetype/ttdriver.c (Set_Char_Sizes): Fixed a small rounding
Actually, it seems that previous versions of FreeType didn't perform bug. Actually, it seems that previous versions of FreeType didn't
TrueType rounding exactly as appropriate. perform TrueType rounding exactly as appropriate.
2003-03-14 David Turner <david@freetype.org> 2003-03-14 David Turner <david@freetype.org>
* src/truetype/ttdriver.c: fixing the small TrueType native rendering * src/truetype/ttdriver.c: Fixing the small TrueType native
glitches, they came from a small rounding error. rendering glitches, they came from a small rounding error.
2003-03-13 David Turner <david@freetype.org> 2003-03-13 David Turner <david@freetype.org>
* src/base/ftdbgmem.c, docs/DEBUG.TXT: added new environment variables * src/base/ftdbgmem.c, docs/DEBUG.TXT: Added new environment
to control memory debugging with FreeType. See the description of variables to control memory debugging with FreeType. See the
"FT2_DEBUG_MEMORY", "FT2_ALLOC_TOTAL_MAX" and "FT2_ALLOC_COUNT_MAX" description of "FT2_DEBUG_MEMORY", "FT2_ALLOC_TOTAL_MAX" and
in DEBUG.TXT "FT2_ALLOC_COUNT_MAX" in DEBUG.TXT.
* src/cache/ftccache.c, src/cache/ftccmap.c, src/cache/ftcsbits.c, * 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 src/cache/ftlru.c: Fixed the cache sub-system to correctly deal with
conditions. out-of-memory conditions.
* src/pfr/pfrobjs.c, src/pfr/pfrsbits.c: fixing compiler warnings and a * src/pfr/pfrobjs.c, src/pfr/pfrsbits.c: Fixing compiler warnings
small memory leak and a small memory leak.
* src/psaux/psobjs.c (t1_reallocate_table): fixed a bug (memory leak) that * src/psaux/psobjs.c (t1_reallocate_table): Fixed a bug (memory
only happened when trying to resize an array would end in an OOM. 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 * src/truetype/ttobjs.c: Removed segmentation fault that happened in
tight memory environments. tight memory environments.
2003-02-28 Pixel <pixel@mandrakesoft.com> 2003-02-28 Pixel <pixel@mandrakesoft.com>
* src/gzip/ftgzip.c (ft_gzip_file_done): fixed memory leak, the ZLib * src/gzip/ftgzip.c (ft_gzip_file_done): Fixed memory leak: The ZLib
stream was not properly finalized stream was not properly finalized.
2003-02-25 Anthony Fok <anthony@thizlinux.com> 2003-02-25 Anthony Fok <anthony@thizlinux.com>
* src/cache/ftccmap.c: the cmap cache now supports UCS-4 charmaps * src/cache/ftccmap.c: The cmap cache now supports UCS-4 charmaps
when available in Asian fonts when available in Asian fonts.
* src/sfnt/ttload.c, src/base/ftobjs.c: changed "asian" to "Asian" in * src/sfnt/ttload.c, src/base/ftobjs.c: Changed "asian" to "Asian"
comments in comments.
2003-02-25 David Turner <david@freetype.org> 2003-02-25 David Turner <david@freetype.org>
* src/gzip/ftgzip.c: fixed a bug that caused FreeType to loop endlessly * src/gzip/ftgzip.c: Fixed a bug that caused FreeType to loop
when trying to read certain compressed gzip files. The following test endlessly when trying to read certain compressed gzip files. The
could be used to reveal the bug: 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 - The list of available embedded bitmaps was not correctly set in
fixes to the PFR font driver: the root FT_FaceRec structure describing the face.
- the list of available embedded bitmaps was not correctly set - The glyph loader always tried to load the outlines when
in the root FT_FaceRec structure describing the face FT_LOAD_SBITS_ONLY was specified.
- the glyph loader always tried to load the outlines when - The table loaded now scans for *undocumented* elements of a
FT_LOAD_SBITS_ONLY was specified 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 NOTE THAT THESE CHANGES THE FAMILY NAME OF MANY PFR FONTS!
physical font's auxiliary data record, this is necessary to
retrieve the "real" family and style names.
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
* src/truetype/ttdriver.c (Set_Char_Sizes): fixed a rounding bug when points with resolution.
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 <david@freetype.org> 2003-02-18 David Turner <david@freetype.org>
* src/truetype/ttdriver.c, src/truetype/ttobjs.h, src/truetype/ttobjs.c, * src/truetype/ttdriver.c, src/truetype/ttobjs.h,
src/truetype/ttinterp.c, src/base/ftobjs.c: fixing the slight distortion src/truetype/ttobjs.c, src/truetype/ttinterp.c, src/base/ftobjs.c:
problem that occured due to the latest auto-hinter changes Fixing the slight distortion problem that ocurred due to the latest
auto-hinter changes.
* src/autohint/ahhint.c: Disabled the advance width "correction"
* src/autohint/ahhint.c: disabled the advance width "correction" which which seemed to provide more trouble than benefits.
seemed to provide more trouble than benefits..
2003-02-13 Graham Asher <graham.asher@btinternet.com> 2003-02-13 Graham Asher <graham.asher@btinternet.com>
* include/freetype/ftincrem.h, src/cff/cffgload.c, src/cid/cidgload.c, * include/freetype/ftincrem.h, src/cff/cffgload.c,
src/truetype/ttgload.c, src/type1/t1gload.c src/cid/cidgload.c, src/truetype/ttgload.c, src/type1/t1gload.c
[FT_CONFIG_OPTION_INCREMENTAL]: I have changed the incremental loading [FT_CONFIG_OPTION_INCREMENTAL]: Changed the incremental loading
interface in a way that makes it simpler and allows glyph metrics to 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) be changed (e.g., by adding a constant, as required by CFF fonts)
rather than just overridden. This was required to make the GhsotScript- rather than just overridden. This was required to make the
to-FreeType bridge work. GhsotScript-to-FreeType bridge work.
2003-01-31 David Turner <david@freetype.org> 2003-01-31 David Turner <david@freetype.org>
* docs/CHANGES, docs/VERSION.DLL, docs/TODO: updating documentation for * docs/CHANGES, docs/VERSION.DLL, docs/TODO: Updating documentation
the 2.1.4 release for the 2.1.4 release.
* builds/win32/visualc/freetype.dsp, builds/win32/visualc/index.html: * builds/win32/visualc/freetype.dsp,
updating the project file for 2.1.4 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/adler32.c, src/gzip/ftgzip.c, src/gzip/infblock.c,
src/gzip/infcodes.c, src/gzip/inflate.c, src/gzip/inftrees.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 src/gzip/infutil.c: Removed old-style (K&R)function definitions.
avoids warnings with Visual C++ at its most pedantic mode. 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 * 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 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. display a waterfall with a font without a Unicode charmap (e.g.
SYMBOL.TTF) SYMBOL.TTF).
* src/autohint/ahtypes.h, src/autohint/ahhint.c, src/base/ftobjs.c, * src/autohint/ahtypes.h, src/autohint/ahhint.c, src/base/ftobjs.c,
src/truetype/ttobjs.c: implemented FT_CONFIG_CHESTER_BLUE_SCALE, src/truetype/ttobjs.c: Implemented FT_CONFIG_CHESTER_BLUE_SCALE,
corresponding to the last patch from David Chester, but with a corresponding to the last patch from David Chester, but with a much
much simpler (and saner) implementation. simpler (and saner) implementation.
* src/pshinter/pshalgo3.c: improved the Postscript hinter. Getting rid * src/pshinter/pshalgo3.c: Improved the Postscript hinter. Getting
of stem snapping seems to work well here (though the stems are still rid of stem snapping seems to work well here (though the stems are
slightly moved to increase contrast). still slightly moved to increase contrast).
THIS IMPROVES ANTI-ALIASED RENDERING, BUT MONOCHROME AND LCD MODES THIS IMPROVES ANTI-ALIASED RENDERING, BUT MONOCHROME AND LCD MODES
STILL SUCK... I need to work this a bit STILL SUCK.
2003-01-22 David Chester <davidchester@qmx.net> 2003-01-22 David Chester <davidchester@qmx.net>
* 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 <david@freetype.org> 2003-01-22 David Turner <david@freetype.org>
* include/freetype/ftbdf.h, include/freetype/internal/bdftypes.h, * include/freetype/ftbdf.h, include/freetype/internal/bdftypes.h,
src/base/ftbdf.c, src/bdf/bdfdrivr.c, src/pcf/pcfdrivr.c, src/base/ftbdf.c, src/bdf/bdfdrivr.c, src/pcf/pcfdrivr.c,
src/pcf/pcfread.h: 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 * src/sfnt/ttload.c (sfnt_dir_check): Relaxed the "head" table size
properties of a given PCF or BDF font verification to accept a few broken fonts who pad the size
incorrectly (the table should be padded, but its "size" field
* src/sfnt/ttload.c (sfnt_dir_check): relaxed the "head" table size shouldn't according to the specification).
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)
2003-01-18 Werner Lemberg <wl@gnu.org> 2003-01-18 Werner Lemberg <wl@gnu.org>
@ -325,9 +349,10 @@
2002-12-23 Anthony Fok <anthony@thizlinux.com> 2002-12-23 Anthony Fok <anthony@thizlinux.com>
* builds/unix/configure.ac, builds/unix/unix-cc.in, * builds/unix/configure.ac, builds/unix/unix-cc.in (LINK_LIBRARY),
builds/unix/unix-def.in: Small fix to configure sub-system on Unix builds/unix/unix-def.in (SYSTEM_ZLIB): Small fix to configure
to allow other programs to correctly link with zlib when needed. sub-system on Unix to allow other programs to correctly link with
zlib when needed.
2002-12-17 David Turner <david@freetype.org> 2002-12-17 David Turner <david@freetype.org>

63
Jamfile
View File

@ -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 HDRMACRO is already defined in FTJam and is used to add
# the content of certain macros to the list of included header # the content of certain macros to the list of included header
# files. # 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 # the following code
# #
if ! $(JAM_TOOLSET) if ! $(JAM_TOOLSET)
{ {
rule HDRMACRO rule HDRMACRO
{ {
# nothing !! # nothing
} }
} }
# We need to invoke a SubDir rule if the FT2 source directory top is not the # 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 # current directory. This allows us to build FreeType 2 as part of a larger
# project easily. # project easily.
@ -25,71 +26,71 @@ if $(FT2_TOP) != $(DOT)
SubDir FT2_TOP ; SubDir FT2_TOP ;
} }
#
# The following macros define the include directory, the source directory # The following macros define the include directory, the source directory,
# and the final library name (without library extensions). They can be # and the final library name (without library extensions). They can be
# replaced by other definitions when the library is compiled as part of # replaced by other definitions when the library is compiled as part of
# a larger project. # a larger project.
# #
# name of FreeType include directory during compilation. # Name of FreeType include directory during compilation.
# relative to FT2_TOP # This is relative to FT2_TOP.
# #
FT2_INCLUDE_DIR ?= include ; FT2_INCLUDE_DIR ?= include ;
# name of FreeType source directory during compilation. # Name of FreeType source directory during compilation.
# relative to FT2_TOP # This is relative to FT2_TOP.
# #
FT2_SRC_DIR ?= src ; FT2_SRC_DIR ?= src ;
# name of final library, without extension # Name of final library, without extension.
# #
FT2_LIB ?= $(LIBPREFIX)freetype ; FT2_LIB ?= $(LIBPREFIX)freetype ;
# define FT2_BUILD_INCLUDE to point to your build-specific directory # Define FT2_BUILD_INCLUDE to point to your build-specific directory.
# this is prepended to FT2_INCLUDE_DIR. This can be used to specify # This is prepended to FT2_INCLUDE_DIR. It can be used to specify
# the location of a custom <ft2build.h> which will point to custom # the location of a custom <ft2build.h> 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 ?= ; FT2_BUILD_INCLUDE ?= ;
# the list of modules to compile on any given build of the library # 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 # 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 # IMPORTANT: You'll need to change the content of "ftmodule.h" as well
# if you modify this list or provide your own. # 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 autohint # auto-hinter
base # base component (public APIs) base # base component (public APIs)
bdf # BDF font driver bdf # BDF font driver
cache # cache sub-system cache # cache sub-system
cff # CFF/CEF font driver cff # CFF/CEF font driver
cid # Postscript CID-keyed font driver cid # PostScript CID-keyed font driver
pcf # PCF font driver pcf # PCF font driver
pfr # PFR/TrueDoc font driver pfr # PFR/TrueDoc font driver
psaux # Common Postscript routines module psaux # common PostScript routines module
pshinter # Postscript hinter module pshinter # PostScript hinter module
psnames # Postscript names handling psnames # PostScript names handling
raster # Monochrome rasterizer raster # monochrome rasterizer
smooth # Anti-aliased rasterizer smooth # anti-aliased rasterizer
sfnt # SFNT-based format support routines sfnt # SFNT-based format support routines
truetype # TrueType font driver truetype # TrueType font driver
type1 # Postscript Type 1 font driver type1 # PostScript Type 1 font driver
type42 # Postscript Type 42 (embedded TrueType) driver type42 # PostScript Type 42 (embedded TrueType) driver
winfonts # Windows FON/FNT font driver winfonts # Windows FON/FNT font driver
; ;
# don't touch # Don't touch.
# #
FT2_INCLUDE = $(FT2_BUILD_INCLUDE) FT2_INCLUDE = $(FT2_BUILD_INCLUDE)
[ FT2_SubDir $(FT2_INCLUDE_DIR) ] ; [ FT2_SubDir $(FT2_INCLUDE_DIR) ] ;
FT2_SRC = [ FT2_SubDir $(FT2_SRC_DIR) ] ; FT2_SRC = [ FT2_SubDir $(FT2_SRC_DIR) ] ;
# only used by FreeType developers # Only used by FreeType developers.
# #
if $(DEBUG_HINTER) if $(DEBUG_HINTER)
{ {
@ -104,11 +105,12 @@ HDRS += $(FT2_INCLUDE) ;
# Uncomment the following line if you want to build individual source files # Uncomment the following line if you want to build individual source files
# for each FreeType 2 module. this is only useful during development, and # for each FreeType 2 module. This is only useful during development, and
# is better defined as an environment variable anyway ! # is better defined as an environment variable anyway!
# #
# FT2_MULTI = true ; # FT2_MULTI = true ;
# The file <freetype/config/ftheader.h> is used to define macros that are # The file <freetype/config/ftheader.h> is used to define macros that are
# later used in #include statements. It needs to be parsed in order to # later used in #include statements. It needs to be parsed in order to
# record these definitions. # record these definitions.
@ -116,13 +118,14 @@ HDRS += $(FT2_INCLUDE) ;
HDRMACRO [ FT2_SubDir include freetype config ftheader.h ] ; HDRMACRO [ FT2_SubDir include freetype config ftheader.h ] ;
HDRMACRO [ FT2_SubDir include freetype internal internal.h ] ; HDRMACRO [ FT2_SubDir include freetype internal internal.h ] ;
# Now include the Jamfile in "freetype2/src", used to drive the compilation # Now include the Jamfile in "freetype2/src", used to drive the compilation
# of each FreeType 2 component and/or module. # of each FreeType 2 component and/or module.
# #
SubInclude FT2_TOP $(FT2_SRC_DIR) ; 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) if $(DEBUG_HINTER)
{ {

View File

@ -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 HDRMACRO is already defined in FTJam and is used to add
# the content of certain macros to the list of included header # the content of certain macros to the list of included header
# files. # 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 # the following code
# #
if ! $(JAM_TOOLSET) if ! $(JAM_TOOLSET)
{ {
rule HDRMACRO rule HDRMACRO
{ {
# nothing !! # nothing
} }
} }
# We need to invoke a SubDir rule if the FT2 source directory top is not the # 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 # current directory. This allows us to build FreeType 2 as part of a larger
# project easily. # project easily.
@ -25,71 +26,71 @@ if $(FT2_TOP) != $(DOT)
SubDir FT2_TOP ; SubDir FT2_TOP ;
} }
#
# The following macros define the include directory, the source directory # The following macros define the include directory, the source directory,
# and the final library name (without library extensions). They can be # and the final library name (without library extensions). They can be
# replaced by other definitions when the library is compiled as part of # replaced by other definitions when the library is compiled as part of
# a larger project. # a larger project.
# #
# name of FreeType include directory during compilation. # Name of FreeType include directory during compilation.
# relative to FT2_TOP # This is relative to FT2_TOP.
# #
FT2_INCLUDE_DIR ?= include ; FT2_INCLUDE_DIR ?= include ;
# name of FreeType source directory during compilation. # Name of FreeType source directory during compilation.
# relative to FT2_TOP # This is relative to FT2_TOP.
# #
FT2_SRC_DIR ?= src ; FT2_SRC_DIR ?= src ;
# name of final library, without extension # Name of final library, without extension.
# #
FT2_LIB ?= $(LIBPREFIX)freetype ; FT2_LIB ?= $(LIBPREFIX)freetype ;
# define FT2_BUILD_INCLUDE to point to your build-specific directory # Define FT2_BUILD_INCLUDE to point to your build-specific directory.
# this is prepended to FT2_INCLUDE_DIR. This can be used to specify # This is prepended to FT2_INCLUDE_DIR. It can be used to specify
# the location of a custom <ft2build.h> which will point to custom # the location of a custom <ft2build.h> 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 ?= ; FT2_BUILD_INCLUDE ?= ;
# the list of modules to compile on any given build of the library # 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 # 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 # IMPORTANT: You'll need to change the content of "ftmodule.h" as well
# if you modify this list or provide your own. # 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 autohint # auto-hinter
base # base component (public APIs) base # base component (public APIs)
bdf # BDF font driver bdf # BDF font driver
cache # cache sub-system cache # cache sub-system
cff # CFF/CEF font driver cff # CFF/CEF font driver
cid # Postscript CID-keyed font driver cid # PostScript CID-keyed font driver
pcf # PCF font driver pcf # PCF font driver
pfr # PFR/TrueDoc font driver pfr # PFR/TrueDoc font driver
psaux # Common Postscript routines module psaux # common PostScript routines module
pshinter # Postscript hinter module pshinter # PostScript hinter module
psnames # Postscript names handling psnames # PostScript names handling
raster # Monochrome rasterizer raster # monochrome rasterizer
smooth # Anti-aliased rasterizer smooth # anti-aliased rasterizer
sfnt # SFNT-based format support routines sfnt # SFNT-based format support routines
truetype # TrueType font driver truetype # TrueType font driver
type1 # Postscript Type 1 font driver type1 # PostScript Type 1 font driver
type42 # Postscript Type 42 (embedded TrueType) driver type42 # PostScript Type 42 (embedded TrueType) driver
winfonts # Windows FON/FNT font driver winfonts # Windows FON/FNT font driver
; ;
# don't touch # Don't touch.
# #
FT2_INCLUDE = $(FT2_BUILD_INCLUDE) FT2_INCLUDE = $(FT2_BUILD_INCLUDE)
[ FT2_SubDir $(FT2_INCLUDE_DIR) ] ; [ FT2_SubDir $(FT2_INCLUDE_DIR) ] ;
FT2_SRC = [ FT2_SubDir $(FT2_SRC_DIR) ] ; FT2_SRC = [ FT2_SubDir $(FT2_SRC_DIR) ] ;
# only used by FreeType developers # Only used by FreeType developers.
# #
if $(DEBUG_HINTER) if $(DEBUG_HINTER)
{ {
@ -103,13 +104,13 @@ if $(DEBUG_HINTER)
HDRS += $(FT2_INCLUDE) ; HDRS += $(FT2_INCLUDE) ;
#SubDirHdr += $(FT2_INCLUDE) ;
# Uncomment the following line if you want to build individual source files # 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 ; # FT2_MULTI = true ;
# The file <freetype/config/ftheader.h> is used to define macros that are # The file <freetype/config/ftheader.h> is used to define macros that are
# later used in #include statements. It needs to be parsed in order to # later used in #include statements. It needs to be parsed in order to
# record these definitions. # record these definitions.
@ -117,13 +118,14 @@ HDRS += $(FT2_INCLUDE) ;
HDRMACRO [ FT2_SubDir include freetype config ftheader.h ] ; HDRMACRO [ FT2_SubDir include freetype config ftheader.h ] ;
HDRMACRO [ FT2_SubDir include freetype internal internal.h ] ; HDRMACRO [ FT2_SubDir include freetype internal internal.h ] ;
# Now include the Jamfile in "freetype2/src", used to drive the compilation # Now include the Jamfile in "freetype2/src", used to drive the compilation
# of each FreeType 2 component and/or module. # of each FreeType 2 component and/or module.
# #
SubInclude FT2_TOP $(FT2_SRC_DIR) ; 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) if $(DEBUG_HINTER)
{ {

View File

@ -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. # 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 # 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 rule AddSubDirHdrs
{ {

26
README
View File

@ -2,23 +2,22 @@
Special notes to Unix users Special notes to Unix users
=========================== ===========================
Please read the file "docs/UPGRADE.UNX", it contains important Please read the file "docs/UPGRADE.UNX". It contains important
information regarding the installation of FreeType on Unix systems, information regarding the installation of FreeType on Unix systems,
especially GNU based operating systems like GNU/Linux. 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! is called `libttf'. They are *not* compatible!
FreeType 2.1.4 FreeType 2.1.4
============== ==============
Please read the docs/CHANGES file, it contains IMPORTANT Please read the docs/CHANGES file, it contains IMPORTANT INFORMATION.
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: separate package from our sites. See:
ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.1.4.tar.bz2 ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.1.4.tar.bz2
@ -26,14 +25,13 @@
ftp://ftp.freetype.org/pub/freetype2/ftdoc214.zip ftp://ftp.freetype.org/pub/freetype2/ftdoc214.zip
Reports 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".
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! Enjoy!

View File

@ -81,7 +81,6 @@ AC_SUBST(FTSYS_SRC)
AC_CHECK_FUNCS(memcpy memmove) AC_CHECK_FUNCS(memcpy memmove)
dnl Check for system zlib dnl Check for system zlib
AC_ARG_WITH(zlib, AC_ARG_WITH(zlib,
[ --without-zlib use internal zlib instead of system-wide]) [ --without-zlib use internal zlib instead of system-wide])
@ -98,8 +97,6 @@ AC_SUBST(CFLAGS)
AC_SUBST(LDFLAGS) AC_SUBST(LDFLAGS)
AC_SUBST(SYSTEM_ZLIB) AC_SUBST(SYSTEM_ZLIB)
AC_PROG_LIBTOOL AC_PROG_LIBTOOL
dnl create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk' dnl create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk'

View File

@ -5,7 +5,7 @@
/* FreeType 2 build and setup macros. */ /* FreeType 2 build and setup macros. */
/* (Generic version) */ /* (Generic version) */
/* */ /* */
/* Copyright 1996-2001 by */ /* Copyright 1996-2001, 2003 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -18,14 +18,14 @@
/* /*
* this is a development version of <ft2build.h> that is used * Rhis is a development version of <ft2build.h> that is used
* to build the library in debug mode. Its only difference with * to build the library in debug mode. Its only difference with
* the reference is that is forces the use of the local "ftoption.h" * the reference is that it forces the use of the local "ftoption.h"
* which contains different settings for all configuration macros * 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 * 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__ #ifndef __FT2_BUILD_GENERIC_H__

View File

@ -4,7 +4,7 @@
/* */ /* */
/* User-selectable configuration macros (specification only). */ /* User-selectable configuration macros (specification only). */
/* */ /* */
/* Copyright 1996-2001, 2002 by */ /* Copyright 1996-2001, 2002, 2003 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */
@ -23,9 +23,9 @@
#include <ft2build.h> #include <ft2build.h>
/* /*
* 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 * to define all debugging options, as well as the TrueType bytecode
* interpreter * interpreter.
*/ */
FT_BEGIN_HEADER FT_BEGIN_HEADER

View File

@ -2,88 +2,95 @@ LATEST CHANGES BETWEEN 2.1.4 and 2.1.3
I. IMPORTANT BUG FIXES 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. platforms.
- a fix in the Gzip stream reader, it couldn't read certain .gz files - A fix in the Gzip stream reader: It couldn't read certain .gz files
properly due to a small typo. In certain cases, FreeType could also properly due to a small typo. In certain cases, FreeType could also
loop endlessly when trying to load tiny gzipped files. loop endlessly when trying to load tiny gzipped files.
- the configure script now tries to use the system-wide zlib when - The configure script now tries to use the system-wide zlib when
it finds one (instead of the copy found in src/gzip). And it finds one (instead of the copy found in src/gzip). And
"freetype-config" has been updated to return relevant flags in this "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 - Certain fonts couldn't be loaded by 2.1.3 because they lacked a
Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously rejected Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously rejected
them. them.
- the CFF loader was modified to accept fonts which only - The CFF loader was modified to accept fonts which only contain a
contain a subset of their reference charset. This prevented the subset of their reference charset. This prevented the correct use
correct use of PDF-embedded fonts. of PDF-embedded fonts.
- the logic to detect Unicode charmaps has been modified. this is required - The logic to detect Unicode charmaps has been modified. This is
to support fonts which include both 16-bit and 32-bit charmaps (like required to support fonts which include both 16-bit and 32-bit
very recent asian ones) using the new 10 and 12 SFNT formats. 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 necessary to prevent broken fonts to break the engine by blowing the
stack with recursive glyph definitions. stack with recursive glyph definitions.
- the CMap cache is now capable of managing UCS-4 character codes that - The CMap cache is now capable of managing UCS-4 character codes that
are mapped through extended charmaps in recent TrueType/OpenType fonts are mapped through extended charmaps in recent TrueType/OpenType
fonts.
- the cache sub-system now properly manages out-of-memory conditions, - The cache sub-system now properly manages out-of-memory conditions
instead of blindly reporting them to the caller. This means that it instead of blindly reporting them to the caller. This means that it
will try to empty the cache before restarting its allocations to see will try to empty the cache before restarting its allocations to see
if that can help. 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. 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. font formats.
II. IMPORTANT CHANGES II. IMPORTANT CHANGES
- David Chester contributed some enhancements to the auto-hinter that - David Chester contributed some enhancements to the auto-hinter that
significantly increase the quality of its output. The Postscript hinter significantly increase the quality of its output. The Postscript
was also improved in several ways.. 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 - A new API function called `FT_Get_BDF_Property' has been added to
retrieve BDF properties from BDF _and_ PCF font files. THIS IS STILL FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font files.
EXPERIMENTAL, since it hasn't been properly tested yet. THIS IS STILL EXPERIMENTAL, since it hasn't been properly tested yet.
- a Windows FNT specific API has been added, mostly to access font - A Windows FNT specific API has been added, mostly to access font
headers. This is used by Wine headers. This is used by Wine.
- TrueType tables without a "hmtx" table are now tolerated when an - TrueType tables without an "hmtx" table are now tolerated when an
incremental interface is used. This happens for certain Type42 fonts incremental interface is used. This happens for certain Type42 fonts
passed from Ghostscript to FreeType. passed from Ghostscript to FreeType.
- the PFR font driver is now capable of returning the font family and - 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 style names when they are available (instead of the sole "FontID").
is performed by parsing an *undocumented* portion of the font file !! This is performed by parsing an *undocumented* portion of the font
file!
III. MISCELLANEOUS III. MISCELLANEOUS
- the path stroker in FT_STROKER_H has entered beta stage. It now works - 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 very well, but its interface might change a bit in the future. More
on this in later releases on this in later releases.
- the documentation for FT_Size_Metrics didn't appear properly in the - The documentation for FT_Size_Metrics didn't appear properly in the
API reference API reference.
- the file docs/VERSION.DLL has been updated to explain versioning - The file docs/VERSION.DLL has been updated to explain versioning
with FreeType (i.e. comparing release/libtool/so numbers, and how with FreeType (i.e., comparing release/libtool/so numbers, and how to
to use them in Autoconf scripts) 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 LATEST CHANGES BETWEEN 2.1.3 and 2.1.2
I. IMPORTANT BUG FIXES 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). precisely, when trying to apply hints to an empty glyph outline).
- The TrueType glyph loader now supports composites in "Apple format" - The TrueType glyph loader now supports composites in "Apple format"
(they differ slightly from Microsoft/OpenType ones in the way transform (they differ slightly from Microsoft/OpenType ones in the way
offsets are computed). transformation offsets are computed).
- FreeType was very slow at opening certain asian CID/CFF fonts, due - FreeType was very slow at opening certain asian CID/CFF fonts, due
to fixed increment in dynamic array re-allocations. This has been to fixed increment in dynamic array re-allocations. This has been
changed to exponential behaviour to get acceptable performance changed to exponential behaviour to get acceptable performance.
II. IMPORTANT CHANGES II. IMPORTANT CHANGES
- the PCF driver now supports gzip-compressed font files natively. This - 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 means that you will be able to use all these bitmap fonts that come
with XFree86 with FreeType (and libXft/libXft2, by extension). with XFree86 with FreeType (and libXft/libXft2, by extension).
- The automatic and postscript hinters have both been updated. This - 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 Note that the 'ftview' demo program available in the 'ft2demos' package
has been updated to support LCD-optimized display on non-paletted 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), - 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 - The TrueType charmap loader now supports certain "broken" fonts that
load under Windows without problems. 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 - Added support for the DESTDIR variable during "make install". This
simplifies packaging of FreeType. simplifies packaging of FreeType.
- included modified copies of the ZLib sources in 'src/gzip' in order - Included modified copies of the ZLib sources in 'src/gzip' in order to
to support gzip-compressed PCF fonts. We do not use the system-provided support gzip-compressed PCF fonts. We do not use the system-provided
zlib for now, though this is a probable enhancement for future releases 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 - The DocMaker tool used to generate the on-line API reference has been
completely rewritten. It is now located in completely rewritten. It is now located in

View File

@ -1,79 +1,85 @@
How to customize the compilation of the library: How to customize the compilation of the library:
================================================ ================================================
FreeType is highly customizable to fit various needs, and this document FreeType is highly customizable to fit various needs, and this
details how it is possible to select options and components at compilation document describes how it is possible to select options and components
time. 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 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. features, like native TrueType hinting through a bytecode interpreter.
we invite you to read this file for more information. You can change 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 the file's content to suit your needs, or override it with one of the
techniques described below.. techniques described below.
II. Modules list: II. Modules list
the file found in "include/freetype/config/ftmodule.h" contains a list The file found in "include/freetype/config/ftmodule.h" contains a list
of names corresponding to the modules / font drivers to be statically of names corresponding to the modules and font drivers to be
compiled in the FreeType library during the build. statically compiled in the FreeType library during the build.
you can change it to suit your own preferences. Be aware that certain 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 modules depend on others, as described by the file "modules.txt" in
this directory. this directory.
you can modify the file's content to suit your needs, or override it You can modify the file's content to suit your needs, or override it
at compile time with one of the methods described below 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 FreeType's default interface to the system (i.e., the parts that deal
memory management and i/o streams) is located in "src/base/ftsystem.c". with memory management and i/o streams) is located in
"src/base/ftsystem.c".
the current implementation uses standard C library calls to manage The current implementation uses standard C library calls to manage
memory and read font files. It is however possible to write custom memory and to read font files. It is however possible to write custom
implementations to suit specific systems. implementations to suit specific systems.
to tell the GNU Make-based build system to use a custom system interface, To tell the GNU Make-based build system to use a custom system
you'll need to define the environment variable FTSYS_SRC to point to interface, you have to define the environment variable FTSYS_SRC to
the relevant implementation, like in: point to the relevant implementation:
on Unix: on Unix:
./configure <youroptions>
export FTSYS_SRC=foo/my_ftsystem.c ./configure <your options>
make export FTSYS_SRC=foo/my_ftsystem.c
make install make
make install
on Windows: on Windows:
make setup <compiler>
set FTSYS_SRC=foo/my_ftsystem.c make setup <compiler>
make 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 It is possible to override the default configuration and module
without changing the original files. There are two ways to do that: 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 Use the C include path to ensure that your own versions of the files
files are used at compile time when the lines: are used at compile time when the lines
#include FT_CONFIG_OPTIONS_H #include FT_CONFIG_OPTIONS_H
#include FT_CONFIG_MODULES_H #include FT_CONFIG_MODULES_H
are compiled. Their default values being <freetype/config/ftoption.h> are compiled. Their default values being
and <freetype/config/ftmodule.h>, you can do something like: <freetype/config/ftoption.h> and <freetype/config/ftmodule.h>, you
can do something like:
custom/ custom/
freetype/ freetype/
@ -82,36 +88,38 @@ IV. Overriding default configuration and module headers:
ftmodule.h => custom modules list ftmodule.h => custom modules list
include/ => normal FreeType 2 include include/ => normal FreeType 2 include
freetype/ freetype/
... ...
then change the C include path to always give the path to "custom" then change the C include path to always give the path to "custom"
before the FreeType 2 "include" before the FreeType 2 "include".
2. Re-defining FT_CONFIG_OPTIONS_H and FT_CONFIG_MODULES_H 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 Another way to do the same thing is to redefine the macros used to
to name the configuration headers. To do so, you'll need a custom name the configuration headers. To do so, you need a custom
"ft2build.h", whose content can be as simple as: "ft2build.h" whose content can be as simple as:
#ifndef __FT2_BUILD_GENERIC_H__ #ifndef __FT2_BUILD_GENERIC_H__
#define __FT2_BUILD_GENERIC_H__ #define __FT2_BUILD_GENERIC_H__
#define FT_CONFIG_OPTIONS_H <custom/my-ftoption.h> #define FT_CONFIG_OPTIONS_H <custom/my-ftoption.h>
#define FT_CONFIG_MACROS_H <custom/my-ftmodule.h> #define FT_CONFIG_MACROS_H <custom/my-ftmodule.h>
#include <freetype/config/ftheader.h> #include <freetype/config/ftheader.h>
#endif /* __FT2_BUILD_GENERIC_H__ */ #endif /* __FT2_BUILD_GENERIC_H__ */
place them in: Place those files in a separate directory, e.g.:
custom/ custom/
ft2build.h => custom version described above ft2build.h => custom version described above
my-ftoption.h => custom options header my-ftoption.h => custom options header
my-ftmodule.h => custom modules list header my-ftmodule.h => custom modules list header
and change the C include path to ensure that "custom" is always placed and change the C include path to ensure that "custom" is always
before the FT2 "include" during compilation. placed before the FT2 "include" during compilation.
--- end of CUSTOMIZE ---

View File

@ -1,5 +1,5 @@
Debugging within the FreeType sources: Debugging within the FreeType sources
====================================== =====================================
I. Configuration macros I. Configuration macros
----------------------- -----------------------
@ -12,15 +12,15 @@ located in the file "ftoptions.h". The macros are:
FT_DEBUG_LEVEL_ERROR FT_DEBUG_LEVEL_ERROR
#define this macro if you want to compile the FT_ERROR macro calls #define this macro if you want to compile the FT_ERROR macro calls
used to print error messages during program execution. This will to print error messages during program execution. This will not
not stop the program, but is very useful to spot invalid fonts stop the program. Very useful to spot invalid fonts during
during development and code workarounds for them. development and to code workarounds for them.
FT_DEBUG_LEVEL_TRACE FT_DEBUG_LEVEL_TRACE
#define this macro if you want to compile both the FT_ERROR macro #define this macro if you want to compile both macros FT_ERROR and
and the FT_TRACE one. This also includes the variants FT_TRACE0, FT_TRACE. This also includes the variants FT_TRACE0, FT_TRACE1,
FT_TRACE1, FT_TRACE2, ..., FT_TRACE6. FT_TRACE2, ..., FT_TRACE6.
The trace macros are used to send debugging messages when an The trace macros are used to send debugging messages when an
appropriate "debug level" is configured at runtime through the 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 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 small but effective debugging memory manager that tracks all
allocations and frees that are performed within the font engine. allocations and frees that are performed within the font engine.
When the FT2_DEBUG_MEMORY environment variable is defined at When the FT2_DEBUG_MEMORY environment variable is defined at
runtime, a call to FT_Done_FreeType will dump memory statistics, runtime, a call to FT_Done_FreeType will dump memory statistics,
including the list of leaked memory blocks with the source locations 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 this in development builds. This works with _any_ program linked to
FreeType, but requires a big deal of memory (the debugging memory FreeType, but requires a big deal of memory (the debugging memory
manager never frees the blocks to the heap in order to detect double manager never frees the blocks to the heap in order to detect double
frees). frees).
When FT2_DEBUG_MEMORY isn't defined at runtime, the debugging memory 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 II. Debugging macros
@ -59,7 +59,7 @@ its code:
either FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined in either FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined in
"ftoption.h". "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: parentheses, like in:
FT_ERROR(( "your %s is not %s\n", "foo", "bar" )); 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 trace_XXXX where XXXX is one of the component names defined in the
internal file <freetype/internal/fttrace.h>. internal file <freetype/internal/fttrace.h>.
Each such component is assigned a "debug level", ranging from 0 to 6 Each such component is assigned a "debug level", ranging from 0
when a program linked with FreeType starts, through the use of the to 6, through the use of the FT2_DEBUG environment variable
FT2_DEBUG environment variable, described later. (described below) when a program linked with FreeType starts.
When FT_TRACE is called, its level is compared to the one of the When FT_TRACE is called, its level is compared to the one of the
corresponding component. Messages with trace levels *higher* than corresponding component. Messages with trace levels *higher* than
@ -106,7 +106,7 @@ its code:
least* 2. least* 2.
The second parameter to FT_TRACE must contain parentheses and 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" ) ) 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 The following environment variables control debugging output and
behaviour of FreeType at runtime: behaviour of FreeType at runtime:
FT2_DEBUG FT2_DEBUG
This variable is only used when FreeType is built with 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 ... component1:level1 component2:level2 component3:level3 ...
where "componentX" is the name of a tracing component, as defined in 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. corresponding level to use at runtime.
"any" is a special component name that will be interpreted as "any" is a special component name that will be interpreted as
"any/all components". For example, the following definitions "any/all components". For example, the following definitions
set FT2_DEBUG=any:2 memory:5 io:4 (on Windows) 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 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 the memory and io components which will be set to trace levels 5
4 respectively. and 4, respectively.
FT2_DEBUG_MEMORY FT2_DEBUG_MEMORY
This environment variable, when defined, tells FreeType to use a 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 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. considerably saves time when debugging new additions to the library.
This code is only compiled when FreeType is built with the This code is only compiled when FreeType is built with the
FT_DEBUG_MEMORY macro #defined in "ftoption.h" though, it will be FT_DEBUG_MEMORY macro #defined in "ftoption.h" though, it will be
ignored in other builds. ignored in other builds.
FT2_ALLOC_TOTAL_MAX FT2_ALLOC_TOTAL_MAX
this variable is ignored if FT2_DEBUG_MEMORY is not defined. It allows This variable is ignored if FT2_DEBUG_MEMORY is not defined. It
you to specify a maximum heap size for all memory allocations performed allows you to specify a maximum heap size for all memory allocations
by FreeType. This is very useful to test the robustness of the font performed by FreeType. This is very useful to test the robustness
engine and programs that use it in tight memory conditions. 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 If it is undefined, or if its value is not strictly positive, then
allocation bounds are checked at runtime. no allocation bounds are checked at runtime.
FT2_ALLOC_COUNT_MAX FT2_ALLOC_COUNT_MAX
this variable is ignored if FT2_DEBUG_MEMORY is not defined. It allows This variable is ignored if FT2_DEBUG_MEMORY is not defined. It
you to sepcify a maximum number of memory allocations performed by allows you to specify a maximum number of memory allocations
FreeType before returning the error FT_Err_Out_Of_Memory. This is performed by FreeType before returning the error
useful for debugging and testing the engine's robustness. 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 If it is undefined, or if its value is not strictly positive, then
allocation bounsd are checked at runtime. no allocation bounsd are checked at runtime.
End of file
--- end of DEBUG ---

View File

@ -1,65 +1,66 @@
Welcome
There are several ways to build the FreeType library, depending on your 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 system and the level of customization you need. Here is a short
of the documentation available: overview of the documentation available:
I. Normal installation and upgrades:
1. Native TrueType Hinting: I. Normal installation and upgrades
===================================
Native TrueType hinting is disabled by default[1]. If you really need it,
read the file "TRUETYPE" for information.
1. Native TrueType Hinting
2. Unix Systems (as well as Cygwin or MSys on Windows):
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 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 FreeType 2 on a Unix system. Note that you *will* need GNU Make,
other make tools won't work (this includes BSD 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 On non-Unix platforms, it is possible to build the library using GNU
GNU Make utility. Note that *NO OTHER MAKE TOOL WILL WORK* !! Make utility. Note that *NO OTHER MAKE TOOL WILL WORK*[2]! This
This methods supports several compilers on Windows, OS/2 and BeOS, methods supports several compilers on Windows, OS/2, and BeOS,
including Mingw, Visual C++, Borland C++, and more. 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 We provide a small number of "project files" for various IDEs to
automatically build the library as well. Note that these files are automatically build the library as well. Note that these files are
not supported and sporadically maintained by FreeType developers, not supported and sporadically maintained by FreeType developers, so
so don't expect them to work in each release. don't expect them to work in each release.
to find them, have a look at the content of the "builds/<system>" To find them, have a look at the content of the "builds/<system>"
directory, where <system> stands for your OS or environment. directory, where <system> 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 If you want to create your own project file, follow the instructions
given in the "INSTALL.ANY" document of this directory. 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 Customizing the compilation of FreeType is easy, and allows you to
only the components of the font engine that you really need. For more details select only the components of the font engine that you really need.
read the file "CUSTOMIZE" For more details read the file "CUSTOMIZE".
-------------------------------------------------------------------- ------------------------------------------------------------------------
[1] More details on: http://www.freetype.org/patents.html [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.
--- end of INSTALL ---

View File

@ -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 See the file "CUSTOMIZE" to learn how to customize FreeType to specific
specific environments. 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: C++, because FreeType uses lines like:
#include FT_FREETYPE_H #include FT_FREETYPE_H
which are not correctly supported by this compiler, while being which are not correctly supported by this compiler while being ISO C
ISO C compliant !! compliant!
* You need to add the directories "freetype2/include" to your include * You need to add the directories "freetype2/include" to your include
path when compiling the library. path when compiling the library.
* FreeType 2 is made of several components; each one of them is * FreeType 2 is made of several components; each of them is located in
located in a subdirectory of "freetype2/src". For example, a subdirectory of "freetype2/src". For example,
'freetype2/src/truetype/' contains the TrueType font driver. 'freetype2/src/truetype/' contains the TrueType font driver.
* DO NOT COMPILE ALL C FILES! Rather, compile the following ones: * DO NOT COMPILE ALL C FILES! Rather, compile the following ones:
-- base components (required) -- base components (required)
src/base/ftsystem.c src/base/ftsystem.c
src/base/ftinit.c src/base/ftinit.c
src/base/ftdebug.c src/base/ftdebug.c
src/base/ftbase.c src/base/ftbase.c
src/base/ftglyph.c src/base/ftglyph.c
src/base/ftbbox.c src/base/ftbbox.c
src/base/ftmm.c src/base/ftmm.c
src/base/ftpfr.c -- optional, see <freetype/ftpfr.h> src/base/ftpfr.c -- optional, see <freetype/ftpfr.h>
src/base/ftbdf.c -- optional, see <freetype/ftbdf.h> src/base/ftbdf.c -- optional, see <freetype/ftbdf.h>
src/base/ftwinfnt.c -- optional, see <freetype/ftwinfnt.h> src/base/ftwinfnt.c -- optional, see <freetype/ftwinfnt.h>
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/autohint/autohint.c -- auto hinting module
src/cache/ftcache.c -- cache sub-system (in beta) src/cache/ftcache.c -- cache sub-system (in beta)
src/sfnt/sfnt.c -- SFNT files support src/sfnt/sfnt.c -- SFNT files support
(TrueType & OpenType) (TrueType & OpenType)
src/cff/cff.c -- CFF/OpenType font driver src/cff/cff.c -- CFF/OpenType font driver
src/pfr/pfr.c -- PFR/TrueDoc font driver src/pfr/pfr.c -- PFR/TrueDoc font driver
src/bdf/bdf.c -- BDF font driver src/bdf/bdf.c -- BDF font driver
src/pcf/pcf.c -- PCF font driver src/pcf/pcf.c -- PCF font driver
src/psnames/psnames.c -- Postscript glyph names support src/psnames/psnames.c -- PostScript glyph names support
src/psaux/psaux.c -- Postscript Type 1 parsing src/psaux/psaux.c -- PostScript Type 1 parsing
src/truetype/truetype.c -- TrueType font driver src/truetype/truetype.c -- TrueType font driver
src/type1/type1.c -- Type 1 font driver src/type1/type1.c -- Type 1 font driver
src/cid/type1cid.c -- Type 1 CID-keyed font driver src/cid/type1cid.c -- Type 1 CID-keyed font driver
src/winfonts/winfonts.c -- Windows FONT / FNT font driver src/winfonts/winfonts.c -- Windows FONT / FNT font driver
src/raster1/raster1.c -- monochrome rasterizer src/raster1/raster1.c -- monochrome rasterizer
src/smooth/smooth.c -- anti-aliasing rasterizer src/smooth/smooth.c -- anti-aliasing rasterizer
Note: Notes:
`truetype.c' needs `sfnt.c' and `psnames.c' `truetype.c' needs `sfnt.c' and `psnames.c'
`type1.c' needs `psaux.c' and `psnames.c' `type1.c' needs `psaux.c' and `psnames.c'
`type1cid.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' `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 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. 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/base/*.[hc] .
cp freetype2/src/raster1/*.[hc] . cp freetype2/src/raster1/*.[hc] .
cp freetype2/src/smooth/*.[hc] . cp freetype2/src/smooth/*.[hc] .
etc. etc.
2. Compile sources: 2. Compile sources
cc -c -Ifreetype2/include ftsystem.c cc -c -Ifreetype2/include ftsystem.c
cc -c -Ifreetype2/include ftinit.c cc -c -Ifreetype2/include ftinit.c
cc -c -Ifreetype2/include ftdebug.c cc -c -Ifreetype2/include ftdebug.c
cc -c -Ifreetype2/include ftbase.c cc -c -Ifreetype2/include ftbase.c
etc. etc.
You don't need to define the FT_FLAT_COMPILATION macro (as this was You don't need to define the FT_FLAT_COMPILATION macro (as this was
required in previous releases of FreeType 2). required in previous releases of FreeType 2).
--- end of INSTALL.ANY ---

View File

@ -1,128 +1,139 @@
This document contains instructions on how to build the FreeType library This document contains instructions how to build the FreeType library on
on non-Unix systems with the help of GNU Make. Note that if you're running non-Unix systems with the help of GNU Make. Note that if you are
Cygwin or MSys in Windows, you should follow the instructions of INSTALL.UNX running Cygwin or MSys in Windows, you should follow the instructions in
instead. the file INSTALL.UNX instead.
FreeType 2 includes a powerful and flexible build system that allows FreeType 2 includes a powerful and flexible build system that allows
you to easily compile it on a great variety of platforms from the you to easily compile it on a great variety of platforms from the
command line. To do so, just follow these simple instructions: 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. FreeType 2, you should install it on your machine.
The FreeType 2 build system relies on many features special to GNU The FreeType 2 build system relies on many features special to GNU
Make -- trying to build the library with any other Make tool will Make -- trying to build the library with any other Make tool will
*fail*. *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! 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: typing something like:
make -v make -v
to display its version number. to display its version number.
VERSION 3.78.1 OR NEWER IS NEEDED! 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
Go to the root directory of FreeType 2, then simply invoke GNU platform detection routines. A summary will be displayed, for
Make from the command line. This will launch the FreeType 2 host
platform detection routines. A summary will be displayed, for
example, on Win32: 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 platform win32
compiler gcc compiler gcc
configuration directory ./builds/win32 configuration directory ./builds/win32
configuration rules ./builds/win32/w32-gcc.mk configuration rules ./builds/win32/w32-gcc.mk
If this does not correspond to your system or settings please If this does not correspond to your system or settings please
remove the file 'config.mk' from this directory then read the remove the file 'config.mk' from this directory then read the
INSTALL file for help. 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, If the detected settings correspond to your platform and compiler,
skip to step e. Note that if your platform is completely alien to skip to step 5. Note that if your platform is completely alien to
the build system, the detected platform will be 'ansi'. 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 If the build system correctly detected your platform, but you want
to use a different compiler than the one specified in the summary to use a different compiler than the one specified in the summary
(for most platforms, gcc is the defaut compiler), invoke GNU Make (for most platforms, gcc is the defaut compiler), invoke GNU Make
with with
make setup <compiler> make setup <compiler>
For example: Examples:
to use Visual C++ on Win32, type: "make setup visualc" to use Visual C++ on Win32, type: "make setup visualc"
to use Borland C++ on Win32, type "make setup bcc32" to use Borland C++ on Win32, type "make setup bcc32"
to use Watcom C++ on Win32, type "make setup watcom" to use Watcom C++ on Win32, type "make setup watcom"
to use Intel C++ on Win32, type "make setup intelc" to use Intel C++ on Win32, type "make setup intelc"
to use LCC-Win32 on Win32, type: "make setup lcc" to use LCC-Win32 on Win32, type: "make setup lcc"
to use Watcom C++ on OS/2, type "make setup watcom" to use Watcom C++ on OS/2, type "make setup watcom"
to use VisualAge C++ on OS/2, type "make setup visualage" to use VisualAge C++ on OS/2, type "make setup visualage"
The <compiler> name to use is platform-dependent. The list of The <compiler> name to use is platform-dependent. The list of
available compilers for your system is available in the file available compilers for your system is available in the file
`builds/<system>/detect.mk' `builds/<system>/detect.mk'
If you are satisfied by the new configuration summary, skip to If you are satisfied by the new configuration summary, skip to
step e. step 5.
d. Configure the build system for an unknown platform/compiler
The auto-detection/setup phase of the build system copies a file 4. Configure the build system for an unknown platform/compiler
to the current directory under the name `config.mk'. --------------------------------------------------------------
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'. `builds/os2/os2-gcc.mk' to `./config.mk'.
If for some reason your platform isn't correctly detected, copy If for some reason your platform isn't correctly detected, copy
manually the configuration sub-makefile to `./config.mk' and go to manually the configuration sub-makefile to `./config.mk' and go to
step e. step 5.
Note that this file is a sub-Makefile used to specify Make Note that this file is a sub-Makefile used to specify Make variables
variables for compiler and linker invocation during the build. for compiler and linker invocation during the build. You can easily
You can easily create your own version from one of the existing create your own version from one of the existing configuration
configuration files, then copy it to the current directory under files, then copy it to the current directory under the name
the name `./config.mk'. `./config.mk'.
e. Build the library
The auto-detection/setup phase should have copied a file in the 5. Build the library
current directory, called `./config.mk'. This file contains --------------------
definitions of various Make variables used to invoke the compiler
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. and linker during the build.
To launch the build, simply invoke GNU Make again: The top To launch the build, simply invoke GNU Make again: The top Makefile
Makefile will detect the configuration file and run the build with will detect the configuration file and run the build with it.
it.
Final note
Final note:
the build system builds a statically linked library of the font engine The build system builds a statically linked library of the font
in the "objs" directory. It does _not_ support the build of DLLs on engine in the "objs" directory. It does _not_ support the build of
Windows and OS/2, if you need these, you'll have to either use 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 a IDE-specific project file, or follow the instructions in
"INSTALL.ANY" to create your own Makefiles. "INSTALL.ANY" to create your own Makefiles.
--- end of INSTALL.GNU ---

View File

@ -1,181 +1,64 @@
This document contains instructions on how to build the FreeType library 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: 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 The FreeType build system _exclusively_ works with GNU Make. You
will not be able to compile the library with the instructions will not be able to compile the library with the instructions below
below using any other alternative (including BSD Make). using any other alternative (including BSD Make).
Trying to compile the library with a different Make tool will [Well, this is not really correct. Recently, a perl implementation
print a message like: 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. Sorry, GNU make is required to build FreeType2.
and the build process will be aborted. If this happens, install and the build process will be aborted. If this happens, install GNU
GNU Make on your system, and use the GNUMAKE environment variable Make on your system, and use the GNUMAKE environment variable to
to name it. 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: command invokes GNU Make:
./configure --prefix=<yourprefix> ./configure [options]
make make
make install (as root) make install (as root)
where "<yourprefix>" must be replaced by the prefix returned by The default installation path is "/usr/local". It can be changed
the "freetype-config" command. with the `--prefix=<path>' option. Example:
When using a different command to invoke GNU Make, use the GNUMAKE ./configure --prefix=/usr
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: system, do something like:
GNUMAKE=gmake ./configure --prefix=<yourprefix> GNUMAKE=gmake ./configure [options]
gmake gmake
gmake install (as root) gmake install (as root)
If this still doesn't work, something's rotten on your system( If this still doesn't work, something's rotten on your system
(e.g. you're using a very old version of GNU Make) (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
--- end of INSTALL.UNX --
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 --

View File

@ -1,8 +1,8 @@
How to build the freetype2 library on VMS How to build the freetype2 library on VMS
----------------------------------------- -----------------------------------------
Just type one of the following depending on the type of external entries you Just type one of the following depending on the type of external entries
want: you want:
mms mms
@ -14,22 +14,23 @@ The library is avalaible in the directory
[.LIB] [.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 FREETYPE pointing to the directory
[.INCLUDE.FREETYPE] [.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 $disk:[freetype] then define the logical with
define freetype $disk:[freetype.include.freetype] 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 Any problems can be reported to
joukj@hrem.stm.tudelft.nl Jouk Jansen <joukj@hrem.stm.tudelft.nl>
Jouk Jansen --- end of INSTALL.VMS ---

View File

@ -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 Here is a list of items that need to be addressed in FreeType 2; they are
not exactly bugs, but should be considered though: not exactly bugs, but should be considered though:
* Implement stem3/counter hints properly in the Postscript hinter. * 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 automatic and Postscript hinters have been improved to increase
the quality of AA text, but Monochrome and LCD hinting still suck. we the quality of AA text, but Monochrome and LCD hinting still suck. We
need to do something about that.. need to do something about that.
--- end of TODO ---

View File

@ -1,14 +1,14 @@
How to enable the TrueType native hinter if you need it How to enable the TrueType native hinter if you need it
-------------------------------------------------------- --------------------------------------------------------
The TrueType bytecode interpreter is disabled in all public The TrueType bytecode interpreter is disabled in all public releases
releases of the FreeType packages for patents reasons (see of the FreeType packages for patents reasons (see
http://www.freetype.org/patents.html for more details). http://www.freetype.org/patents.html for more details).
However, many Linux distributions do enable the interpreter in the However, many Linux distributions do enable the interpreter in the
FreeType packages (DEB/RPM/etc.) they produce for their platforms. FreeType packages (DEB/RPM/etc.) they produce for their platforms. If
If you are using TrueType fonts on your system, you most probably you are using TrueType fonts on your system, you most probably want to
want to enable it manually by doing the following: enable it manually by doing the following:
- open the file "include/freetype/config/ftoption.h" - 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 #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 ---

View File

@ -2,87 +2,88 @@
SPECIAL NOTE FOR UNIX USERS SPECIAL NOTE FOR UNIX USERS
=========================== ===========================
If you are installing this release of FreeType on a system that 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 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. 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. See the instructions in the file "TRUETYPE" of this directory.
Note that FreeType supports TrueType fonts without the bytecode Note that FreeType supports TrueType fonts without the bytecode
interpreter through its auto-hinter, which now generate relatively good interpreter through its auto-hinter, which now generates relatively
results with most fonts. 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 By default, the configure script will install the library in
"/usr/local". However, many Unix distributions now install the "/usr/local". However, many Unix distributions now install the
library in "/usr", since FreeType is becoming a critical system library in "/usr", since FreeType is becoming a critical system
component. component.
If FreeType is already installed on your system, type If FreeType is already installed on your system, type
freetype-config --prefix freetype-config --prefix
on the command line. This should return the installation path to on the command line. This should return the installation path
use below (e.g. "/usr" or "/usr/local"). Otherwise, simply use (e.g., "/usr" or "/usr/local"). To avoid problems of parallel
"/usr" (or what you think is adequate for your installation). 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 Trying to compile the library with a different Make tool will print
will not be able to compile the library with the instructions a message like:
below using any other alternative (including BSD Make).
Trying to compile the library with a different Make tool will
print a message like:
Sorry, GNU make is required to build FreeType2. Sorry, GNU make is required to build FreeType2.
and the build process will be aborted. If this happens, install and the build process will be aborted. If this happens, install GNU
GNU Make on your system, and use the GNUMAKE environment variable Make on your system, and use the GNUMAKE environment variable to
to name it. 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: command invokes GNU Make:
./configure --prefix=<yourprefix> ./configure --prefix=<yourprefix>
make make
make install (as root) make install (as root)
where "<yourprefix>" must be replaced by the prefix returned by where "<yourprefix>" must be replaced by the prefix returned by the
the "freetype-config" command. "freetype-config" command.
When using a different command to invoke GNU Make, use the GNUMAKE When using a different command to invoke GNU Make, use the GNUMAKE
variable. For example, if `gmake' is the command to use on your variable. For example, if `gmake' is the command to use on your
system, do something like: system, do something like:
GNUMAKE=gmake ./configure --prefix=<yourprefix> GNUMAKE=gmake ./configure --prefix=<yourprefix>
gmake gmake
gmake install (as root) gmake install (as root)
If this still doesn't work, read the detailed compilation
procedure available in the file "docs/BUILD" for troubleshooting.
5. Take care of XFree86 version 4
V. Take care of XFree86 version 4
--------------------------------- ---------------------------------
Certain recent Linux distributions will install _several_ versions Certain recent Linux distributions will install _several_ versions
of FreeType on your system. For example, on a fresh Mandrake 8.1 of FreeType on your system. For example, on a fresh Mandrake 8.1
system, you can find the following files: system, you can find the following files:
/usr/lib/libfreetype.so which links to /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.so which links to
/usr/X11R6/lib/libfreetype.6.0.so /usr/X11R6/lib/libfreetype.6.0.so
Note that these files correspond to two distinct versions of the Note that these files correspond to two distinct versions of the
library! It seems that this surprising issue is due to the library! It seems that this surprising issue is due to the install
install scripts of recent XFree86 servers (from 4.1.0) which scripts of recent XFree86 servers (from 4.1.0) which install their
irremediably install their own (dated) version of the library in own (dated) version of the library in "/usr/X11R6/lib".
"/usr/X11R6/lib".
In certain _rare_ cases you may experience minor problems if you In certain _rare_ cases you may experience minor problems if you
install this release of the library in "/usr" only, namely, that install this release of the library in "/usr" only, namely, that
certain applications will not benefit from the bug fixes and certain applications will not benefit from the bug fixes and
rendering improvements you'd expect. rendering improvements you would expect.
There are two good ways to deal with this situation: There are two good ways to deal with this situation:
- Install the library _twice_, in "/usr" and in "/usr/X11R6" - Install the library _twice_, in "/usr" and in "/usr/X11R6" (you
(you have to do that each time you install a new FreeType have to do that each time you install a new FreeType release
release though). though).
- Change the link in /usr/X11R6/lib/libfreetype.so to point to - 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 /usr/X11R6/lib/libfreetype.6.0.so
The FreeType Team is not responsible for this problem, so please The FreeType Team is not responsible for this problem, so please
contact either the XFree86 development team or your Linux contact either the XFree86 development team or your Linux
distributor to help clear this issue in case the information given distributor to help clear this issue in case the information given
here doesn't help. here doesn't help.
---- end of UPGRADE.UNX ---

View File

@ -1,90 +1,98 @@
Due to our use of "libtool" to generate and install the FreeType 2 libraries Due to our use of "libtool" to generate and install the FreeType 2
on Unix systems, as well as other historical events, it is generally very libraries on Unix systems, as well as other historical events, it is
difficult to know precisely which release of the font engine is installed generally very difficult to know precisely which release of the font
on a given system. 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. 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: 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 * The libtool (and Unix) specific version number, like "9.2.3". This
is what "freetype-config --version" will return is what "freetype-config --version" will return.
* the platform-specific shared object number, used for example when * The platform-specific shared object number, used for example when
the library is installed as "/usr/lib/libfreetype.so.6.3.2" 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 The libtool-specific number does not equal the release number but is
with the operating system you're using (several variants of Linux, FreeBSD, tied to it.
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 The release number is available at *compile* time through the following
to it.
the release number is available at *compile* time through the following
macros defined in FT_FREETYPE_H: macros defined in FT_FREETYPE_H:
- FREETYPE_MAJOR : major release number - FREETYPE_MAJOR : major release number
- FREETYPE_MINOR : minor release number - FREETYPE_MINOR : minor release number
- FREETYPE_PATCH : patch 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 2. History
"FT_Library_Version" API. Unfortunately, this one wasn't available or ----------
working correctly before the 2.1.3 official release !!
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, Lars Clausen contributed the following autoconf fragment to detect which
the corresponding libtool number, as well as the shared object number version of FreeType is installed on a system. This one tests for a
found on _most_ systems, but not all of them: version that is at least 2.0.9; you should change the last line to check
against other release numbers.
release libtool so AC_MSG_CHECKING([for version of FreeType])
------------------------------------- FREETYPE_INCLUDE=`freetype-config --cflags | cut -c3-`
2.1.4 9.3.3 6.3.3 FREETYPE_MAJOR=`grep '^#define FREETYPE_MAJOR' \
2.1.3 9.2.3 6.3.2 $FREETYPE_INCLUDE/freetype/freetype.h | cut -d' ' -f3`
2.1.2 9.1.3 6.3.1 FREETYPE_MINOR=`grep '^#define FREETYPE_MINOR' \
2.1.1 9.0.3 ? $FREETYPE_INCLUDE/freetype/freetype.h | cut -d' ' -f3`
2.1.0 8.0.2 ? FREETYPE_PATCH=`grep '^#define FREETYPE_PATCH' \
2.0.9 9.0.3 ? $FREETYPE_INCLUDE/freetype/freetype.h | cut -d' ' -f3`
2.0.8 8.0.2 ? FREETYPE_VERSION=`echo | awk "BEGIN { printf \"%d\", \
($FREETYPE_MAJOR * 1000 + $FREETYPE_MINOR) * 1000 \
the libtool numbers are a bit inconsistent due to the library's history: + $FREETYPE_PATCH;}"`
AC_MSG_RESULT([$FREETYPE_MAJOR.$FREETYPE_MINOR.$FREETYPE_PATCH])
- 2.1.0 was created as a development branch from 2.0.8 if test "$FREETYPE_VERSION" -ge 2000009; then
(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
--- end of VERSION.DLL ---
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

View File

@ -1,28 +1,25 @@
The FreeType 2 font engine is copyrighted work, and cannot be The FreeType 2 font engine is copyrighted work and cannot be used
used legally without a software license. In order to make this legally without a software license. In order to make this project
project usable to a vast majority of developers, we distribute it usable to a vast majority of developers, we distribute it under two
under two dual licenses. mutually exclusive licenses.
What this means is that *you* must choose *one* license among those This means that *you* must choose *one* license of the two described
described below, then obey all its terms and conditions when using below, then obey all its terms and conditions when using FreeType 2 in
FreeType 2 in any of your projects or products: 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 --- end of licence.txt ---
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).

View File

@ -4,7 +4,7 @@
/* */ /* */
/* User-selectable configuration macros (specification only). */ /* User-selectable configuration macros (specification only). */
/* */ /* */
/* Copyright 1996-2001, 2002 by */ /* Copyright 1996-2001, 2002, 2003 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */ /* */
/* This file is part of the FreeType project, and may only be used, */ /* This file is part of the FreeType project, and may only be used, */