* 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>
* src/base/ftmac.c (open_face_from_buffer): removed a double-free bug that
had nasty consequences when trying to open an "invalid" font on a Mac.
* src/base/ftmac.c (open_face_from_buffer): Removed a double-free
bug that had nasty consequences when trying to open an "invalid"
font on a Mac.
2003-04-09 Mike Fabian <mfabian@suse.de>
* src/bdf/bdfdrivr.h, src/pcf/pcf.h: changed FT_Short to FT_UShort in
order to be able to access more than 32768 glyphs in fonts
* src/bdf/bdfdrivr.h, src/pcf/pcf.h: Changed FT_Short to FT_UShort
in order to be able to access more than 32768 glyphs in fonts.
2003-04-08 David Turner <david@freetype.org>
FreeType 2.1.4 Released
=======================
* Version 2.1.4 is released.
============================
2003-04-03 Martin Muskens <mmuskens@aurelon.com>
* src/type1/t1load.c (T1_Open_Face): fixed the code to make it handle
special cases where a font only contains a ".notdef" glyph (happens in
PDF-embedded fonts !!). Otherwise, FT_Panic was called !
* src/type1/t1load.c (T1_Open_Face): Fixed the code to make it
handle special cases where a font only contains a ".notdef" glyph
(happens in PDF-embedded fonts). Otherwise, FT_Panic was called.
2003-03-27 David Turner <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
will ignore stem quantization only when FT_LOAD_TARGET_SMOOTH is used
* src/pshinter/pshalgo3.c: The hinter now performs as in 2.1.3 and
will ignore stem quantization only when FT_LOAD_TARGET_SMOOTH is
used.
* src/base/ftobjs.c: changed the default computations to include rounding
in all cases, this is required to provide accurate kerning data when
native TrueType hinting is enabled.
* src/base/ftobjs.c: Changed the default computations to include
rounding in all cases; this is required to provide accurate kerning
data when native TrueType hinting is enabled.
* src/type1/t1load.c: the Type 1 loader now accepts more general names
according to the Postscript spec (the previous one was too restrictive)
* src/type1/t1load.c: The Type 1 loader now accepts more general
names according to the PostScript specification (the previous one
was too restrictive).
2003-03-20 David Turner <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,
src/pcf/pcfdriver.c, src/pfr/pfrsbit.c, src/sfnt/ttsbit.c,
src/type42/t42objs.c, src/winfonts/winfnt.c: introduced three new functions
to deal with glyph bitmaps within FT_GlyphSlot objects. these are:
* docs/BUGS, docs/BUILD: Removed.
* docs/DEBUG.TXT: Renamed to...
* docs/DEBUG: This.
* docs/CUSTOMIZE, docs/TRUETYPE, docs/UPGRADE.UNX: New files.
* docs/INSTALL.ANY, docs/INSTALL.UNX, docs/INSTALL.GNU New files,
containing platform specific information previously in INSTALL.
* docs/readme.vms: Renamed to...
* docs/INSTALL.VMS: This.
ft_glyphslot_free_bitmap
ft_glyphslot_alloc_bitmap
ft_glyphslot_set_bitmap
* docs/*: Updated.
these are much more convenient to use than managing the FT_GLYPH_OWN_BITMAP
flag manually. the font drivers have been modified to use them as well.
* include/freetype/internal/ftobjs.h, src/base/ftobjs.c,
src/bdf/bdfdrivr.c, src/pcf/pcfdriver.c, src/pfr/pfrsbit.c,
src/sfnt/ttsbit.c, src/type42/t42objs.c, src/winfonts/winfnt.c:
Introduced three new functions to deal with glyph bitmaps within
FT_GlyphSlot objects:
* src/cache/ftlru.c: fixed an invalid assertion check
ft_glyphslot_free_bitmap
ft_glyphslot_alloc_bitmap
ft_glyphslot_set_bitmap
* src/autohint/ahglyph.h, src/autohint/ahglyph.c, src/autohint/ahglobal.c,
src/autohint/ahhint.c: fixed blue-scale problem
These functions are much more convenient to use than managing the
FT_GLYPH_OWN_BITMAP flag manually. The font drivers have been
modified to use them as well.
* src/cache/ftccache.c: fixed small bug that could crash the cache
in rare circumstances (mostly with broken fonts)
* src/cache/ftlru.c: Fixed an invalid assertion check.
* src/autohint/ahglyph.h, src/autohint/ahglyph.c,
src/autohint/ahglobal.c, src/autohint/ahhint.c: Fixed blue-scale
problem.
* src/cache/ftccache.c: Fixed small bug that could crash the cache
in rare circumstances (mostly with broken fonts).
2003-03-15 David Turner <david@freetype.org>
* src/truetype/ttdriver.c (Set_Char_Sizes): fixed a small rounding bug.
Actually, it seems that previous versions of FreeType didn't perform
TrueType rounding exactly as appropriate.
* src/truetype/ttdriver.c (Set_Char_Sizes): Fixed a small rounding
bug. Actually, it seems that previous versions of FreeType didn't
perform TrueType rounding exactly as appropriate.
2003-03-14 David Turner <david@freetype.org>
* src/truetype/ttdriver.c: fixing the small TrueType native rendering
glitches, they came from a small rounding error.
* src/truetype/ttdriver.c: Fixing the small TrueType native
rendering glitches, they came from a small rounding error.
2003-03-13 David Turner <david@freetype.org>
* src/base/ftdbgmem.c, docs/DEBUG.TXT: added new environment variables
to control memory debugging with FreeType. See the description of
"FT2_DEBUG_MEMORY", "FT2_ALLOC_TOTAL_MAX" and "FT2_ALLOC_COUNT_MAX"
in DEBUG.TXT
* src/base/ftdbgmem.c, docs/DEBUG.TXT: Added new environment
variables to control memory debugging with FreeType. See the
description of "FT2_DEBUG_MEMORY", "FT2_ALLOC_TOTAL_MAX" and
"FT2_ALLOC_COUNT_MAX" in DEBUG.TXT.
* src/cache/ftccache.c, src/cache/ftccmap.c, src/cache/ftcsbits.c,
ftlru.c: fixed the cache sub-system to correctly deal with out-of-memory
conditions.
* src/cache/ftccache.c, src/cache/ftccmap.c, src/cache/ftcsbits.c,
src/cache/ftlru.c: Fixed the cache sub-system to correctly deal with
out-of-memory conditions.
* src/pfr/pfrobjs.c, src/pfr/pfrsbits.c: fixing compiler warnings and a
small memory leak
* src/pfr/pfrobjs.c, src/pfr/pfrsbits.c: Fixing compiler warnings
and a small memory leak.
* src/psaux/psobjs.c (t1_reallocate_table): fixed a bug (memory leak) that
only happened when trying to resize an array would end in an OOM.
* src/psaux/psobjs.c (t1_reallocate_table): Fixed a bug (memory
leak) that only happened when a try to resize an array would end in
an out-of-memory condition.
* src/smooth/ftgrays.c: removed compiler warnings / volatile bug
* src/smooth/ftgrays.c: Removed compiler warnings / volatile bug.
* src/truetype/ttobjs.c: removed segmentation fault that happened in
tight memory environments.
* src/truetype/ttobjs.c: Removed segmentation fault that happened in
tight memory environments.
2003-02-28 Pixel <pixel@mandrakesoft.com>
* src/gzip/ftgzip.c (ft_gzip_file_done): fixed memory leak, the ZLib
stream was not properly finalized
* src/gzip/ftgzip.c (ft_gzip_file_done): Fixed memory leak: The ZLib
stream was not properly finalized.
2003-02-25 Anthony Fok <anthony@thizlinux.com>
* src/cache/ftccmap.c: the cmap cache now supports UCS-4 charmaps
when available in Asian fonts
* src/cache/ftccmap.c: The cmap cache now supports UCS-4 charmaps
when available in Asian fonts.
* src/sfnt/ttload.c, src/base/ftobjs.c: changed "asian" to "Asian" in
comments
* src/sfnt/ttload.c, src/base/ftobjs.c: Changed "asian" to "Asian"
in comments.
2003-02-25 David Turner <david@freetype.org>
* src/gzip/ftgzip.c: fixed a bug that caused FreeType to loop endlessly
when trying to read certain compressed gzip files. The following test
could be used to reveal the bug:
* src/gzip/ftgzip.c: Fixed a bug that caused FreeType to loop
endlessly when trying to read certain compressed gzip files. The
following test could be used to reveal the bug:
touch 0123456789 ; gzip 0123456789 ; ftdump 0123456789.gz
touch 0123456789 ; gzip 0123456789 ; ftdump 0123456789.gz
* src/pfr/pfrobjs.c, src/pfr/pfrload.c, src/pfr/pfrtypes.h: Several
fixes to the PFR font driver:
* src/pfr/pfrobjs.c, src/pfr/pfrload.c, src/pfr/pfrtypes.h: several
fixes to the PFR font driver:
- The list of available embedded bitmaps was not correctly set in
the root FT_FaceRec structure describing the face.
- the list of available embedded bitmaps was not correctly set
in the root FT_FaceRec structure describing the face
- The glyph loader always tried to load the outlines when
FT_LOAD_SBITS_ONLY was specified.
- the glyph loader always tried to load the outlines when
FT_LOAD_SBITS_ONLY was specified
- The table loaded now scans for *undocumented* elements of a
physical font's auxiliary data record. This is necessary to
retrieve the "real" family and style names.
- the table loaded now scans for *undocumented* elements of a
physical font's auxiliary data record, this is necessary to
retrieve the "real" family and style names.
NOTE THAT THESE CHANGES THE FAMILY NAME OF MANY PFR FONTS!
NOTE THAT THIS CHANGES THE FAMILY NAME OF MANY PFR FONTS !!
* src/truetype/ttdriver.c (Set_Char_Sizes): fixed a rounding bug when
computing the scale factors for a given character size in points with
resolution.
* src/truetype/ttdriver.c (Set_Char_Sizes): Fixed a rounding bug
when computing the scale factors for a given character size in
points with resolution.
* devel/ft2build.h, devel/ftoption.h: New files (in a new directory)
which are special development versions of include/ft2build.h and
include/freetype/config/ftoption.h, respectively.
2003-02-18 David Turner <david@freetype.org>
* src/truetype/ttdriver.c, src/truetype/ttobjs.h, src/truetype/ttobjs.c,
src/truetype/ttinterp.c, src/base/ftobjs.c: fixing the slight distortion
problem that occured due to the latest auto-hinter changes
* src/truetype/ttdriver.c, src/truetype/ttobjs.h,
src/truetype/ttobjs.c, src/truetype/ttinterp.c, src/base/ftobjs.c:
Fixing the slight distortion problem that ocurred due to the latest
auto-hinter changes.
* src/autohint/ahhint.c: disabled the advance width "correction" which
seemed to provide more trouble than benefits..
* src/autohint/ahhint.c: Disabled the advance width "correction"
which seemed to provide more trouble than benefits.
2003-02-13 Graham Asher <graham.asher@btinternet.com>
* include/freetype/ftincrem.h, src/cff/cffgload.c, src/cid/cidgload.c,
src/truetype/ttgload.c, src/type1/t1gload.c
[FT_CONFIG_OPTION_INCREMENTAL]: I have changed the incremental loading
interface in a way that makes it simpler and allows glyph metrics to
be changed (e.g., by adding a constant, as required by CFF fonts)
rather than just overridden. This was required to make the GhsotScript-
to-FreeType bridge work.
* include/freetype/ftincrem.h, src/cff/cffgload.c,
src/cid/cidgload.c, src/truetype/ttgload.c, src/type1/t1gload.c
[FT_CONFIG_OPTION_INCREMENTAL]: Changed the incremental loading
interface in a way that makes it simpler and allows glyph metrics to
be changed (e.g., by adding a constant, as required by CFF fonts)
rather than just overridden. This was required to make the
GhsotScript-to-FreeType bridge work.
2003-01-31 David Turner <david@freetype.org>
* docs/CHANGES, docs/VERSION.DLL, docs/TODO: updating documentation for
the 2.1.4 release
* docs/CHANGES, docs/VERSION.DLL, docs/TODO: Updating documentation
for the 2.1.4 release.
* builds/win32/visualc/freetype.dsp, builds/win32/visualc/index.html:
updating the project file for 2.1.4
* builds/win32/visualc/freetype.dsp,
builds/win32/visualc/index.html: Updating the project file for
2.1.4.
* src/gzip/adler32.c, src/gzip/ftgzip.c, src/gzip/infblock.c,
src/gzip/infcodes.c, src/gzip/inflate.c, src/gzip/inftrees.c,
src/gzip/infutil.c: removed old-style (K&R)function definitions. This
avoids warnings with Visual C++ at its most pedantic mode.
* src/gzip/adler32.c, src/gzip/ftgzip.c, src/gzip/infblock.c,
src/gzip/infcodes.c, src/gzip/inflate.c, src/gzip/inftrees.c,
src/gzip/infutil.c: Removed old-style (K&R)function definitions.
This avoids warnings with Visual C++ at its most pedantic mode.
* src/pfr/pfrsbit.c: removed compiler warnings
* src/pfr/pfrsbit.c: Removed compiler warnings.
* src/cache/ftccmap.c: changed a FT_ERROR into a FT_TRACE1 since the
it caused "ftview" and others to dump too much junk when trying to
display a waterfall with a font without a Unicode charmap (e.g.
SYMBOL.TTF)
* src/cache/ftccmap.c: Changed an FT_ERROR into an FT_TRACE1 since
it caused "ftview" and others to dump too much junk when trying to
display a waterfall with a font without a Unicode charmap (e.g.
SYMBOL.TTF).
* src/autohint/ahtypes.h, src/autohint/ahhint.c, src/base/ftobjs.c,
src/truetype/ttobjs.c: implemented FT_CONFIG_CHESTER_BLUE_SCALE,
corresponding to the last patch from David Chester, but with a
much simpler (and saner) implementation.
* src/autohint/ahtypes.h, src/autohint/ahhint.c, src/base/ftobjs.c,
src/truetype/ttobjs.c: Implemented FT_CONFIG_CHESTER_BLUE_SCALE,
corresponding to the last patch from David Chester, but with a much
simpler (and saner) implementation.
* src/pshinter/pshalgo3.c: improved the Postscript hinter. Getting rid
of stem snapping seems to work well here (though the stems are still
slightly moved to increase contrast).
* src/pshinter/pshalgo3.c: Improved the Postscript hinter. Getting
rid of stem snapping seems to work well here (though the stems are
still slightly moved to increase contrast).
THIS IMPROVES ANTI-ALIASED RENDERING, BUT MONOCHROME AND LCD MODES
STILL SUCK... I need to work this a bit
THIS IMPROVES ANTI-ALIASED RENDERING, BUT MONOCHROME AND LCD MODES
STILL SUCK.
2003-01-22 David Chester <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>
* include/freetype/ftbdf.h, include/freetype/internal/bdftypes.h,
src/base/ftbdf.c, src/bdf/bdfdrivr.c, src/pcf/pcfdrivr.c,
src/pcf/pcfread.h:
* include/freetype/ftbdf.h, include/freetype/internal/bdftypes.h,
src/base/ftbdf.c, src/bdf/bdfdrivr.c, src/pcf/pcfdrivr.c,
src/pcf/pcfread.h: Adding a new API `FT_Get_BDF_Property' to
retrieve the BDF properties of a given PCF or BDF font.
adding a new API, named FT_Get_BDF_Property to retrieve the BDF
properties of a given PCF or BDF font
* src/sfnt/ttload.c (sfnt_dir_check): relaxed the "head" table size
verification to accept a few broken fonts who pad the size incorrectly
(the table should be padded, but its "size" field shouldn't per se
the spec)
* src/sfnt/ttload.c (sfnt_dir_check): Relaxed the "head" table size
verification to accept a few broken fonts who pad the size
incorrectly (the table should be padded, but its "size" field
shouldn't according to the specification).
2003-01-18 Werner Lemberg <wl@gnu.org>
@ -325,9 +349,10 @@
2002-12-23 Anthony Fok <anthony@thizlinux.com>
* builds/unix/configure.ac, builds/unix/unix-cc.in,
builds/unix/unix-def.in: Small fix to configure sub-system on Unix
to allow other programs to correctly link with zlib when needed.
* builds/unix/configure.ac, builds/unix/unix-cc.in (LINK_LIBRARY),
builds/unix/unix-def.in (SYSTEM_ZLIB): Small fix to configure
sub-system on Unix to allow other programs to correctly link with
zlib when needed.
2002-12-17 David Turner <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 content of certain macros to the list of included header
# files.
#
# we can compile FreeType 2 with classic Jam however thanks to
# We can compile FreeType 2 with classic Jam however thanks to
# the following code
#
if ! $(JAM_TOOLSET)
{
rule HDRMACRO
{
# nothing !!
# nothing
}
}
# We need to invoke a SubDir rule if the FT2 source directory top is not the
# current directory. This allows us to build FreeType 2 as part of a larger
# project easily.
@ -25,71 +26,71 @@ if $(FT2_TOP) != $(DOT)
SubDir FT2_TOP ;
}
#
# The following macros define the include directory, the source directory
# and the final library name (without library extensions). They can be
# The following macros define the include directory, the source directory,
# and the final library name (without library extensions). They can be
# replaced by other definitions when the library is compiled as part of
# a larger project.
#
# name of FreeType include directory during compilation.
# relative to FT2_TOP
# Name of FreeType include directory during compilation.
# This is relative to FT2_TOP.
#
FT2_INCLUDE_DIR ?= include ;
# name of FreeType source directory during compilation.
# relative to FT2_TOP
# Name of FreeType source directory during compilation.
# This is relative to FT2_TOP.
#
FT2_SRC_DIR ?= src ;
# name of final library, without extension
# Name of final library, without extension.
#
FT2_LIB ?= $(LIBPREFIX)freetype ;
# define FT2_BUILD_INCLUDE to point to your build-specific directory
# this is prepended to FT2_INCLUDE_DIR. This can be used to specify
# Define FT2_BUILD_INCLUDE to point to your build-specific directory.
# This is prepended to FT2_INCLUDE_DIR. It can be used to specify
# the location of a custom <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 ?= ;
# the list of modules to compile on any given build of the library
# by default, this will contain _all_ modules defined in FT2_SRC_DIR
# The list of modules to compile on any given build of the library.
# By default, this will contain _all_ modules defined in FT2_SRC_DIR.
#
# IMPORTANT: You'll need to change the content of "ftmodule.h" as well
# if you modify this list or provide your own.
#
FT2_COMPONENTS ?= gzip # support for gzip-compressed files.
FT2_COMPONENTS ?= gzip # support for gzip-compressed files
autohint # auto-hinter
base # base component (public APIs)
bdf # BDF font driver
cache # cache sub-system
cff # CFF/CEF font driver
cid # Postscript CID-keyed font driver
cid # PostScript CID-keyed font driver
pcf # PCF font driver
pfr # PFR/TrueDoc font driver
psaux # Common Postscript routines module
pshinter # Postscript hinter module
psnames # Postscript names handling
raster # Monochrome rasterizer
smooth # Anti-aliased rasterizer
psaux # common PostScript routines module
pshinter # PostScript hinter module
psnames # PostScript names handling
raster # monochrome rasterizer
smooth # anti-aliased rasterizer
sfnt # SFNT-based format support routines
truetype # TrueType font driver
type1 # Postscript Type 1 font driver
type42 # Postscript Type 42 (embedded TrueType) driver
type1 # PostScript Type 1 font driver
type42 # PostScript Type 42 (embedded TrueType) driver
winfonts # Windows FON/FNT font driver
;
# don't touch
# Don't touch.
#
FT2_INCLUDE = $(FT2_BUILD_INCLUDE)
[ FT2_SubDir $(FT2_INCLUDE_DIR) ] ;
FT2_SRC = [ FT2_SubDir $(FT2_SRC_DIR) ] ;
# only used by FreeType developers
# Only used by FreeType developers.
#
if $(DEBUG_HINTER)
{
@ -104,11 +105,12 @@ HDRS += $(FT2_INCLUDE) ;
# Uncomment the following line if you want to build individual source files
# for each FreeType 2 module. this is only useful during development, and
# is better defined as an environment variable anyway !
# for each FreeType 2 module. This is only useful during development, and
# is better defined as an environment variable anyway!
#
# FT2_MULTI = true ;
# The file <freetype/config/ftheader.h> is used to define macros that are
# later used in #include statements. It needs to be parsed in order to
# record these definitions.
@ -116,13 +118,14 @@ HDRS += $(FT2_INCLUDE) ;
HDRMACRO [ FT2_SubDir include freetype config ftheader.h ] ;
HDRMACRO [ FT2_SubDir include freetype internal internal.h ] ;
# Now include the Jamfile in "freetype2/src", used to drive the compilation
# of each FreeType 2 component and/or module.
#
SubInclude FT2_TOP $(FT2_SRC_DIR) ;
# tests files (hinter debugging). only used by FreeType developers
# Test files (hinter debugging). Only used by FreeType developers.
#
if $(DEBUG_HINTER)
{

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

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.
# 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
{

26
README
View File

@ -2,23 +2,22 @@
Special notes to Unix users
===========================
Please read the file "docs/UPGRADE.UNX", it contains important
information regarding the installation of FreeType on Unix systems,
Please read the file "docs/UPGRADE.UNX". It contains important
information regarding the installation of FreeType on Unix systems,
especially GNU based operating systems like GNU/Linux.
FreeType 2's library is called `libfreetype', FreeType 1's library
FreeType 2's library is called `libfreetype', FreeType 1's library
is called `libttf'. They are *not* compatible!
FreeType 2.1.4
==============
Please read the docs/CHANGES file, it contains IMPORTANT
INFORMATION.
Please read the docs/CHANGES file, it contains IMPORTANT INFORMATION.
Read the files "docs/INSTALL" for installation instructions.
Read the files "docs/INSTALL" for installation instructions.
Note that the FreeType 2 documentation is now available as a
Note that the FreeType 2 documentation is now available as a
separate package from our sites. See:
ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.1.4.tar.bz2
@ -26,14 +25,13 @@
ftp://ftp.freetype.org/pub/freetype2/ftdoc214.zip
Reports
=======
Please report bugs by e-mail to `devel@freetype.org'. Don't
forget to send a detailed explanation of the problem -- there is
nothing worse than receiving a terse message that only says "it
doesn't work".
Bugs
====
Please report bugs by e-mail to `devel@freetype.org'. Don't forget
to send a detailed explanation of the problem -- there is nothing
worse than receiving a terse message that only says "it doesn't
work".
Enjoy!

View File

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

View File

@ -5,7 +5,7 @@
/* FreeType 2 build and setup macros. */
/* (Generic version) */
/* */
/* Copyright 1996-2001 by */
/* Copyright 1996-2001, 2003 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@ -18,14 +18,14 @@
/*
* this is a development version of <ft2build.h> that is used
* to build the library in debug mode. Its only difference with
* the reference is that is forces the use of the local "ftoption.h"
* which contains different settings for all configuration macros
* Rhis is a development version of <ft2build.h> that is used
* to build the library in debug mode. Its only difference with
* the reference is that it forces the use of the local "ftoption.h"
* which contains different settings for all configuration macros.
*
* to use it, you must define the environment variable FT2_BUILD_INCLUDE
* To use it, you must define the environment variable FT2_BUILD_INCLUDE
* to point to the directory containing these two files ("ft2build.h" and
* "ftoption.h"), then invoke Jam as usual
* "ftoption.h"), then invoke Jam as usual.
*/
#ifndef __FT2_BUILD_GENERIC_H__

View File

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

View File

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

View File

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

View File

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

View File

@ -1,65 +1,66 @@
Welcome
There are several ways to build the FreeType library, depending on your
system and the level of customization you need. Here's a short overview
of the documentation available:
There are several ways to build the FreeType library, depending on your
system and the level of customization you need. Here is a short
overview of the documentation available:
I. Normal installation and upgrades:
1. Native TrueType Hinting:
Native TrueType hinting is disabled by default[1]. If you really need it,
read the file "TRUETYPE" for information.
I. Normal installation and upgrades
===================================
2. Unix Systems (as well as Cygwin or MSys on Windows):
1. Native TrueType Hinting
Native TrueType hinting is disabled by default[1]. If you really
need it, read the file "TRUETYPE" for information.
2. Unix Systems (as well as Cygwin or MSys on Windows)
Please read *both* UPGRADE.UNX and INSTALL.UNX to install or upgrade
FreeType 2 on a Unix system. Note that you *will* need GNU Make, since
other make tools won't work (this includes BSD Make !!)
FreeType 2 on a Unix system. Note that you *will* need GNU Make,
since other make tools won't work (this includes BSD Make).
3. On VMS with the "mms" build tool:
3. On VMS with the "mms" build tool
see INSTALL.VMS for installation instructions on this platform
See INSTALL.VMS for installation instructions on this platform.
4. Other systems using GNU Make:
4. Other systems using GNU Make
on non-Unix platforms, it's possible to build the library using
GNU Make utility. Note that *NO OTHER MAKE TOOL WILL WORK* !!
This methods supports several compilers on Windows, OS/2 and BeOS,
On non-Unix platforms, it is possible to build the library using GNU
Make utility. Note that *NO OTHER MAKE TOOL WILL WORK*[2]! This
methods supports several compilers on Windows, OS/2, and BeOS,
including Mingw, Visual C++, Borland C++, and more.
instructions are provided in the file "INSTALL.GNU"
Instructions are provided in the file "INSTALL.GNU".
5. With an IDE Project File (e.g. for Visual Studio or CodeWarrior):
5. With an IDE Project File (e.g. for Visual Studio or CodeWarrior)
we provide a small number of "project files" for various IDEs to
automatically build the library as well. Note that these files are
not supported and sporadically maintained by FreeType developers,
so don't expect them to work in each release.
We provide a small number of "project files" for various IDEs to
automatically build the library as well. Note that these files are
not supported and sporadically maintained by FreeType developers, so
don't expect them to work in each release.
to find them, have a look at the content of the "builds/<system>"
To find them, have a look at the content of the "builds/<system>"
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
given in the "INSTALL.ANY" document of this directory.
II. Custom builds of the library:
II. Custom builds of the library
================================
Customizing the compilation of FreeType is easy, and allows you to select
only the components of the font engine that you really need. For more details
read the file "CUSTOMIZE"
Customizing the compilation of FreeType is easy, and allows you to
select only the components of the font engine that you really need.
For more details read the file "CUSTOMIZE".
--------------------------------------------------------------------
------------------------------------------------------------------------
[1] More details on: http://www.freetype.org/patents.html
End of file
[2] make++, a make tool written in Perl, has sufficient support of GNU
make extensions to build FreeType. See
http://makepp.sourceforge.net for more information.
--- 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
specific environments.
See the file "CUSTOMIZE" to learn how to customize FreeType to specific
environments.
follow these simple steps:
I. Normal way:
--------------
I. Standard procedure
---------------------
* DISABLE PRE-COMPILED HEADERS ! This is very important for Visual
* DISABLE PRE-COMPILED HEADERS! This is very important for Visual
C++, because FreeType uses lines like:
#include FT_FREETYPE_H
#include FT_FREETYPE_H
which are not correctly supported by this compiler, while being
ISO C compliant !!
which are not correctly supported by this compiler while being ISO C
compliant!
* You need to add the directories "freetype2/include" to your include
path when compiling the library.
* FreeType 2 is made of several components; each one of them is
located in a subdirectory of "freetype2/src". For example,
* FreeType 2 is made of several components; each of them is located in
a subdirectory of "freetype2/src". For example,
'freetype2/src/truetype/' contains the TrueType font driver.
* DO NOT COMPILE ALL C FILES! Rather, compile the following ones:
-- base components (required)
-- base components (required)
src/base/ftsystem.c
src/base/ftinit.c
src/base/ftdebug.c
src/base/ftbase.c
src/base/ftglyph.c
src/base/ftbbox.c
src/base/ftmm.c
src/base/ftpfr.c -- optional, see <freetype/ftpfr.h>
src/base/ftbdf.c -- optional, see <freetype/ftbdf.h>
src/base/ftwinfnt.c -- optional, see <freetype/ftwinfnt.h>
src/base/ftsystem.c
src/base/ftinit.c
src/base/ftdebug.c
src/base/ftbase.c
src/base/ftglyph.c
src/base/ftbbox.c
src/base/ftmm.c
src/base/ftpfr.c -- optional, see <freetype/ftpfr.h>
src/base/ftbdf.c -- optional, see <freetype/ftbdf.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/cache/ftcache.c -- cache sub-system (in beta)
src/sfnt/sfnt.c -- SFNT files support
(TrueType & OpenType)
src/cff/cff.c -- CFF/OpenType font driver
src/pfr/pfr.c -- PFR/TrueDoc font driver
src/bdf/bdf.c -- BDF font driver
src/pcf/pcf.c -- PCF font driver
src/psnames/psnames.c -- Postscript glyph names support
src/psaux/psaux.c -- Postscript Type 1 parsing
src/truetype/truetype.c -- TrueType font driver
src/type1/type1.c -- Type 1 font driver
src/cid/type1cid.c -- Type 1 CID-keyed font driver
src/winfonts/winfonts.c -- Windows FONT / FNT font driver
src/raster1/raster1.c -- monochrome rasterizer
src/smooth/smooth.c -- anti-aliasing rasterizer
src/autohint/autohint.c -- auto hinting module
src/cache/ftcache.c -- cache sub-system (in beta)
src/sfnt/sfnt.c -- SFNT files support
(TrueType & OpenType)
src/cff/cff.c -- CFF/OpenType font driver
src/pfr/pfr.c -- PFR/TrueDoc font driver
src/bdf/bdf.c -- BDF font driver
src/pcf/pcf.c -- PCF font driver
src/psnames/psnames.c -- PostScript glyph names support
src/psaux/psaux.c -- PostScript Type 1 parsing
src/truetype/truetype.c -- TrueType font driver
src/type1/type1.c -- Type 1 font driver
src/cid/type1cid.c -- Type 1 CID-keyed font driver
src/winfonts/winfonts.c -- Windows FONT / FNT font driver
src/raster1/raster1.c -- monochrome rasterizer
src/smooth/smooth.c -- anti-aliasing rasterizer
Note:
Notes:
`truetype.c' needs `sfnt.c' and `psnames.c'
`type1.c' needs `psaux.c' and `psnames.c'
`type1cid.c' needs `psaux.c' and `psnames.c'
`cff.c' needs `sfnt.c', `psaux.c', and `psnames.c'
that should be it ! in case of problems, see the archives of
the FreeType development mailing list.
You are done. In case of problems, see the archives of the FreeType
development mailing list.
II. Support for flat-directory compilation
------------------------------------------
It is possible to put all FreeType 2 source files into a single
It is possible to put all FreeType 2 source files into a single
directory, with the *exception* of the `include' hierarchy.
1. Copy all files in current directory:
1. Copy all files in current directory
cp freetype2/src/base/*.[hc] .
cp freetype2/src/raster1/*.[hc] .
cp freetype2/src/smooth/*.[hc] .
etc.
cp freetype2/src/base/*.[hc] .
cp freetype2/src/raster1/*.[hc] .
cp freetype2/src/smooth/*.[hc] .
etc.
2. Compile sources:
2. Compile sources
cc -c -Ifreetype2/include ftsystem.c
cc -c -Ifreetype2/include ftinit.c
cc -c -Ifreetype2/include ftdebug.c
cc -c -Ifreetype2/include ftbase.c
etc.
cc -c -Ifreetype2/include ftsystem.c
cc -c -Ifreetype2/include ftinit.c
cc -c -Ifreetype2/include ftdebug.c
cc -c -Ifreetype2/include ftbase.c
etc.
You don't need to define the FT_FLAT_COMPILATION macro (as this was
required in previous releases of FreeType 2).
You don't need to define the FT_FLAT_COMPILATION macro (as this was
required in previous releases of FreeType 2).
--- end of INSTALL.ANY ---

View File

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

View File

@ -1,181 +1,64 @@
This document contains instructions on how to build the FreeType library
on Unix systems. This also works for emulations like Cygwin or MSys on
on Unix systems. This also works for emulations like Cygwin or MSys on
Win32:
I. Ensure that you are using GNU Make
1. Ensure that you are using GNU Make
-------------------------------------
The FreeType build system _exclusively_ works with GNU Make. You
will not be able to compile the library with the instructions
below using any other alternative (including BSD Make).
The FreeType build system _exclusively_ works with GNU Make. You
will not be able to compile the library with the instructions below
using any other alternative (including BSD Make).
Trying to compile the library with a different Make tool will
print a message like:
[Well, this is not really correct. Recently, a perl implementation
of make called `makepp' has appeared which can also build FreeType 2
successfully on Unix platforms. See http://makepp.sourceforge.net
for more details.]
Trying to compile the library with a different Make tool will print
a message like:
Sorry, GNU make is required to build FreeType2.
and the build process will be aborted. If this happens, install
GNU Make on your system, and use the GNUMAKE environment variable
to name it.
and the build process will be aborted. If this happens, install GNU
Make on your system, and use the GNUMAKE environment variable to
name it.
2. Build and install the library
--------------------------------
IV. Build and install the library
---------------------------------
The following should work on all Unix systems where the 'make'
The following should work on all Unix systems where the `make'
command invokes GNU Make:
./configure --prefix=<yourprefix>
./configure [options]
make
make install (as root)
where "<yourprefix>" must be replaced by the prefix returned by
the "freetype-config" command.
The default installation path is "/usr/local". It can be changed
with the `--prefix=<path>' option. Example:
When using a different command to invoke GNU Make, use the GNUMAKE
variable. For example, if `gmake' is the command to use on your
./configure --prefix=/usr
When using a different command to invoke GNU Make, use the GNUMAKE
variable. For example, if `gmake' is the command to use on your
system, do something like:
GNUMAKE=gmake ./configure --prefix=<yourprefix>
GNUMAKE=gmake ./configure [options]
gmake
gmake install (as root)
If this still doesn't work, something's rotten on your system(
(e.g. you're using a very old version of GNU Make)
If this still doesn't work, something's rotten on your system
(e.g. you are using a very old version of GNU Make).
It is possible to compile FreeType in a different directory.
Assuming the FreeType source files in directory `/src/freetype' a
compilation in directory `foo' works as follows:
cd foo
/src/freetype/configure [options]
make
make install
I. Unix systems
---------------
If you have GNU Make installed, simply type
./configure
make
make install
on the command line to configure, build and install FreeType on your
system. Note that the default installation path is "/usr/local".
Please read the file README.UNX, it contains _critical_ information
regarding the installation of FreeType on many Unix systems.
II. From the command line
-------------------------
If you are not using Unix, there are two ways to quickly build
FreeType 2 from the command line.
The first, and favorite one, is to use the "Jam" build tool. Jam is
a highly portable replacement for Make whose control files do not
depend on the current platform or compiler toolset.
For more information, please see:
http://www.freetype.org/jam/index.html
The second one is to use "GNU Make" (and NO OTHER MAKE TOOL).
1. Building FT2 with "Jam"
--------------------------
Once you've got *our version* of the Jam tool installed on your
system, simply go to the top-level FT2 directory, then type
"jam"
on the command line. This will build the library and place it in
the "objs" directory.
By default, a static library is built. On Unix systems, it is
possible to build a shared library through the "libtool" script.
You need to have libtool installed on your system, then re-define
a few environment variables before invoking Jam, as in
export CC="libtool --mode=compile cc"
export LINK="libtool --mode=link cc"
jam
In later releases of FT2, building shared libraries with Jam
should become automatic on Unix systems.
2. Building FT2 with "GNU Make"
-------------------------------
You need to have GNU Make (version 3.78.1 or newer) installed on
your system to compile the library from the command line. This will
_NOT_ work with other make tools (including BSD make)!
[Well, this is not really correct. Recently, a perl implementation
of make called `makepp' has appeared which can also build FreeType 2
successfully on Unix platforms. See http://makepp.sourceforge.net
for more details.]
- Go to the `freetype2' directory.
- Unix (any C compiler should work):
- make setup (don't worry, this will invoke a configure script)
- make
- make install
Alternatively, you can pass parameters to the configure script
within the CFG variable, as in:
- make setup CFG="--prefix=/usr"
- make
- make install
If the configure script isn't run, try to add `unix' as a target
on the command line, e.g.:
- make setup unix CFG="--prefix=/opt/experimental"
- Windows:
We provide a version of GNU Make for Win32 on the FreeType site.
See http://www.freetype.org/download.html for details.
- gcc (Mingw, _not_ CygWin):
- make setup
- make
- Visual C++:
- make setup visualc
- make
- other compilers:
- make setup bcc32 -> Borland C++ 32 bits
- make setup intelc -> Intel C++
- make setup watcom -> Watcom C++
- make setup lcc -> Win32-LCC
If you want to build FreeType 2 in another directory, you must set
two environment variables, `OJB_DIR' and `TOP_DIR'. The former
gives the directory where the object files and the library should be
created (this directory must exist), the latter the top directory of
the FreeType 2 source tree. Example:
OBJ_DIR=~/freetype2.compiled TOP_DIR=~/freetype2 \
make -f$TOP_DIR/Makefile setup ansi
OBJ_DIR=~/freetype2.compiled TOP_DIR=~/freetype2 \
make -f$TOP_DIR/Makefile
On Unix boxes, calling `configure' from the build directory is
sufficient; it will build a small Makefile which calls the
FreeType 2 Makefile with the necessary parameters.
--- end of INSTALL --
--- end of INSTALL.UNX --

View File

@ -1,8 +1,8 @@
How to build the freetype2 library on VMS
-----------------------------------------
Just type one of the following depending on the type of external entries you
want:
Just type one of the following depending on the type of external entries
you want:
mms
@ -14,22 +14,23 @@ The library is avalaible in the directory
[.LIB]
To compile applications using freetype2 you'll need to define the logical
To compile applications using FreeType 2 you have to define the logical
FREETYPE pointing to the directory
[.INCLUDE.FREETYPE]
(i.e., if the directory in which this README.VMS file is located is
i.e., if the directory in which this INSTALL.VMS file is located is
$disk:[freetype] then define the logical with
define freetype $disk:[freetype.include.freetype]
This version has been tested with Compaq C V6.2-006 on OpenVMS Alpha V7.2-1.
This version has been tested with Compaq C V6.2-006 on OpenVMS Alpha
V7.2-1.
Any problems can be reported to
joukj@hrem.stm.tudelft.nl
Jouk Jansen <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
not exactly bugs, but should be considered though:
* Implement stem3/counter hints properly in the Postscript hinter.
* FInalize the cache sub-system. If has been in beta for too long :-)
* Finalize the cache sub-system. It has been in beta far too long :-)
* The automatic and Postscript hinters have been improved to increase
the quality of AA text, but Monochrome and LCD hinting still suck. we
need to do something about that..
the quality of AA text, but Monochrome and LCD hinting still suck. We
need to do something about that.
--- end of TODO ---

View File

@ -1,14 +1,14 @@
How to enable the TrueType native hinter if you need it
--------------------------------------------------------
The TrueType bytecode interpreter is disabled in all public
releases of the FreeType packages for patents reasons (see
The TrueType bytecode interpreter is disabled in all public releases
of the FreeType packages for patents reasons (see
http://www.freetype.org/patents.html for more details).
However, many Linux distributions do enable the interpreter in the
FreeType packages (DEB/RPM/etc.) they produce for their platforms.
If you are using TrueType fonts on your system, you most probably
want to enable it manually by doing the following:
However, many Linux distributions do enable the interpreter in the
FreeType packages (DEB/RPM/etc.) they produce for their platforms. If
you are using TrueType fonts on your system, you most probably want to
enable it manually by doing the following:
- open the file "include/freetype/config/ftoption.h"
@ -20,4 +20,7 @@ How to enable the TrueType native hinter if you need it
#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
of course, this must be done _before_ compiling the library
These steps must be done _before_ compiling the library.
--- end of TRUETYPE ---

View File

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

View File

@ -1,90 +1,98 @@
Due to our use of "libtool" to generate and install the FreeType 2 libraries
on Unix systems, as well as other historical events, it is generally very
difficult to know precisely which release of the font engine is installed
on a given system.
Due to our use of "libtool" to generate and install the FreeType 2
libraries on Unix systems, as well as other historical events, it is
generally very difficult to know precisely which release of the font
engine is installed on a given system.
This file tries to explain why and to document ways to properly detect
This file tries to explain why and to document ways to properly detect
FreeType on Unix.
I. Version & Release numbers:
1. Version & Release numbers
----------------------------
For each new public release of FreeType 2, there are generally *three*
For each new public release of FreeType 2, there are generally *three*
distinct "version" numbers to consider:
* the official FT2 release number, like 2.0.9, or 2.1.3
* The official FT2 release number, like 2.0.9, or 2.1.3.
* the libtool (and Unix) specific version number, like "9.2.3". This
is what "freetype-config --version" will return
* The libtool (and Unix) specific version number, like "9.2.3". This
is what "freetype-config --version" will return.
* the platform-specific shared object number, used for example when
the library is installed as "/usr/lib/libfreetype.so.6.3.2"
* The platform-specific shared object number, used for example when
the library is installed as "/usr/lib/libfreetype.so.6.3.2".
The platform-specific number is, unsurprisingly, platform-specific and
varies with the operating system you are using (several variants of
Linux, FreeBSD, Solaris, etc.). You should thus _never_ use it, even
for simple tests.
the platform-specific number is, unsurprisingly, platform-specific and varies
with the operating system you're using (several variants of Linux, FreeBSD,
Solaris, etc...). You should thus _never_ use it, even for simple tests.
The libtool-specific number does not equal the release number but is
tied to it.
the libtool-specific number does not equal the release number but is tied
to it.
the release number is available at *compile* time through the following
The release number is available at *compile* time through the following
macros defined in FT_FREETYPE_H:
- FREETYPE_MAJOR : major release number
- FREETYPE_MINOR : minor release number
- FREETYPE_PATCH : patch release number
see below for some Autoconf fragment to
See below for a small autoconf fragment.
The release number is also available at *runtime* through the
"FT_Library_Version" API. Unfortunately, this one wasn't available or
working correctly before the 2.1.3 official release.
the release number is also available at *runtime* through the
"FT_Library_Version" API. Unfortunately, this one wasn't available or
working correctly before the 2.1.3 official release !!
2. History
----------
The following table gives, for each official release, the corresponding
libtool number, as well as the shared object number found on _most_
systems, but not all of them:
release libtool so
-------------------------------------
2.1.4 9.3.3 6.3.3
2.1.3 9.2.3 6.3.2
2.1.2 9.1.3 6.3.1
2.1.1 9.0.3 ?
2.1.0 8.0.2 ?
2.0.9 9.0.3 ?
2.0.8 8.0.2 ?
The libtool numbers are a bit inconsistent due to the library's history:
- 2.1.0 was created as a development branch from 2.0.8 (hence the same
libtool numbers).
- 2.0.9 was a bug-fix release of the "stable" branch, and we
incorrectly increased its libtool number.
- 2.1.4 is still in the "development" branch, however it is stable
enough to be the basis of an upcoming 2.2.0 release.
II. Table:
3. Autoconf Code Fragment
-------------------------
the following is a simple table that gives, for each official release,
the corresponding libtool number, as well as the shared object number
found on _most_ systems, but not all of them:
Lars Clausen contributed the following autoconf fragment to detect which
version of FreeType is installed on a system. This one tests for a
version that is at least 2.0.9; you should change the last line to check
against other release numbers.
release libtool so
-------------------------------------
2.1.4 9.3.3 6.3.3
2.1.3 9.2.3 6.3.2
2.1.2 9.1.3 6.3.1
2.1.1 9.0.3 ?
2.1.0 8.0.2 ?
2.0.9 9.0.3 ?
2.0.8 8.0.2 ?
the libtool numbers are a bit inconsistent due to the library's history:
- 2.1.0 was created as a development branch from 2.0.8
(hence the same libtool numbers)
- 2.0.9 was a bug-fix release of the "stable" branch, we
apparently incorrectly increased its libtool number
- 2.1.4 is still in the "development" branch, however it's stable enough
to be the basis of an upcoming 2.2.0 release
AC_MSG_CHECKING([for version of FreeType])
FREETYPE_INCLUDE=`freetype-config --cflags | cut -c3-`
FREETYPE_MAJOR=`grep '^#define FREETYPE_MAJOR' \
$FREETYPE_INCLUDE/freetype/freetype.h | cut -d' ' -f3`
FREETYPE_MINOR=`grep '^#define FREETYPE_MINOR' \
$FREETYPE_INCLUDE/freetype/freetype.h | cut -d' ' -f3`
FREETYPE_PATCH=`grep '^#define FREETYPE_PATCH' \
$FREETYPE_INCLUDE/freetype/freetype.h | cut -d' ' -f3`
FREETYPE_VERSION=`echo | awk "BEGIN { printf \"%d\", \
($FREETYPE_MAJOR * 1000 + $FREETYPE_MINOR) * 1000 \
+ $FREETYPE_PATCH;}"`
AC_MSG_RESULT([$FREETYPE_MAJOR.$FREETYPE_MINOR.$FREETYPE_PATCH])
if test "$FREETYPE_VERSION" -ge 2000009; then
III. AutoConf Code Fragment:
Lars Clausen contributed the following Autoconf fragment to detect at
which version of FreeType is installed on your system. This one tests
for a version that is at least 2.0.9, you should change the last line to
check against other release numbers.
AC_MSG_CHECKING([for version of FreeType])
FREETYPE_INCLUDE=`freetype-config --cflags | cut -c3-`
FREETYPE_MAJOR=`grep '^#define FREETYPE_MAJOR' $FREETYPE_INCLUDE/freetype/freetype.h | cut -d' ' -f3`
FREETYPE_MINOR=`grep '^#define FREETYPE_MINOR' $FREETYPE_INCLUDE/freetype/freetype.h | cut -d' ' -f3`
FREETYPE_PATCH=`grep '^#define FREETYPE_PATCH' $FREETYPE_INCLUDE/freetype/freetype.h | cut -d' ' -f3`
FREETYPE_VERSION=`echo | awk "BEGIN { printf \"%d\", ($FREETYPE_MAJOR * 1000 + $FREETYPE_MINOR) * 1000 + $FREETYPE_PATCH;}"`
AC_MSG_RESULT([$FREETYPE_MAJOR.$FREETYPE_MINOR.$FREETYPE_PATCH])
if test "$FREETYPE_VERSION" -ge 2000009; then
--- end of VERSION.DLL ---

View File

@ -1,28 +1,25 @@
The FreeType 2 font engine is copyrighted work, and cannot be
used legally without a software license. In order to make this
project usable to a vast majority of developers, we distribute it
under two dual licenses.
The FreeType 2 font engine is copyrighted work and cannot be used
legally without a software license. In order to make this project
usable to a vast majority of developers, we distribute it under two
mutually exclusive licenses.
What this means is that *you* must choose *one* license among those
described below, then obey all its terms and conditions when using
FreeType 2 in any of your projects or products:
This means that *you* must choose *one* license of the two described
below, then obey all its terms and conditions when using FreeType 2 in
any of your projects or products.
- The FreeType License, found in the file "FTL.TXT", which is an
BSD-style open-source license *with* an advertising clause that
forces you to explicitely cite the FreeType project in your
product's documentation. All details are in the license file.
- The GNU General Public License, found in "GPL.TXT", which is the
traditionnal and "viral" GPL license that forces you to redistribute
the _complete_ sources of all your products that use FreeType 2.
Note that the contributed PCF driver comes with a license similar to
that of X Window System which is compatible to the above two licenses
(see file src/pcf/readme).
- The FreeType License, found in the file "FTL.TXT", which is
an BSD-style open-source license *with* an advertising
clause that forces you to explicitely cite the
FreeType project in your product's documentation. All
details are in the license file
- The GNU General Public License, found in "GPL.TXT", which is
the traditionnal and "viral" GPL license, that
forces you to redistribute the _complete_ sources of all
your products that simply use FreeType 2.
Note that the contributed PCF driver comes with a license similar to
that of X Window System which is compatible to the above two
licenses (see file src/pcf/readme).
--- end of licence.txt ---

View File

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