This patch should be applied to an un-modified XFree86 version 4.3.0
source tree. It is patch 2 of 4 patches that will will convert the
source tree to XFree86 version 4.4.0.
To apply this patch, run the following from the directory containing your
'xc' directory:
patch -p0 -E < XFree86-4.3.0-4.4.0.diff1
patch -p0 -E < XFree86-4.3.0-4.4.0.diff2
patch -p0 -E < XFree86-4.3.0-4.4.0.diff3
patch -p0 -E < XFree86-4.3.0-4.4.0.diff4
sh XFree86-4.3.0-4.4.0-cleanup.sh
gzip -d < XFree86-4.3.0-4.4.0-diff0.tgz | tar vxf -
-------------------------------------------------------------------------------
Index: xc/extras/freetype2/builds/unix/configure.ac
diff -u xc/extras/freetype2/builds/unix/configure.ac:1.1.1.5 xc/extras/freetype2/builds/unix/configure.ac:1.1.1.6
--- xc/extras/freetype2/builds/unix/configure.ac:1.1.1.5 Thu Jun 20 04:16:02 2002
+++ xc/extras/freetype2/builds/unix/configure.ac Wed May 28 22:01:42 2003
@@ -9,7 +9,8 @@
dnl configuration file -- stay in 8.3 limit
AC_CONFIG_HEADER(ftconfig.h:ftconfig.in)
-version_info='9:1:3'
+dnl Don't forget to update VERSION.DLL!
+version_info='9:3:3'
AC_SUBST(version_info)
ft_version=`echo $version_info | tr : .`
AC_SUBST(ft_version)
@@ -80,6 +81,25 @@
AC_CHECK_FUNCS(memcpy memmove)
+
+dnl Check for system zlib
+AC_ARG_WITH(zlib,
+ [ --without-zlib use internal zlib instead of system-wide])
+if test x$with_zlib != xno && test -z "$LIBZ"; then
+ AC_CHECK_LIB(z, gzsetparams, [AC_CHECK_HEADER(zlib.h, LIBZ='-lz')])
+fi
+if test x$with_zlib != xno && test -n "$LIBZ"; then
+ CFLAGS="$CFLAGS -DFT_CONFIG_OPTION_SYSTEM_ZLIB"
+ LDFLAGS="$LDFLAGS $LIBZ"
+ SYSTEM_ZLIB=yes
+fi
+AC_SUBST(LIBZ)
+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'
Index: xc/extras/freetype2/builds/unix/detect.mk
diff -u xc/extras/freetype2/builds/unix/detect.mk:1.1.1.4 xc/extras/freetype2/builds/unix/detect.mk:1.1.1.5
--- xc/extras/freetype2/builds/unix/detect.mk:1.1.1.4 Thu Jun 20 04:16:02 2002
+++ xc/extras/freetype2/builds/unix/detect.mk Wed May 28 22:01:42 2003
@@ -75,10 +75,10 @@
have_mk := $(strip $(wildcard $(OBJ_DIR)/Makefile))
ifneq ($(have_mk),)
# we are building FT2 not in the src tree
- unix-def.mk: $(TOP)/builds/unix/unix-def.in
- $(TOP)/builds/unix/configure $(CFG)
+ unix-def.mk: $(TOP_DIR)/builds/unix/unix-def.in
+ $(TOP_DIR)/builds/unix/configure $(CFG)
else
- unix-def.mk: $(TOP)/builds/unix/unix-def.in
+ unix-def.mk: $(TOP_DIR)/builds/unix/unix-def.in
cd builds/unix; ./configure $(CFG)
endif
Index: xc/extras/freetype2/builds/unix/freetype-config.in
diff -u xc/extras/freetype2/builds/unix/freetype-config.in:1.1.1.4 xc/extras/freetype2/builds/unix/freetype-config.in:1.5
--- xc/extras/freetype2/builds/unix/freetype-config.in:1.1.1.4 Thu Feb 14 19:33:20 2002
+++ xc/extras/freetype2/builds/unix/freetype-config.in Fri Oct 31 15:49:04 2003
@@ -1,7 +1,10 @@
#! /bin/sh
+# $XFree86: xc/extras/freetype2/builds/unix/freetype-config.in,v 1.5 2003/10/31 20:49:04 herrb Exp $
+
prefix=@prefix@
exec_prefix=@exec_prefix@
+hardcode_libdir_flag_spec=@hardcode_libdir_flag_spec@
usage()
{
@@ -88,9 +91,9 @@
fi
if test "$echo_libs" = "yes" ; then
- libs="-lfreetype"
+ libs="-lfreetype @LIBZ@"
if test "@libdir@" != "/usr/lib" ; then
- echo -L@libdir@ $libs
+ echo ${hardcode_libdir_flag_spec} -L@libdir@ $libs
else
echo $libs
fi
Index: xc/extras/freetype2/builds/unix/install-sh
diff -u xc/extras/freetype2/builds/unix/install-sh:1.1.1.1 xc/extras/freetype2/builds/unix/install-sh:1.1.1.2
--- xc/extras/freetype2/builds/unix/install-sh:1.1.1.1 Fri Dec 8 16:26:08 2000
+++ xc/extras/freetype2/builds/unix/install-sh Wed May 28 22:01:42 2003
@@ -1,9 +1,11 @@
-#! /bin/sh
-#
+#!/bin/sh
# install - install a program, script, or datafile
-# This comes from X11R5 (mit/util/scripts/install.sh).
-#
+# This originally came from X11R5 (mit/util/scripts/install.sh).
+
+scriptversion=2003-01-17.15
+
# Copyright 1991 by the Massachusetts Institute of Technology
+# (FSF changes in the public domain.)
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
@@ -23,13 +25,11 @@
# from scratch. It can only install one file at a time, a restriction
# shared with many OS's install programs.
-
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
-
# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog="${MVPROG-mv}"
@@ -41,210 +41,229 @@
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
-transformbasename=""
-transform_arg=""
+transformbasename=
+transform_arg=
instcmd="$mvprog"
chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
+chowncmd=
+chgrpcmd=
+stripcmd=
rmcmd="$rmprog -f"
mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd="$cpprog"
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd="$stripprog"
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
+src=
+dst=
+dir_arg=
+
+usage="Usage: $0 [OPTION]... SRCFILE DSTFILE
+ or: $0 -d DIR1 DIR2...
+
+In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
+In the second, create the directory path DIR.
+
+Options:
+-b=TRANSFORMBASENAME
+-c copy source (using $cpprog) instead of moving (using $mvprog).
+-d create directories instead of installing files.
+-g GROUP $chgrp installed files to GROUP.
+-m MODE $chmod installed files to MODE.
+-o USER $chown installed files to USER.
+-s strip installed files (using $stripprog).
+-t=TRANSFORM
+--help display this help and exit.
+--version display version info and exit.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+"
+
+while test -n "$1"; do
+ case $1 in
+ -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+ shift
+ continue;;
+
+ -c) instcmd=$cpprog
+ shift
+ continue;;
+
+ -d) dir_arg=true
+ shift
+ continue;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift
+ shift
+ continue;;
+
+ --help) echo "$usage"; exit 0;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+ shift
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+ shift
+ shift
+ continue;;
+
+ -s) stripcmd=$stripprog
+ shift
+ continue;;
+
+ -t=*) transformarg=`echo $1 | sed 's/-t=//'`
+ shift
+ continue;;
+
+ --version) echo "$0 $scriptversion"; exit 0;;
+
+ *) if test -z "$src"; then
+ src=$1
+ else
+ # this colon is to work around a 386BSD /bin/sh bug
+ :
+ dst=$1
+ fi
+ shift
+ continue;;
+ esac
done
-if [ x"$src" = x ]
-then
- echo "install: no input file specified"
- exit 1
-else
- true
+if test -z "$src"; then
+ echo "$0: no input file specified." >&2
+ exit 1
fi
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d $dst ]; then
- instcmd=:
- else
- instcmd=mkdir
- fi
+if test -n "$dir_arg"; then
+ dst=$src
+ src=
+
+ if test -d "$dst"; then
+ instcmd=:
+ chmodcmd=
+ else
+ instcmd=$mkdirprog
+ fi
else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f $src -o -d $src ]
- then
- true
- else
- echo "install: $src does not exist"
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "install: no destination specified"
- exit 1
- else
- true
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d $dst ]
- then
- dst="$dst"/`basename $src`
- else
- true
- fi
+ # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ dst=$dst/`basename "$src"`
+ fi
fi
## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
+# (this part is taken from Noah Friedman's mkinstalldirs script.)
# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp="${pathcomp}${1}"
- shift
-
- if [ ! -d "${pathcomp}" ] ;
- then
- $mkdirprog "${pathcomp}"
- else
- true
- fi
-
- pathcomp="${pathcomp}/"
-done
+if test ! -d "$dstdir"; then
+ defaultIFS='
+ '
+ IFS="${IFS-$defaultIFS}"
+
+ oIFS=$IFS
+ # Some sh's can't handle IFS=/ for some reason.
+ IFS='%'
+ set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+ IFS=$oIFS
+
+ pathcomp=
+
+ while test $# -ne 0 ; do
+ pathcomp=$pathcomp$1
+ shift
+ test -d "$pathcomp" || $mkdirprog "$pathcomp"
+ pathcomp=$pathcomp/
+ done
fi
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd $dst &&
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename $dst`
- else
- dstfile=`basename $dst $transformbasename |
- sed $transformarg`$transformbasename
- fi
+if test -n "$dir_arg"; then
+ $doit $instcmd "$dst" \
+ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename $dst`
- else
- true
- fi
-
-# Make a temp file name in the proper directory.
-
- dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd $src $dsttmp &&
-
- trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
- $doit $rmcmd -f $dstdir/$dstfile &&
- $doit $mvcmd $dsttmp $dstdir/$dstfile
+else
+ # If we're going to rename the final executable, determine the name now.
+ if test -z "$transformarg"; then
+ dstfile=`basename "$dst"`
+ else
+ dstfile=`basename "$dst" $transformbasename \
+ | sed $transformarg`$transformbasename
+ fi
+
+ # don't allow the sed command to completely eliminate the filename.
+ test -z "$dstfile" && dstfile=`basename "$dst"`
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/#inst.$$#
+ rmtmp=$dstdir/#rm.$$#
+
+ # Trap to clean up those temp files at exit.
+ trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Move or copy the file name to the temp name
+ $doit $instcmd "$src" "$dsttmp" &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $instcmd $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
+
+ # Now remove or move aside any old file at destination location. We
+ # try this two ways since rm can't unlink itself on some systems and
+ # the destination file might be busy for other reasons. In this case,
+ # the final cleanup might fail but the new file should still install
+ # successfully.
+ {
+ if test -f "$dstdir/$dstfile"; then
+ $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+ || {
+ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+ (exit 1); exit
+ }
+ else
+ :
+ fi
+ } &&
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
fi &&
-
-exit 0
+# The final little trick to "correctly" pass the exit status to the exit trap.
+{
+ (exit 0); exit
+}
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
Index: xc/extras/freetype2/builds/unix/install.mk
diff -u xc/extras/freetype2/builds/unix/install.mk:1.1.1.4 xc/extras/freetype2/builds/unix/install.mk:1.1.1.5
--- xc/extras/freetype2/builds/unix/install.mk:1.1.1.4 Thu Jun 20 04:16:03 2002
+++ xc/extras/freetype2/builds/unix/install.mk Wed May 28 22:01:42 2003
@@ -3,7 +3,7 @@
#
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2002 by
# David Turner, Robert Wilhelm, and Werner Lemberg.
#
# This file is part of the FreeType project, and may only be used, modified,
@@ -12,47 +12,63 @@
# indicate that you have read the license and understand and accept it
# fully.
+# If you say
+#
+# make install DESTDIR=/tmp/somewhere/
+#
+# don't forget the final backslash (this command is mainly for package
+# maintainers).
+
.PHONY: install uninstall check
# Unix installation and deinstallation targets.
install: $(PROJECT_LIBRARY)
- $(MKINSTALLDIRS) $(libdir) \
- $(includedir)/freetype2/freetype/config \
- $(includedir)/freetype2/freetype/internal \
- $(includedir)/freetype2/freetype/cache \
- $(bindir)
- $(LIBTOOL) --mode=install $(INSTALL) $(PROJECT_LIBRARY) $(libdir)
- -for P in $(PUBLIC_H) ; do \
- $(INSTALL_DATA) $$P $(includedir)/freetype2/freetype ; \
+ $(MKINSTALLDIRS) $(DESTDIR)$(libdir) \
+ $(DESTDIR)$(includedir)/freetype2/freetype/config \
+ $(DESTDIR)$(includedir)/freetype2/freetype/internal \
+ $(DESTDIR)$(includedir)/freetype2/freetype/cache \
+ $(DESTDIR)$(bindir) \
+ $(DESTDIR)$(datadir)/aclocal
+ $(LIBTOOL) --mode=install $(INSTALL) \
+ $(PROJECT_LIBRARY) $(DESTDIR)$(libdir)
+ -for P in $(PUBLIC_H) ; do \
+ $(INSTALL_DATA) \
+ $$P $(DESTDIR)$(includedir)/freetype2/freetype ; \
done
- -for P in $(BASE_H) ; do \
- $(INSTALL_DATA) $$P $(includedir)/freetype2/freetype/internal ; \
+ -for P in $(BASE_H) ; do \
+ $(INSTALL_DATA) \
+ $$P $(DESTDIR)$(includedir)/freetype2/freetype/internal ; \
done
- -for P in $(CONFIG_H) ; do \
- $(INSTALL_DATA) $$P $(includedir)/freetype2/freetype/config ; \
+ -for P in $(CONFIG_H) ; do \
+ $(INSTALL_DATA) \
+ $$P $(DESTDIR)$(includedir)/freetype2/freetype/config ; \
done
- -for P in $(CACHE_H) ; do \
- $(INSTALL_DATA) $$P $(includedir)/freetype2/freetype/cache ; \
+ -for P in $(CACHE_H) ; do \
+ $(INSTALL_DATA) \
+ $$P $(DESTDIR)$(includedir)/freetype2/freetype/cache ; \
done
- $(INSTALL_DATA) $(BUILD)/ft2unix.h $(includedir)/ft2build.h
+ $(INSTALL_DATA) $(BUILD)/ft2unix.h $(DESTDIR)$(includedir)/ft2build.h
$(INSTALL_SCRIPT) -m 755 $(OBJ_BUILD)/freetype-config \
- $(bindir)/freetype-config
+ $(DESTDIR)$(bindir)/freetype-config
+ $(INSTALL_SCRIPT) -m 644 $(BUILD)/freetype2.m4 \
+ $(DESTDIR)$(datadir)/aclocal/freetype2.m4
uninstall:
- -$(LIBTOOL) --mode=uninstall $(RM) $(libdir)/$(LIBRARY).$A
- -$(DELETE) $(includedir)/freetype2/freetype/cache/*
- -$(DELDIR) $(includedir)/freetype2/freetype/cache
- -$(DELETE) $(includedir)/freetype2/freetype/config/*
- -$(DELDIR) $(includedir)/freetype2/freetype/config
- -$(DELETE) $(includedir)/freetype2/freetype/internal/*
- -$(DELDIR) $(includedir)/freetype2/freetype/internal
- -$(DELETE) $(includedir)/freetype2/freetype/*
- -$(DELDIR) $(includedir)/freetype2/freetype
- -$(DELDIR) $(includedir)/freetype2
- -$(DELETE) $(includedir)/ft2build.h
- -$(DELETE) $(bindir)/freetype-config
+ -$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(libdir)/$(LIBRARY).$A
+ -$(DELETE) $(DESTDIR)$(includedir)/freetype2/freetype/cache/*
+ -$(DELDIR) $(DESTDIR)$(includedir)/freetype2/freetype/cache
+ -$(DELETE) $(DESTDIR)$(includedir)/freetype2/freetype/config/*
+ -$(DELDIR) $(DESTDIR)$(includedir)/freetype2/freetype/config
+ -$(DELETE) $(DESTDIR)$(includedir)/freetype2/freetype/internal/*
+ -$(DELDIR) $(DESTDIR)$(includedir)/freetype2/freetype/internal
+ -$(DELETE) $(DESTDIR)$(includedir)/freetype2/freetype/*
+ -$(DELDIR) $(DESTDIR)$(includedir)/freetype2/freetype
+ -$(DELDIR) $(DESTDIR)$(includedir)/freetype2
+ -$(DELETE) $(DESTDIR)$(includedir)/ft2build.h
+ -$(DELETE) $(DESTDIR)$(bindir)/freetype-config
+ -$(DELETE) $(DESTDIR)$(datadir)/aclocal/freetype2.m4
check:
Index: xc/extras/freetype2/builds/unix/ltmain.sh
diff -u xc/extras/freetype2/builds/unix/ltmain.sh:1.1.1.3 xc/extras/freetype2/builds/unix/ltmain.sh:1.1.1.4
--- xc/extras/freetype2/builds/unix/ltmain.sh:1.1.1.3 Tue Mar 26 23:35:43 2002
+++ xc/extras/freetype2/builds/unix/ltmain.sh Wed May 28 22:01:42 2003
@@ -49,14 +49,14 @@
fi
# The name of this program.
-progname=`$echo "$0" | sed 's%^.*/%%'`
+progname=`$echo "$0" | ${SED} 's%^.*/%%'`
modename="$progname"
# Constants.
PROGRAM=ltmain.sh
PACKAGE=libtool
-VERSION=1.4.2
-TIMESTAMP=" (1.922.2.53 2001/09/11 03:18:52)"
+VERSION=1.4.3
+TIMESTAMP=" (1.922.2.110 2002/10/23 01:39:54)"
default_mode=
help="Try \`$progname --help' for more information."
@@ -67,10 +67,19 @@
# Sed substitution that helps us do robust quoting. It backslashifies
# metacharacters that are still active within double-quoted strings.
-Xsed='sed -e 1s/^X//'
+Xsed="${SED}"' -e 1s/^X//'
sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
-SP2NL='tr \040 \012'
-NL2SP='tr \015\012 \040\040'
+# test EBCDIC or ASCII
+case `echo A|od -x` in
+ *[Cc]1*) # EBCDIC based system
+ SP2NL="tr '\100' '\n'"
+ NL2SP="tr '\r\n' '\100\100'"
+ ;;
+ *) # Assume ASCII based system
+ SP2NL="tr '\040' '\012'"
+ NL2SP="tr '\015\012' '\040\040'"
+ ;;
+esac
# NLS nuisances.
# Only set LANG and LC_ALL to C if already set.
@@ -144,7 +153,7 @@
;;
--config)
- sed -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0
+ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0
exit 0
;;
@@ -177,6 +186,8 @@
--mode) prevopt="--mode" prev=mode ;;
--mode=*) mode="$optarg" ;;
+ --preserve-dup-deps) duplicate_deps="yes" ;;
+
--quiet | --silent)
show=:
;;
@@ -215,7 +226,7 @@
# Infer the operation mode.
if test -z "$mode"; then
case $nonopt in
- *cc | *++ | gcc* | *-gcc*)
+ *cc | *++ | gcc* | *-gcc* | xlc*)
mode=link
for arg
do
@@ -467,7 +478,7 @@
pic_mode=default
;;
esac
- if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
# non-PIC code in shared libraries is not supported
pic_mode=default
fi
@@ -992,7 +1003,7 @@
# so, if we see these flags be careful not to treat them like -L
-L[A-Z][A-Z]*:*)
case $with_gcc/$host in
- no/*-*-irix*)
+ no/*-*-irix* | no/*-*-nonstopux*)
compile_command="$compile_command $arg"
finalize_command="$finalize_command $arg"
;;
@@ -1043,14 +1054,14 @@
# These systems don't actually have a C library (as such)
test "X$arg" = "X-lc" && continue
;;
- *-*-openbsd*)
+ *-*-openbsd* | *-*-freebsd*)
# Do not include libc due to us having libc/libc_r.
test "X$arg" = "X-lc" && continue
;;
esac
elif test "X$arg" = "X-lc_r"; then
case $host in
- *-*-openbsd*)
+ *-*-openbsd* | *-*-freebsd*)
# Do not include libc_r directly, use -pthread flag.
continue
;;
@@ -1330,9 +1341,11 @@
# Find all interdependent deplibs by searching for libraries
# that are linked more than once (e.g. -la -lb -la)
for deplib in $deplibs; do
- case "$libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
libs="$libs $deplib"
done
deplibs=
@@ -1461,10 +1474,12 @@
lib)
if test "$deplibs_check_method" != pass_all; then
echo
- echo "*** Warning: This library needs some functionality provided by $deplib."
+ echo "*** Warning: Trying to link with static lib archive $deplib."
echo "*** I have the capability to make that library automatically link in when"
echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have."
+ echo "*** shared version of the library, which you do not appear to have"
+ echo "*** because the file extensions .$libext of this argument makes me believe"
+ echo "*** that it is just a static archive that I should not used here."
else
echo
echo "*** Warning: Linking the shared library $output against the"
@@ -1508,7 +1523,7 @@
fi
# Check to see that this really is a libtool archive.
- if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ if (${SED} -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
else
$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
exit 1
@@ -1555,9 +1570,11 @@
tmp_libs=
for deplib in $dependency_libs; do
deplibs="$deplib $deplibs"
- case "$tmp_libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
tmp_libs="$tmp_libs $deplib"
done
elif test $linkmode != prog && test $linkmode != lib; then
@@ -1680,9 +1697,11 @@
# or/and link against static libraries
newdependency_libs="$deplib $newdependency_libs"
fi
- case "$tmp_libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
tmp_libs="$tmp_libs $deplib"
done # for deplib
continue
@@ -1766,8 +1785,8 @@
# Make a new name for the extract_expsyms_cmds to use
soroot="$soname"
- soname=`echo $soroot | sed -e 's/^.*\///'`
- newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a"
+ soname=`echo $soroot | ${SED} -e 's/^.*\///'`
+ newlib="libimp-`echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
# If the library has no export list, then create one now
if test -f "$output_objdir/$soname-def"; then :
@@ -1926,13 +1945,14 @@
# Just print a warning and add the library to dependency_libs so
# that the program can be linked against the static library.
echo
- echo "*** Warning: This library needs some functionality provided by $lib."
+ echo "*** Warning: This system can not link to static lib archive $lib."
echo "*** I have the capability to make that library automatically link in when"
echo "*** you link to this library. But I can only do this if you have a"
echo "*** shared version of the library, which you do not appear to have."
if test "$module" = yes; then
- echo "*** Therefore, libtool will create a static module, that should work "
- echo "*** as long as the dlopening application is linked with the -dlopen flag."
+ echo "*** But as you try to build a module library, libtool will still create "
+ echo "*** a static module, that should work as long as the dlopening application"
+ echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
if test -z "$global_symbol_pipe"; then
echo
echo "*** However, this would only work if libtool was able to extract symbol"
@@ -1981,9 +2001,11 @@
tmp_libs=
for deplib in $dependency_libs; do
newdependency_libs="$deplib $newdependency_libs"
- case "$tmp_libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
tmp_libs="$tmp_libs $deplib"
done
@@ -2009,7 +2031,7 @@
if grep "^installed=no" $deplib > /dev/null; then
path="-L$absdir/$objdir"
else
- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
if test -z "$libdir"; then
$echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
exit 1
@@ -2273,16 +2295,21 @@
versuffix=".$current";
;;
- irix)
+ irix | nonstopux)
major=`expr $current - $age + 1`
- verstring="sgi$major.$revision"
+
+ case $version_type in
+ nonstopux) verstring_prefix=nonstopux ;;
+ *) verstring_prefix=sgi ;;
+ esac
+ verstring="$verstring_prefix$major.$revision"
# Add in all the interfaces that we are compatible with.
loop=$revision
while test $loop != 0; do
iface=`expr $revision - $loop`
loop=`expr $loop - 1`
- verstring="sgi$major.$iface:$verstring"
+ verstring="$verstring_prefix$major.$iface:$verstring"
done
# Before this point, $major must not contain `.'.
@@ -2296,7 +2323,7 @@
;;
osf)
- major=`expr $current - $age`
+ major=.`expr $current - $age`
versuffix=".$current.$age.$revision"
verstring="$current.$age.$revision"
@@ -2388,9 +2415,9 @@
# Eliminate all temporary directories.
for path in $notinst_path; do
- lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'`
- deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'`
- dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'`
+ lib_search_path=`echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
+ deplibs=`echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
+ dependency_libs=`echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
done
if test -n "$xrpath"; then
@@ -2441,7 +2468,7 @@
*-*-netbsd*)
# Don't link with libc until the a.out ld.so is fixed.
;;
- *-*-openbsd*)
+ *-*-openbsd* | *-*-freebsd*)
# Do not include libc due to us having libc/libc_r.
;;
*)
@@ -2502,18 +2529,20 @@
else
droppeddeps=yes
echo
- echo "*** Warning: This library needs some functionality provided by $i."
+ echo "*** Warning: dynamic linker does not accept needed library $i."
echo "*** I have the capability to make that library automatically link in when"
echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have."
+ echo "*** shared version of the library, which I believe you do not have"
+ echo "*** because a test_compile did reveal that the linker did not use it for"
+ echo "*** its dynamic dependency list that programs get resolved with at runtime."
fi
else
newdeplibs="$newdeplibs $i"
fi
done
else
- # Error occured in the first compile. Let's try to salvage the situation:
- # Compile a seperate program for each library.
+ # Error occured in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
for i in $deplibs; do
name="`expr $i : '-l\(.*\)'`"
# If $name is empty we are operating on a -L argument.
@@ -2532,10 +2561,12 @@
else
droppeddeps=yes
echo
- echo "*** Warning: This library needs some functionality provided by $i."
+ echo "*** Warning: dynamic linker does not accept needed library $i."
echo "*** I have the capability to make that library automatically link in when"
echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have."
+ echo "*** shared version of the library, which you do not appear to have"
+ echo "*** because a test_compile did reveal that the linker did not use this one"
+ echo "*** as a dynamic dependency that programs can get resolved with at runtime."
fi
else
droppeddeps=yes
@@ -2574,14 +2605,14 @@
# but so what?
potlib="$potent_lib"
while test -h "$potlib" 2>/dev/null; do
- potliblink=`ls -ld $potlib | sed 's/.* -> //'`
+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
case $potliblink in
[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
esac
done
if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
- | sed 10q \
+ | ${SED} 10q \
| egrep "$file_magic_regex" > /dev/null; then
newdeplibs="$newdeplibs $a_deplib"
a_deplib=""
@@ -2592,10 +2623,17 @@
if test -n "$a_deplib" ; then
droppeddeps=yes
echo
- echo "*** Warning: This library needs some functionality provided by $a_deplib."
+ echo "*** Warning: linker path does not have real file for library $a_deplib."
echo "*** I have the capability to make that library automatically link in when"
echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have."
+ echo "*** shared version of the library, which you do not appear to have"
+ echo "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ echo "*** with $libname but no candidates were found. (...for file magic test)"
+ else
+ echo "*** with $libname and none of the candidates passed a file format test"
+ echo "*** using a file magic. Last file checked: $potlib"
+ fi
fi
else
# Add a -L argument.
@@ -2614,8 +2652,9 @@
for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
for potent_lib in $potential_libs; do
+ potlib="$potent_lib" # see symlink-check below in file_magic test
if eval echo \"$potent_lib\" 2>/dev/null \
- | sed 10q \
+ | ${SED} 10q \
| egrep "$match_pattern_regex" > /dev/null; then
newdeplibs="$newdeplibs $a_deplib"
a_deplib=""
@@ -2626,10 +2665,17 @@
if test -n "$a_deplib" ; then
droppeddeps=yes
echo
- echo "*** Warning: This library needs some functionality provided by $a_deplib."
+ echo "*** Warning: linker path does not have real file for library $a_deplib."
echo "*** I have the capability to make that library automatically link in when"
echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have."
+ echo "*** shared version of the library, which you do not appear to have"
+ echo "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+ else
+ echo "*** with $libname and none of the candidates passed a file format test"
+ echo "*** using a regex pattern. Last file checked: $potlib"
+ fi
fi
else
# Add a -L argument.
@@ -2894,7 +2940,18 @@
if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
eval cmds=\"$archive_expsym_cmds\"
else
+ save_deplibs="$deplibs"
+ for conv in $convenience; do
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ if test "$test_deplib" != "$conv"; then
+ tmp_deplibs="$tmp_deplibs $test_deplib"
+ fi
+ done
+ deplibs="$tmp_deplibs"
+ done
eval cmds=\"$archive_cmds\"
+ deplibs="$save_deplibs"
fi
save_ifs="$IFS"; IFS='~'
for cmd in $cmds; do
@@ -3093,7 +3150,7 @@
prog)
case $host in
- *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;;
+ *cygwin*) output=`echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
esac
if test -n "$vinfo"; then
$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
@@ -3115,6 +3172,13 @@
# On Rhapsody replace the C library is the System framework
compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ case $host in
+ *darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ compile_command="$compile_command ${wl}-bind_at_load"
+ finalize_command="$finalize_command ${wl}-bind_at_load"
+ ;;
+ esac
;;
esac
@@ -3281,9 +3345,9 @@
if test -z "$export_symbols"; then
export_symbols="$output_objdir/$output.exp"
$run $rm $export_symbols
- $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
else
- $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
+ $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
$run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
$run eval 'mv "$nlist"T "$nlist"'
fi
@@ -3291,7 +3355,7 @@
for arg in $dlprefiles; do
$show "extracting global C symbols from \`$arg'"
- name=`echo "$arg" | sed -e 's%^.*/%%'`
+ name=`echo "$arg" | ${SED} -e 's%^.*/%%'`
$run eval 'echo ": $name " >> "$nlist"'
$run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
done
@@ -3306,7 +3370,13 @@
fi
# Try sorting and uniquifying the output.
- if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
+ if grep -v "^: " < "$nlist" |
+ if sort -k 3 /dev/null 2>&1; then
+ sort -k 3
+ else
+ sort +2
+ fi |
+ uniq > "$nlist"S; then
:
else
grep -v "^: " < "$nlist" > "$nlist"S
@@ -3528,7 +3598,7 @@
relink_command="$var=\"$var_value\"; export $var; $relink_command"
fi
done
- relink_command="cd `pwd`; $relink_command"
+ relink_command="(cd `pwd`; $relink_command)"
relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
fi
@@ -3548,7 +3618,7 @@
# win32 will think the script is a binary if it has
# a .exe suffix, so we strip it off here.
case $output in
- *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
+ *.exe) output=`echo $output|${SED} 's,.exe$,,'` ;;
esac
# test for cygwin because mv fails w/o .exe extensions
case $host in
@@ -3572,7 +3642,7 @@
# Sed substitution that helps us do robust quoting. It backslashifies
# metacharacters that are still active within double-quoted strings.
-Xsed='sed -e 1s/^X//'
+Xsed="${SED}"' -e 1s/^X//'
sed_quote_subst='$sed_quote_subst'
# The HP-UX ksh and POSIX shell print the target directory to stdout
@@ -3610,7 +3680,7 @@
test \"x\$thisdir\" = \"x\$file\" && thisdir=.
# Follow symbolic links until we get to the real thisdir.
- file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
while test -n \"\$file\"; do
destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
@@ -3623,7 +3693,7 @@
fi
file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
- file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
done
# Try to get the absolute directory name.
@@ -3637,7 +3707,7 @@
progdir=\"\$thisdir/$objdir\"
if test ! -f \"\$progdir/\$program\" || \\
- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
test \"X\$file\" != \"X\$progdir/\$program\"; }; then
file=\"\$\$-\$program\"
@@ -3683,7 +3753,7 @@
$shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
# Some systems cannot cope with colon-terminated $shlibpath_var
- # The second colon is a workaround for a bug in BeOS R4 sed
+ # The second colon is a workaround for a bug in BeOS R4 ${SED}
$shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
export $shlibpath_var
@@ -3858,7 +3928,7 @@
fi
done
# Quote the link command for shipping.
- relink_command="cd `pwd`; $SHELL $0 --mode=relink $libtool_args"
+ relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args)"
relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
# Only create the output if not a dry run.
@@ -3875,7 +3945,7 @@
case $deplib in
*.la)
name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
if test -z "$libdir"; then
$echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
exit 1
@@ -3889,7 +3959,7 @@
newdlfiles=
for lib in $dlfiles; do
name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
if test -z "$libdir"; then
$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
exit 1
@@ -3900,7 +3970,7 @@
newdlprefiles=
for lib in $dlprefiles; do
name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
if test -z "$libdir"; then
$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
exit 1
@@ -4124,7 +4194,7 @@
*.la)
# Check to see that this really is a libtool archive.
- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
else
$echo "$modename: \`$file' is not a valid libtool archive" 1>&2
$echo "$help" 1>&2
@@ -4273,19 +4343,27 @@
fi
# Do a test to see if this is really a libtool program.
- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ case $host in
+ *cygwin*|*mingw*)
+ wrapper=`echo $file | ${SED} -e 's,.exe$,,'`
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if (${SED} -e '4q' $wrapper | egrep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
notinst_deplibs=
relink_command=
# If there is no directory component, then add one.
case $file in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
+ */* | *\\*) . $wrapper ;;
+ *) . ./$wrapper ;;
esac
# Check the variables that should have been set.
if test -z "$notinst_deplibs"; then
- $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
+ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
exit 1
fi
@@ -4310,8 +4388,8 @@
relink_command=
# If there is no directory component, then add one.
case $file in
- */* | *\\*) . $file ;;
- *) . ./$file ;;
+ */* | *\\*) . $wrapper ;;
+ *) . ./$wrapper ;;
esac
outputname=
@@ -4359,7 +4437,7 @@
destfile=$destfile.exe
;;
*:*.exe)
- destfile=`echo $destfile | sed -e 's,.exe$,,'`
+ destfile=`echo $destfile | ${SED} -e 's,.exe$,,'`
;;
esac
;;
@@ -4507,7 +4585,7 @@
case $file in
*.la)
# Check to see that this really is a libtool archive.
- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
else
$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
$echo "$help" 1>&2
@@ -4578,7 +4656,7 @@
-*) ;;
*)
# Do a test to see if this is really a libtool program.
- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ if (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
# If there is no directory component, then add one.
case $file in
*/* | *\\*) . $file ;;
@@ -4610,7 +4688,7 @@
fi
# Now prepare to actually exec the command.
- exec_cmd='"$cmd"$args'
+ exec_cmd="\$cmd$args"
else
# Display what would be done.
if test -n "$shlibpath_var"; then
@@ -4687,7 +4765,7 @@
case $name in
*.la)
# Possibly a libtool archive, so verify it.
- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
. $dir/$name
# Delete the libtool libraries and symlinks.
@@ -4742,7 +4820,7 @@
*)
# Do a test to see if this is a libtool program.
if test $mode = clean &&
- (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
relink_command=
. $dir/$file
Index: xc/extras/freetype2/builds/unix/mkinstalldirs
diff -u xc/extras/freetype2/builds/unix/mkinstalldirs:1.1.1.1 xc/extras/freetype2/builds/unix/mkinstalldirs:1.1.1.2
--- xc/extras/freetype2/builds/unix/mkinstalldirs:1.1.1.1 Fri Dec 8 16:26:09 2000
+++ xc/extras/freetype2/builds/unix/mkinstalldirs Wed May 28 22:01:43 2003
@@ -4,37 +4,108 @@
# Created: 1993-05-16
# Public domain
-# $Id: mkinstalldirs,v 1.3 2000/07/24 06:03:58 werner Exp $
-
errstatus=0
+dirmode=""
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
+
+# process command line arguments
+while test $# -gt 0 ; do
+ case $1 in
+ -h | --help | --h*) # -h for help
+ echo "$usage" 1>&2
+ exit 0
+ ;;
+ -m) # -m PERM arg
+ shift
+ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+ dirmode=$1
+ shift
+ ;;
+ --) # stop option processing
+ shift
+ break
+ ;;
+ -*) # unknown option
+ echo "$usage" 1>&2
+ exit 1
+ ;;
+ *) # first non-opt arg
+ break
+ ;;
+ esac
+done
+
+for file
+do
+ if test -d "$file"; then
+ shift
+ else
+ break
+ fi
+done
+
+case $# in
+ 0) exit 0 ;;
+esac
+
+case $dirmode in
+ '')
+ if mkdir -p -- . 2>/dev/null; then
+ echo "mkdir -p -- $*"
+ exec mkdir -p -- "$@"
+ fi
+ ;;
+ *)
+ if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
+ echo "mkdir -m $dirmode -p -- $*"
+ exec mkdir -m "$dirmode" -p -- "$@"
+ fi
+ ;;
+esac
for file
do
- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
- shift
+ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+ shift
- pathcomp=
- for d
- do
- pathcomp="$pathcomp$d"
- case "$pathcomp" in
- -* ) pathcomp=./$pathcomp ;;
- esac
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp" 1>&2
-
- mkdir "$pathcomp" || lasterr=$?
-
- if test ! -d "$pathcomp"; then
- errstatus=$lasterr
- fi
- fi
+ pathcomp=
+ for d
+ do
+ pathcomp="$pathcomp$d"
+ case $pathcomp in
+ -*) pathcomp=./$pathcomp ;;
+ esac
+
+ if test ! -d "$pathcomp"; then
+ echo "mkdir $pathcomp"
+
+ mkdir "$pathcomp" || lasterr=$?
+
+ if test ! -d "$pathcomp"; then
+ errstatus=$lasterr
+ else
+ if test ! -z "$dirmode"; then
+ echo "chmod $dirmode $pathcomp"
+ lasterr=""
+ chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+ if test ! -z "$lasterr"; then
+ errstatus=$lasterr
+ fi
+ fi
+ fi
+ fi
- pathcomp="$pathcomp/"
- done
+ pathcomp="$pathcomp/"
+ done
done
exit $errstatus
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# End:
# mkinstalldirs ends here
Index: xc/extras/freetype2/builds/unix/unix-cc.in
diff -u xc/extras/freetype2/builds/unix/unix-cc.in:1.1.1.2 xc/extras/freetype2/builds/unix/unix-cc.in:1.1.1.3
--- xc/extras/freetype2/builds/unix/unix-cc.in:1.1.1.2 Thu Jun 20 04:16:04 2002
+++ xc/extras/freetype2/builds/unix/unix-cc.in Wed May 28 22:01:43 2003
@@ -78,6 +78,7 @@
# Library linking
#
LINK_LIBRARY = $(LIBTOOL) --mode=link $(CCraw) -o $@ $(OBJECTS_LIST) \
- -rpath $(libdir) -version-info $(version_info)
+ -rpath $(libdir) -version-info $(version_info) \
+ $(LDFLAGS)
# EOF
Index: xc/extras/freetype2/builds/unix/unix-def.in
diff -u xc/extras/freetype2/builds/unix/unix-def.in:1.1.1.3 xc/extras/freetype2/builds/unix/unix-def.in:1.1.1.4
--- xc/extras/freetype2/builds/unix/unix-def.in:1.1.1.3 Thu Jun 20 04:16:04 2002
+++ xc/extras/freetype2/builds/unix/unix-def.in Wed May 28 22:01:43 2003
@@ -13,16 +13,16 @@
# fully.
-ifndef TOP
- TOP := .
+ifndef TOP_DIR
+ TOP_DIR := .
endif
-TOP := $(shell cd $(TOP); pwd)
+TOP_DIR := $(shell cd $(TOP_DIR); pwd)
DELETE := @RMF@
DELDIR := @RMDIR@
SEP := /
HOSTSEP := $(SEP)
-BUILD := $(TOP)/builds/unix
+BUILD := $(TOP_DIR)/builds/unix
PLATFORM := unix
# this is used for `make distclean' and `make install'
@@ -58,6 +58,7 @@
libdir := @libdir@
bindir := @bindir@
includedir := @includedir@
+datadir := @datadir@
version_info := @version_info@
@@ -66,13 +67,13 @@
#
# This lets you build the library in your own directory with something like
#
-# set TOP=.../path/to/freetype2/top/dir...
+# set TOP_DIR=.../path/to/freetype2/top/dir...
# set OBJ_DIR=.../path/to/obj/dir
-# make -f $TOP/Makefile setup [options]
-# make -f $TOP/Makefile
+# make -f $TOP_DIR/Makefile setup [options]
+# make -f $TOP_DIR/Makefile
#
ifndef OBJ_DIR
- OBJ_DIR := $(shell cd $(TOP)/objs; pwd)
+ OBJ_DIR := $(shell cd $(TOP_DIR)/objs; pwd)
endif
@@ -84,6 +85,12 @@
LIB_DIR := $(OBJ_DIR)
+# The SYSTEM_ZLIB macro is defined if the user wishes to link dynamically
+# with its system wide zlib. If SYSTEM_ZLIB is 'yes', the zlib part of the
+# ftgzip module is not compiled in.
+SYSTEM_ZLIB := @SYSTEM_ZLIB@
+
+
# The NO_OUTPUT macro is appended to command lines in order to ignore
# the output of some programs.
#
Index: xc/extras/freetype2/builds/unix/unix-dev.mk
diff -u xc/extras/freetype2/builds/unix/unix-dev.mk:1.1.1.2 xc/extras/freetype2/builds/unix/unix-dev.mk:1.1.1.3
--- xc/extras/freetype2/builds/unix/unix-dev.mk:1.1.1.2 Tue May 15 23:45:49 2001
+++ xc/extras/freetype2/builds/unix/unix-dev.mk Wed May 28 22:01:43 2003
@@ -16,10 +16,10 @@
# fully.
-include $(TOP)/builds/unix/unixddef.mk
-BUILD := $(TOP)/builds/devel
+include $(TOP_DIR)/builds/unix/unixddef.mk
+BUILD := $(TOP_DIR)/builds/devel
-include $(TOP)/builds/compiler/gcc-dev.mk
-include $(TOP)/builds/link_std.mk
+include $(TOP_DIR)/builds/compiler/gcc-dev.mk
+include $(TOP_DIR)/builds/link_std.mk
# EOF
Index: xc/extras/freetype2/builds/unix/unix-lcc.mk
diff -u xc/extras/freetype2/builds/unix/unix-lcc.mk:1.1.1.1 xc/extras/freetype2/builds/unix/unix-lcc.mk:1.1.1.2
--- xc/extras/freetype2/builds/unix/unix-lcc.mk:1.1.1.1 Fri Dec 8 16:26:09 2000
+++ xc/extras/freetype2/builds/unix/unix-lcc.mk Wed May 28 22:01:43 2003
@@ -16,8 +16,8 @@
# fully.
-include $(TOP)/builds/unix/unixddef.mk
-include $(TOP)/builds/compiler/unix-lcc.mk
-include $(TOP)/builds/link_std.mk
+include $(TOP_DIR)/builds/unix/unixddef.mk
+include $(TOP_DIR)/builds/compiler/unix-lcc.mk
+include $(TOP_DIR)/builds/link_std.mk
# EOF
Index: xc/extras/freetype2/builds/unix/unix.mk
diff -u xc/extras/freetype2/builds/unix/unix.mk:1.1.1.3 xc/extras/freetype2/builds/unix/unix.mk:1.1.1.4
--- xc/extras/freetype2/builds/unix/unix.mk:1.1.1.3 Thu Jun 20 04:16:04 2002
+++ xc/extras/freetype2/builds/unix/unix.mk Wed May 28 22:01:43 2003
@@ -12,10 +12,10 @@
# indicate that you have read the license and understand and accept it
# fully.
-have_mk := $(strip $(wildcard $(TOP)/builds/unix/unix-def.mk))
+have_mk := $(strip $(wildcard $(TOP_DIR)/builds/unix/unix-def.mk))
ifneq ($(have_mk),)
- include $(TOP)/builds/unix/unix-def.mk
- include $(TOP)/builds/unix/unix-cc.mk
+ include $(TOP_DIR)/builds/unix/unix-def.mk
+ include $(TOP_DIR)/builds/unix/unix-cc.mk
else
# we are building FT2 not in the src tree
include $(OBJ_DIR)/unix-def.mk
@@ -29,7 +29,7 @@
# Now include the main sub-makefile. It contains all the rules used to
# build the library with the previous variables defined.
#
- include $(TOP)/builds/$(PROJECT).mk
+ include $(TOP_DIR)/builds/$(PROJECT).mk
# The cleanup targets.
@@ -52,6 +52,6 @@
endif
-include $(TOP)/builds/unix/install.mk
+include $(TOP_DIR)/builds/unix/install.mk
# EOF
Index: xc/extras/freetype2/builds/unix/unixddef.mk
diff -u xc/extras/freetype2/builds/unix/unixddef.mk:1.1.1.2 xc/extras/freetype2/builds/unix/unixddef.mk:1.1.1.3
--- xc/extras/freetype2/builds/unix/unixddef.mk:1.1.1.2 Tue May 15 23:45:49 2001
+++ xc/extras/freetype2/builds/unix/unixddef.mk Wed May 28 22:01:43 2003
@@ -14,17 +14,17 @@
# fully.
-ifndef TOP
- TOP := .
+ifndef TOP_DIR
+ TOP_DIR := .
endif
-TOP := $(shell cd $(TOP); pwd)
+TOP_DIR := $(shell cd $(TOP_DIR); pwd)
DELETE := rm -f
SEP := /
HOSTSEP := $(SEP)
# we use a special devel ftoption.h
-BUILD := $(TOP)/builds/devel
+BUILD := $(TOP_DIR)/builds/devel
# do not set the platform to `unix', or libtool will trick you
PLATFORM := unixdev
@@ -33,7 +33,7 @@
# The directory where all object files are placed.
#
ifndef OBJ_DIR
- OBJ_DIR := $(shell cd $(TOP)/objs; pwd)
+ OBJ_DIR := $(shell cd $(TOP_DIR)/objs; pwd)
endif
Index: xc/extras/freetype2/builds/win32/ftdebug.c
diff -u xc/extras/freetype2/builds/win32/ftdebug.c:1.1.1.2 xc/extras/freetype2/builds/win32/ftdebug.c:1.1.1.3
--- xc/extras/freetype2/builds/win32/ftdebug.c:1.1.1.2 Thu Jun 20 04:16:04 2002
+++ xc/extras/freetype2/builds/win32/ftdebug.c Wed May 28 22:01:43 2003
@@ -107,9 +107,9 @@
/* */
/* Initialize the tracing sub-system. This is done by retrieving the */
/* value of the "FT2_DEBUG" environment variable. It must be a list of */
- /* toggles, separated by spaces, `;' or `:'. Example: */
+ /* toggles, separated by spaces, `;' or `,'. Example: */
/* */
- /* "any=3 memory=6 stream=5" */
+ /* "any:3 memory:6 stream:5" */
/* */
/* This will request that all levels be set to 3, except the trace level */
/* for the memory and stream components which are set to 6 and 5, */
@@ -136,15 +136,15 @@
for ( ; *p; p++ )
{
/* skip leading whitespace and separators */
- if ( *p == ' ' || *p == '\t' || *p == ':' || *p == ';' || *p == '=' )
+ if ( *p == ' ' || *p == '\t' || *p == ',' || *p == ';' || *p == '=' )
continue;
- /* read toggle name, followed by '=' */
+ /* read toggle name, followed by ':' */
q = p;
- while ( *p && *p != '=' )
+ while ( *p && *p != ':' )
p++;
- if ( *p == '=' && p > q )
+ if ( *p == ':' && p > q )
{
int n, i, len = p - q;
int level = -1, found = -1;
Index: xc/extras/freetype2/builds/win32/w32-bcc.mk
diff -u xc/extras/freetype2/builds/win32/w32-bcc.mk:1.1.1.1 xc/extras/freetype2/builds/win32/w32-bcc.mk:1.1.1.2
--- xc/extras/freetype2/builds/win32/w32-bcc.mk:1.1.1.1 Fri Dec 8 16:26:10 2000
+++ xc/extras/freetype2/builds/win32/w32-bcc.mk Wed May 28 22:01:43 2003
@@ -14,10 +14,10 @@
SEP := /
-include $(TOP)/builds/win32/win32-def.mk
-include $(TOP)/builds/compiler/bcc.mk
+include $(TOP_DIR)/builds/win32/win32-def.mk
+include $(TOP_DIR)/builds/compiler/bcc.mk
# include linking instructions
-include $(TOP)/builds/link_dos.mk
+include $(TOP_DIR)/builds/link_dos.mk
# EOF
Index: xc/extras/freetype2/builds/win32/w32-bccd.mk
diff -u xc/extras/freetype2/builds/win32/w32-bccd.mk:1.1.1.2 xc/extras/freetype2/builds/win32/w32-bccd.mk:1.1.1.3
--- xc/extras/freetype2/builds/win32/w32-bccd.mk:1.1.1.2 Tue May 15 23:45:49 2001
+++ xc/extras/freetype2/builds/win32/w32-bccd.mk Wed May 28 22:01:43 2003
@@ -15,12 +15,12 @@
SEP := /
-include $(TOP)/builds/win32/win32-def.mk
-BUILD := $(TOP)/builds/devel
+include $(TOP_DIR)/builds/win32/win32-def.mk
+BUILD := $(TOP_DIR)/builds/devel
-include $(TOP)/builds/compiler/bcc-dev.mk
+include $(TOP_DIR)/builds/compiler/bcc-dev.mk
# include linking instructions
-include $(TOP)/builds/link_dos.mk
+include $(TOP_DIR)/builds/link_dos.mk
# EOF
Index: xc/extras/freetype2/builds/win32/w32-dev.mk
diff -u xc/extras/freetype2/builds/win32/w32-dev.mk:1.1.1.2 xc/extras/freetype2/builds/win32/w32-dev.mk:1.1.1.3
--- xc/extras/freetype2/builds/win32/w32-dev.mk:1.1.1.2 Tue May 15 23:45:49 2001
+++ xc/extras/freetype2/builds/win32/w32-dev.mk Wed May 28 22:01:43 2003
@@ -19,19 +19,19 @@
# Shell (_not_ Cygwin BASH)!
#
-ifndef TOP
- TOP := .
+ifndef TOP_DIR
+ TOP_DIR := .
endif
SEP := /
-include $(TOP)/builds/win32/win32-def.mk
-BUILD := $(TOP)/builds/devel
+include $(TOP_DIR)/builds/win32/win32-def.mk
+BUILD := $(TOP_DIR)/builds/devel
-include $(TOP)/builds/compiler/gcc-dev.mk
+include $(TOP_DIR)/builds/compiler/gcc-dev.mk
# include linking instructions
-include $(TOP)/builds/link_dos.mk
+include $(TOP_DIR)/builds/link_dos.mk
Index: xc/extras/freetype2/builds/win32/w32-gcc.mk
diff -u xc/extras/freetype2/builds/win32/w32-gcc.mk:1.1.1.1 xc/extras/freetype2/builds/win32/w32-gcc.mk:1.1.1.2
--- xc/extras/freetype2/builds/win32/w32-gcc.mk:1.1.1.1 Fri Dec 8 16:26:10 2000
+++ xc/extras/freetype2/builds/win32/w32-gcc.mk Wed May 28 22:01:43 2003
@@ -18,12 +18,12 @@
SEP := /
# include Win32-specific definitions
-include $(TOP)/builds/win32/win32-def.mk
+include $(TOP_DIR)/builds/win32/win32-def.mk
# include gcc-specific definitions
-include $(TOP)/builds/compiler/gcc.mk
+include $(TOP_DIR)/builds/compiler/gcc.mk
# include linking instructions
-include $(TOP)/builds/link_dos.mk
+include $(TOP_DIR)/builds/link_dos.mk
# EOF
Index: xc/extras/freetype2/builds/win32/w32-icc.mk
diff -u xc/extras/freetype2/builds/win32/w32-icc.mk:1.1.1.1 xc/extras/freetype2/builds/win32/w32-icc.mk:1.1.1.2
--- xc/extras/freetype2/builds/win32/w32-icc.mk:1.1.1.1 Fri Dec 8 16:26:10 2000
+++ xc/extras/freetype2/builds/win32/w32-icc.mk Wed May 28 22:01:43 2003
@@ -13,10 +13,10 @@
# fully.
-include $(TOP)/builds/win32/win32-def.mk
-include $(TOP)/builds/compiler/visualage.mk
+include $(TOP_DIR)/builds/win32/win32-def.mk
+include $(TOP_DIR)/builds/compiler/visualage.mk
# include linking instructions
-include $(TOP)/builds/link_dos.mk
+include $(TOP_DIR)/builds/link_dos.mk
# EOF
Index: xc/extras/freetype2/builds/win32/w32-intl.mk
diff -u xc/extras/freetype2/builds/win32/w32-intl.mk:1.1.1.1 xc/extras/freetype2/builds/win32/w32-intl.mk:1.1.1.2
--- xc/extras/freetype2/builds/win32/w32-intl.mk:1.1.1.1 Tue May 15 23:45:49 2001
+++ xc/extras/freetype2/builds/win32/w32-intl.mk Wed May 28 22:01:43 2003
@@ -14,10 +14,10 @@
SEP := /
-include $(TOP)/builds/win32/win32-def.mk
-include $(TOP)/builds/compiler/intelc.mk
+include $(TOP_DIR)/builds/win32/win32-def.mk
+include $(TOP_DIR)/builds/compiler/intelc.mk
# include linking instructions
-include $(TOP)/builds/link_dos.mk
+include $(TOP_DIR)/builds/link_dos.mk
# EOF
Index: xc/extras/freetype2/builds/win32/w32-lcc.mk
diff -u xc/extras/freetype2/builds/win32/w32-lcc.mk:1.1.1.1 xc/extras/freetype2/builds/win32/w32-lcc.mk:1.1.1.2
--- xc/extras/freetype2/builds/win32/w32-lcc.mk:1.1.1.1 Fri Dec 8 16:26:10 2000
+++ xc/extras/freetype2/builds/win32/w32-lcc.mk Wed May 28 22:01:43 2003
@@ -14,11 +14,11 @@
SEP := /
-include $(TOP)/builds/win32/win32-def.mk
-include $(TOP)/builds/compiler/win-lcc.mk
+include $(TOP_DIR)/builds/win32/win32-def.mk
+include $(TOP_DIR)/builds/compiler/win-lcc.mk
# include linking instructions
-include $(TOP)/builds/link_dos.mk
+include $(TOP_DIR)/builds/link_dos.mk
# EOF
Index: xc/extras/freetype2/builds/win32/w32-mingw32.mk
diff -u xc/extras/freetype2/builds/win32/w32-mingw32.mk:1.1.1.1 xc/extras/freetype2/builds/win32/w32-mingw32.mk:1.1.1.2
--- xc/extras/freetype2/builds/win32/w32-mingw32.mk:1.1.1.1 Fri Dec 8 16:26:10 2000
+++ xc/extras/freetype2/builds/win32/w32-mingw32.mk Wed May 28 22:01:43 2003
@@ -18,14 +18,14 @@
SEP := /
# include Win32-specific definitions
-include $(TOP)/builds/win32/win32-def.mk
+include $(TOP_DIR)/builds/win32/win32-def.mk
LIBRARY := lib$(PROJECT)
# include gcc-specific definitions
-include $(TOP)/builds/compiler/gcc.mk
+include $(TOP_DIR)/builds/compiler/gcc.mk
# include linking instructions
-include $(TOP)/builds/link_dos.mk
+include $(TOP_DIR)/builds/link_dos.mk
# EOF
Index: xc/extras/freetype2/builds/win32/w32-vcc.mk
diff -u xc/extras/freetype2/builds/win32/w32-vcc.mk:1.1.1.1 xc/extras/freetype2/builds/win32/w32-vcc.mk:1.1.1.2
--- xc/extras/freetype2/builds/win32/w32-vcc.mk:1.1.1.1 Fri Dec 8 16:26:10 2000
+++ xc/extras/freetype2/builds/win32/w32-vcc.mk Wed May 28 22:01:43 2003
@@ -14,10 +14,10 @@
SEP := /
-include $(TOP)/builds/win32/win32-def.mk
-include $(TOP)/builds/compiler/visualc.mk
+include $(TOP_DIR)/builds/win32/win32-def.mk
+include $(TOP_DIR)/builds/compiler/visualc.mk
# include linking instructions
-include $(TOP)/builds/link_dos.mk
+include $(TOP_DIR)/builds/link_dos.mk
# EOF
Index: xc/extras/freetype2/builds/win32/w32-wat.mk
diff -u xc/extras/freetype2/builds/win32/w32-wat.mk:1.1.1.1 xc/extras/freetype2/builds/win32/w32-wat.mk:1.1.1.2
--- xc/extras/freetype2/builds/win32/w32-wat.mk:1.1.1.1 Tue May 15 23:45:49 2001
+++ xc/extras/freetype2/builds/win32/w32-wat.mk Wed May 28 22:01:43 2003
@@ -16,11 +16,11 @@
SEP := /
ISEP := $(strip \ )
-include $(TOP)/builds/win32/win32-def.mk
-include $(TOP)/builds/compiler/watcom.mk
+include $(TOP_DIR)/builds/win32/win32-def.mk
+include $(TOP_DIR)/builds/compiler/watcom.mk
# include linking instructions
-include $(TOP)/builds/link_dos.mk
+include $(TOP_DIR)/builds/link_dos.mk
# EOF
Index: xc/extras/freetype2/builds/win32/win32-def.mk
diff -u xc/extras/freetype2/builds/win32/win32-def.mk:1.1.1.3 xc/extras/freetype2/builds/win32/win32-def.mk:1.1.1.4
--- xc/extras/freetype2/builds/win32/win32-def.mk:1.1.1.3 Sun Sep 9 22:55:53 2001
+++ xc/extras/freetype2/builds/win32/win32-def.mk Wed May 28 22:01:43 2003
@@ -15,7 +15,7 @@
DELETE := del
HOSTSEP := $(strip \ )
-BUILD := $(TOP)$(SEP)builds$(SEP)win32
+BUILD := $(TOP_DIR)$(SEP)builds$(SEP)win32
PLATFORM := win32
# by default, we use "\" as a separator on Win32
@@ -30,13 +30,13 @@
#
# This lets you build the library in your own directory with something like
#
-# set TOP=.../path/to/freetype2/top/dir...
+# set TOP_DIR=.../path/to/freetype2/top/dir...
# set OBJ_DIR=.../path/to/obj/dir
-# make -f %TOP%/Makefile setup [options]
-# make -f %TOP%/Makefile
+# make -f %TOP_DIR%/Makefile setup [options]
+# make -f %TOP_DIR%/Makefile
#
ifndef OBJ_DIR
- OBJ_DIR := $(TOP)$(SEP)objs
+ OBJ_DIR := $(TOP_DIR)$(SEP)objs
endif
Index: xc/extras/freetype2/builds/win32/visualc/freetype.dsp
diff -u xc/extras/freetype2/builds/win32/visualc/freetype.dsp:1.1.1.4 xc/extras/freetype2/builds/win32/visualc/freetype.dsp:1.1.1.5
--- xc/extras/freetype2/builds/win32/visualc/freetype.dsp:1.1.1.4 Thu Jun 20 04:16:04 2002
+++ xc/extras/freetype2/builds/win32/visualc/freetype.dsp Wed May 28 22:01:43 2003
@@ -54,7 +54,7 @@
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype211.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype214.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Debug"
@@ -78,7 +78,7 @@
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype211_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype214_D.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded"
@@ -103,7 +103,7 @@
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo /out:"lib\freetype200b8_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype211MT_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype214MT_D.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded"
@@ -127,7 +127,7 @@
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo /out:"lib\freetype200b8.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype211MT.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype214MT.lib"
!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded"
@@ -152,7 +152,7 @@
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype206.lib"
-# ADD LIB32 /out:"..\..\..\objs\freetype211ST.lib"
+# ADD LIB32 /out:"..\..\..\objs\freetype214ST.lib"
# SUBTRACT LIB32 /nologo
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded"
@@ -178,7 +178,7 @@
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype206_D.lib"
-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype211ST_D.lib"
+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype214ST_D.lib"
!ENDIF
@@ -231,6 +231,10 @@
# End Source File
# Begin Source File
+SOURCE=..\..\..\src\gzip\ftgzip.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\..\src\base\ftinit.c
# SUBTRACT CPP /Fr
# End Source File
@@ -251,6 +255,10 @@
# End Source File
# Begin Source File
+SOURCE=..\..\..\src\pfr\pfr.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\..\src\psaux\psaux.c
# SUBTRACT CPP /Fr
# End Source File
Index: xc/extras/freetype2/builds/win32/visualc/index.html
diff -u xc/extras/freetype2/builds/win32/visualc/index.html:1.1.1.2 xc/extras/freetype2/builds/win32/visualc/index.html:1.1.1.3
--- xc/extras/freetype2/builds/win32/visualc/index.html:1.1.1.2 Sun Sep 9 22:55:53 2001
+++ xc/extras/freetype2/builds/win32/visualc/index.html Wed May 28 22:01:43 2003
@@ -1,4 +1,4 @@
-
+
FreeType 2 Project Files for Visual C++
@@ -8,14 +8,14 @@
This directory contains a project file for Visual C++, named
freetype.dsp. It will compile the following libraries
- from the FreeType 2.0.4 sources:
Index: xc/extras/freetype2/devel/ft2build.h
diff -u /dev/null xc/extras/freetype2/devel/ft2build.h:1.1.1.1
--- /dev/null Sat Feb 28 21:40:13 2004
+++ xc/extras/freetype2/devel/ft2build.h Wed May 28 22:01:43 2003
@@ -0,0 +1,41 @@
+/***************************************************************************/
+/* */
+/* ft2build.h */
+/* */
+/* FreeType 2 build and setup macros. */
+/* (Generic version) */
+/* */
+/* Copyright 1996-2001 by */
+/* David Turner, Robert Wilhelm, and Werner Lemberg. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+ /*
+ * this is a development version of that is used
+ * to build the library in debug mode. Its only difference with
+ * the reference is that is forces the use of the local "ftoption.h"
+ * which contains different settings for all configuration macros
+ *
+ * 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
+ */
+
+#ifndef __FT2_BUILD_GENERIC_H__
+#define __FT2_BUILD_GENERIC_H__
+
+#define FT_CONFIG_OPTIONS_H
+
+#include
+
+#endif /* __FT2_BUILD_GENERIC_H__ */
+
+
+/* END */
Index: xc/extras/freetype2/devel/ftoption.h
diff -u /dev/null xc/extras/freetype2/devel/ftoption.h:1.1.1.1
--- /dev/null Sat Feb 28 21:40:13 2004
+++ xc/extras/freetype2/devel/ftoption.h Wed May 28 22:01:43 2003
@@ -0,0 +1,502 @@
+/***************************************************************************/
+/* */
+/* ftoption.h */
+/* */
+/* User-selectable configuration macros (specification only). */
+/* */
+/* Copyright 1996-2001, 2002 by */
+/* David Turner, Robert Wilhelm, and Werner Lemberg. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+
+#ifndef __FTOPTION_H__
+#define __FTOPTION_H__
+
+
+#include
+
+ /*
+ * this is a special developer version of "ftoption.h", it is used
+ * to define all debugging options, as well as the TrueType bytecode
+ * interpreter
+ */
+
+FT_BEGIN_HEADER
+
+ /*************************************************************************/
+ /* */
+ /* USER-SELECTABLE CONFIGURATION MACROS */
+ /* */
+ /* This file contains the default configuration macro definitions for */
+ /* a standard build of the FreeType library. There are three ways to */
+ /* use this file to build project-specific versions of the library: */
+ /* */
+ /* - You can modify this file by hand, but this is not recommended in */
+ /* cases where you would like to build several versions of the */
+ /* library from a single source directory. */
+ /* */
+ /* - You can put a copy of this file in your build directory, more */
+ /* precisely in "$BUILD/freetype/config/ftoption.h", where "$BUILD" */
+ /* is the name of a directory that is included _before_ the FreeType */
+ /* include path during compilation. */
+ /* */
+ /* The default FreeType Makefiles and Jamfiles use the build */
+ /* directory "builds/" by default, but you can easily change */
+ /* that for your own projects. */
+ /* */
+ /* - Copy the file to "$BUILD/ft2build.h" and modify it */
+ /* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */
+ /* locate this file during the build. For example, */
+ /* */
+ /* #define FT_CONFIG_OPTIONS_H */
+ /* #include */
+ /* */
+ /* will use "$BUILD/myftoptions.h" instead of this file for macro */
+ /* definitions. */
+ /* */
+ /* Note also that you can similarly pre-define the macro */
+ /* FT_CONFIG_MODULES_H used to locate the file listing of the modules */
+ /* that are statically linked to the library at compile time. By */
+ /* default, this file is . */
+ /* */
+ /* We highly recommend using the third method whenever possible. */
+ /* */
+ /*************************************************************************/
+
+
+ /*************************************************************************/
+ /*************************************************************************/
+ /**** ****/
+ /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/
+ /**** ****/
+ /*************************************************************************/
+ /*************************************************************************/
+
+
+ /*************************************************************************/
+ /* */
+ /* Many compilers provide a non-ANSI 64-bit data type that can be used */
+ /* by FreeType to speed up some computations. However, this will create */
+ /* some problems when compiling the library in strict ANSI mode. */
+ /* */
+ /* For this reason, the use of 64-bit ints is normally disabled when */
+ /* the __STDC__ macro is defined. You can however disable this by */
+ /* defining here the macro FT_CONFIG_OPTION_FORCE_INT64. */
+ /* */
+ /* For most compilers, this will only create compilation warnings */
+ /* when building the library. */
+ /* */
+ /* ObNote: The compiler-specific 64-bit integers are detected in the */
+ /* file "ftconfig.h" either statically, or through Autoconf */
+ /* on platforms that support it. */
+ /* */
+#undef FT_CONFIG_OPTION_FORCE_INT64
+
+
+ /*************************************************************************/
+ /* */
+ /* Gzip-compressed file support. */
+ /* */
+ /* FreeType now handles font files that have been compressed with the */
+ /* 'gzip' program. This is mostly used to parse many of the PCF files */
+ /* that come with XFree86. The implementation uses 'zlib' to */
+ /* partially uncompress the file on the fly (see src/base/ftgzip.c). */
+ /* */
+ /* Define this macro if you want to enable this "feature". Note that */
+ /* this will however force you to link the zlib to any program that */
+ /* also uses FreeType. */
+ /* */
+#define FT_CONFIG_OPTION_USE_ZLIB
+
+
+ /*************************************************************************/
+ /* */
+ /* ZLib library selection */
+ /* */
+ /* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */
+ /* It allows FreeType's "ftgzip" component to link to the system's */
+ /* installation of the ZLib library. This is useful on systems like */
+ /* Unix or VMS where it generally is already available. */
+ /* */
+ /* If you let it undefined, the component will use its own copy */
+ /* of the zlib sources instead. These have been modified to be */
+ /* included directly within the component and *not* export external */
+ /* function names. This allows you to link any program with FreeType */
+ /* _and_ ZLib without linking conflicts. */
+ /* */
+ /* do not #undef this macro here, since the build system might */
+ /* define for certain configurations */
+ /* */
+/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
+
+
+ /*************************************************************************/
+ /* */
+ /* DLL export compilation */
+ /* */
+ /* When compiling FreeType as a DLL, some systems/compilers need a */
+ /* special keyword in front OR after the return type of function */
+ /* declarations. */
+ /* */
+ /* Two macros are used within the FreeType source code to define */
+ /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */
+ /* */
+ /* FT_EXPORT( return_type ) */
+ /* */
+ /* is used in a function declaration, as in */
+ /* */
+ /* FT_EXPORT( FT_Error ) */
+ /* FT_Init_FreeType( FT_Library* alibrary ); */
+ /* */
+ /* */
+ /* FT_EXPORT_DEF( return_type ) */
+ /* */
+ /* is used in a function definition, as in */
+ /* */
+ /* FT_EXPORT_DEF( FT_Error ) */
+ /* FT_Init_FreeType( FT_Library* alibrary ) */
+ /* { */
+ /* ... some code ... */
+ /* return FT_Err_Ok; */
+ /* } */
+ /* */
+ /* You can provide your own implementation of FT_EXPORT and */
+ /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */
+ /* will be later automatically defined as `extern return_type' to */
+ /* allow normal compilation. */
+ /* */
+/* #define FT_EXPORT(x) extern x */
+/* #define FT_EXPORT_DEF(x) x */
+
+
+ /*************************************************************************/
+ /* */
+ /* Glyph Postscript Names handling */
+ /* */
+ /* By default, FreeType 2 is compiled with the `PSNames' module. This */
+ /* module is in charge of converting a glyph name string into a */
+ /* Unicode value, or return a Macintosh standard glyph name for the */
+ /* use with the TrueType `post' table. */
+ /* */
+ /* Undefine this macro if you do not want `PSNames' compiled in your */
+ /* build of FreeType. This has the following effects: */
+ /* */
+ /* - The TrueType driver will provide its own set of glyph names, */
+ /* if you build it to support postscript names in the TrueType */
+ /* `post' table. */
+ /* */
+ /* - The Type 1 driver will not be able to synthetize a Unicode */
+ /* charmap out of the glyphs found in the fonts. */
+ /* */
+ /* You would normally undefine this configuration macro when building */
+ /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */
+ /* */
+#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
+
+
+ /*************************************************************************/
+ /* */
+ /* Postscript Names to Unicode Values support */
+ /* */
+ /* By default, FreeType 2 is built with the `PSNames' module compiled */
+ /* in. Among other things, the module is used to convert a glyph name */
+ /* into a Unicode value. This is especially useful in order to */
+ /* synthetize on the fly a Unicode charmap from the CFF/Type 1 driver */
+ /* through a big table named the `Adobe Glyph List' (AGL). */
+ /* */
+ /* Undefine this macro if you do not want the Adobe Glyph List */
+ /* compiled in your `PSNames' module. The Type 1 driver will not be */
+ /* able to synthetize a Unicode charmap out of the glyphs found in the */
+ /* fonts. */
+ /* */
+#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
+
+
+ /*************************************************************************/
+ /* */
+ /* Allow the use of FT_Incremental_Interface to load typefaces that */
+ /* contain no glyph data, but supply it via a callback function. */
+ /* This allows FreeType to be used with the PostScript language, using */
+ /* the GhostScript interpreter. */
+ /* */
+/* #define FT_CONFIG_OPTION_INCREMENTAL */
+
+
+ /*************************************************************************/
+ /* */
+ /* The size in bytes of the render pool used by the scan-line converter */
+ /* to do all of its work. */
+ /* */
+ /* This must be greater than 4kByte. */
+ /* */
+#define FT_RENDER_POOL_SIZE 16384L
+
+
+ /*************************************************************************/
+ /* */
+ /* FT_MAX_MODULES */
+ /* */
+ /* The maximum number of modules that can be registered in a single */
+ /* FreeType library object. 32 is the default. */
+ /* */
+#define FT_MAX_MODULES 32
+
+
+ /*************************************************************************/
+ /* */
+ /* Debug level */
+ /* */
+ /* FreeType can be compiled in debug or trace mode. In debug mode, */
+ /* errors are reported through the `ftdebug' component. In trace */
+ /* mode, additional messages are sent to the standard output during */
+ /* execution. */
+ /* */
+ /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */
+ /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */
+ /* */
+ /* Don't define any of these macros to compile in `release' mode! */
+ /* */
+#define FT_DEBUG_LEVEL_ERROR
+#define FT_DEBUG_LEVEL_TRACE
+
+
+ /*************************************************************************/
+ /* */
+ /* Memory Debugging */
+ /* */
+ /* FreeType now comes with an integrated memory debugger that is */
+ /* capable of detecting simple errors like memory leaks or double */
+ /* deletes. To compile it within your build of the library, you */
+ /* should define FT_DEBUG_MEMORY here. */
+ /* */
+ /* Note that the memory debugger is only activated at runtime when */
+ /* when the _environment_ variable "FT_DEBUG_MEMORY" is also defined! */
+ /* */
+#define FT_DEBUG_MEMORY
+
+
+
+ /*************************************************************************/
+ /* */
+ /* Module errors */
+ /* */
+ /* If this macro is set (which is _not_ the default), the higher byte */
+ /* of an error code gives the module in which the error has occurred, */
+ /* while the lower byte is the real error code. */
+ /* */
+ /* Setting this macro makes sense for debugging purposes only, since */
+ /* it would break source compatibility of certain programs that use */
+ /* FreeType 2. */
+ /* */
+ /* More details can be found in the files ftmoderr.h and fterrors.h. */
+ /* */
+#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
+
+
+
+ /*************************************************************************/
+ /*************************************************************************/
+ /**** ****/
+ /**** S F N T D R I V E R C O N F I G U R A T I O N ****/
+ /**** ****/
+ /*************************************************************************/
+ /*************************************************************************/
+
+
+ /*************************************************************************/
+ /* */
+ /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */
+ /* embedded bitmaps in all formats using the SFNT module (namely */
+ /* TrueType & OpenType). */
+ /* */
+#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS
+
+
+ /*************************************************************************/
+ /* */
+ /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */
+ /* load and enumerate the glyph Postscript names in a TrueType or */
+ /* OpenType file. */
+ /* */
+ /* Note that when you do not compile the `PSNames' module by undefining */
+ /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */
+ /* contain additional code used to read the PS Names table from a font. */
+ /* */
+ /* (By default, the module uses `PSNames' to extract glyph names.) */
+ /* */
+#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES
+
+
+ /*************************************************************************/
+ /* */
+ /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */
+ /* access the internal name table in a SFNT-based format like TrueType */
+ /* or OpenType. The name table contains various strings used to */
+ /* describe the font, like family name, copyright, version, etc. It */
+ /* does not contain any glyph name though. */
+ /* */
+ /* Accessing SFNT names is done through the functions declared in */
+ /* `freetype/ftnames.h'. */
+ /* */
+#define TT_CONFIG_OPTION_SFNT_NAMES
+
+
+ /*************************************************************************/
+ /* */
+ /* TrueType CMap support */
+ /* */
+ /* Here you can fine-tune which TrueType CMap table format shall be */
+ /* supported. */
+#define TT_CONFIG_CMAP_FORMAT_0
+#define TT_CONFIG_CMAP_FORMAT_2
+#define TT_CONFIG_CMAP_FORMAT_4
+#define TT_CONFIG_CMAP_FORMAT_6
+#define TT_CONFIG_CMAP_FORMAT_8
+#define TT_CONFIG_CMAP_FORMAT_10
+#define TT_CONFIG_CMAP_FORMAT_12
+
+
+ /*************************************************************************/
+ /*************************************************************************/
+ /**** ****/
+ /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/
+ /**** ****/
+ /*************************************************************************/
+ /*************************************************************************/
+
+ /*************************************************************************/
+ /* */
+ /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */
+ /* a bytecode interpreter in the TrueType driver. Note that there are */
+ /* important patent issues related to the use of the interpreter. */
+ /* */
+ /* By undefining this, you will only compile the code necessary to load */
+ /* TrueType glyphs without hinting. */
+ /* */
+ /* do not #undef this macro here, since the build system might */
+ /* define for certain configurations */
+ /* */
+#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
+
+
+ /*************************************************************************/
+ /* */
+ /* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */
+ /* bytecode interpreter with a huge switch statement, rather than a call */
+ /* table. This results in smaller and faster code for a number of */
+ /* architectures. */
+ /* */
+ /* Note however that on some compiler/processor combinations, undefining */
+ /* this macro will generate faster, though larger, code. */
+ /* */
+#define TT_CONFIG_OPTION_INTERPRETER_SWITCH
+
+
+ /*************************************************************************/
+ /* */
+ /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */
+ /* TrueType glyph loader to use Apple's definition of how to handle */
+ /* component offsets in composite glyphs. */
+ /* */
+ /* Apple and MS disagree on the default behavior of component offsets */
+ /* in composites. Apple says that they should be scaled by the scale */
+ /* factors in the transformation matrix (roughly, it's more complex) */
+ /* while MS says they should not. OpenType defines two bits in the */
+ /* composite flags array which can be used to disambiguate, but old */
+ /* fonts will not have them. */
+ /* */
+ /* http://partners.adobe.com/asn/developer/opentype/glyf.html */
+ /* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */
+ /* */
+#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED
+
+
+ /*************************************************************************/
+ /*************************************************************************/
+ /**** ****/
+ /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/
+ /**** ****/
+ /*************************************************************************/
+ /*************************************************************************/
+
+
+ /*************************************************************************/
+ /* */
+ /* T1_MAX_DICT_DEPTH is the maximal depth of nest dictionaries and */
+ /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */
+ /* required. */
+ /* */
+#define T1_MAX_DICT_DEPTH 5
+
+
+ /*************************************************************************/
+ /* */
+ /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */
+ /* calls during glyph loading. */
+ /* */
+#define T1_MAX_SUBRS_CALLS 16
+
+
+ /*************************************************************************/
+ /* */
+ /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */
+ /* minimum of 16 is required. */
+ /* */
+ /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */
+ /* */
+#define T1_MAX_CHARSTRINGS_OPERANDS 256
+
+
+ /*************************************************************************/
+ /* */
+ /* Define this configuration macro if you want to prevent the */
+ /* compilation of `t1afm', which is in charge of reading Type 1 AFM */
+ /* files into an existing face. Note that if set, the T1 driver will be */
+ /* unable to produce kerning distances. */
+ /* */
+#undef T1_CONFIG_OPTION_NO_AFM
+
+
+ /*************************************************************************/
+ /* */
+ /* Define this configuration macro if you want to prevent the */
+ /* compilation of the Multiple Masters font support in the Type 1 */
+ /* driver. */
+ /* */
+#undef T1_CONFIG_OPTION_NO_MM_SUPPORT
+
+ /* */
+
+/*
+ * the FT_CONFIG_OPTION_CHESTER_XXXX macros are used to toggle some recent
+ * improvements to the auto-hinter contributed by David Chester. They will
+ * most likely disappear completely in the next release. For now, you should
+ * always keep them defined
+ *
+ */
+#define FT_CONFIG_OPTION_CHESTER_HINTS
+
+#ifdef FT_CONFIG_OPTION_CHESTER_HINTS
+
+# define FT_CONFIG_CHESTER_SMALL_F
+# define FT_CONFIG_CHESTER_ASCENDER
+# define FT_CONFIG_CHESTER_SERIF
+# define FT_CONFIG_CHESTER_STEM
+# define FT_CONFIG_CHESTER_BLUE_SCALE
+
+#endif /* FT_CONFIG_OPTION_CHESTER_HINTS */
+
+FT_END_HEADER
+
+
+#endif /* __FTOPTION_H__ */
+
+
+/* END */
Index: xc/extras/freetype2/docs/BUGS
diff -u xc/extras/freetype2/docs/BUGS:1.1.1.3 xc/extras/freetype2/docs/BUGS:removed
--- xc/extras/freetype2/docs/BUGS:1.1.1.3 Thu Feb 14 19:33:22 2002
+++ xc/extras/freetype2/docs/BUGS Sat Feb 28 21:40:13 2004
@@ -1,275 +0,0 @@
-List of known FreeType 2 Bugs
------------------------------
-
-"Identifier" is a string to uniquely identify the bug. A more detailed
-description of the bug is found below the table of opened bugs.
-
-"Date" is the date when the bug was first reported or entered in this
-document. Dates are in _European_ format, i.e day/month/year.
-
-"Opened By" is the name of the person who first spotted the bug. Note that
-we can use abbreviations here, like:
-
- "David" for David Turner
- "Werner" for Werner Lemberg
- etc.
-
-"Reproduceable" indicates whether the bug could be reproduced by the
-development team or not (it can be specific to a given platform), whether it
-always happens, or only sporadically, etc.
-
-
-
-I. Open bugs
-============
-
-
-Identifier Date Opened by Reproduceable
-------------------------------------------------------------------------------
-NO-CID-CMAPS 13-09-2001 David always
-BAD-TT-RENDERING 12-09-2001 Paul Pedriana ?
-BAD-THIN-LINES 13-09-2001 David ?
-NOT-WINDOWS-METRICS 07-10-2001 David always
-ADVANCED-COMPOSITES 25-10-2001 George Williams always
-
---------------------END-OF-OPENED-BUGS-TABLE----------------------------------
-
-
-
-II. Closed bugs
-===============
-
-
-Identifier Date Closed by Closure date
-------------------------------------------------------------------------------
-BAD-TTNAMEID.H 12-09-2001 Antoine N/A
-BAD-T1-CHARMAP 15-06-2001 David 2.0.5
-BAD-UNIXXXX-NAMES 30-07-2001 David 2.0.5
-GLYPH_TO_BITMAP-BUG 05-12-2001 David 05-12-2001
-AUTOHINT-NO-SBITS 13-09-2001 David 2.0.6
-TT-GLYPH-CRASH 01-01-2002 David 2.0.6
-T1-FONT-CRASH 01-01-2002 David 2.0.6
-BAD-ADVANCES 30-11-2001 David 2.0.6
-GLYPH-TO-BITMAP-BUG 15-12-2001 David 2.0.6
---------------------END-OF-CLOSED-BUGS-TABLE----------------------------------
-
-
-
-III. Bug descriptions
-=====================
-
-
---- START OF OPEN BUGS ---
-
-
-NO-CID-CMAPS
-
- Not exactly a bug, but the CFF font driver doesn't build a Unicode charmap
- from the contents of font files, which prevents efficiently using fonts in
- this format.
-
-
-
-BAD-TT-RENDERING
-
- According to Paul Pedriana , there is a rather
- important difference between the rendering of TrueType-hinted glyphs of
- current FT2 and old betas.
-
- Tests and comparisons show a _major_ discrepancy of monochrome truetype
- bytecode-hinted glyphs! Something seems to be really broken here!
-
- Some of this has been fixed in 2.0.6; there was a bug in the TrueType
- loader that prevented it from loading composites correctly. However,
- there are still _subtle_ differences between FT1 and FT2 when it comes to
- monochrome TrueType-hinted glyphs (the major differences are gone though).
-
-
-
-BAD-THIN-LINES
-
- It seems that the anti-aliased renderer in FreeType has problems rendering
- extremely thin straight lines correctly, at least when using the
- FT_Outline_Render() function.
-
-
-
-NOT-WINDOWS-METRICS
-
- FreeType doesn't always return the same metrics as Windows for ascender,
- descender, and text height, depending on character pixel sizes. A lot of
- testing on Windows is needed to debug this properly. It might be due to a
- rounding bug when computing the "x_scale" and "y_scale" values.
-
-
-
-ADVANCED-COMPOSITES
-
- Provided by George Williams :
-
- I notice that truetype/ttgload.c only supports Apple's definition of
- offsets for composite glyphs. Apple and Microsoft behave differently if
- there is a scale factor. OpenType defines some bits to disambiguate.
-
- (A problem in both 2.0.4 and 2.0.5.)
-
- Apple says (http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html) that if
- flags&ARGS_ARE_XY is set then the offsets should be scaled by the scale
- factors (as you have done), but they also say something very cryptic
- about what happens when the component is rotated at 45° (which you do
- not support) -- See the "Important" note at the bottom.
-
- The old truetype spec from Microsoft did not mention this. The OpenType
- spec (http://www.microsoft.com/typography/otspec/glyf.htm,
- http://partners.adobe.com/asn/developer/opentype/glyf.html) defines two
- new bits to disambiguate:
-
- SCALED_COMPONENT_OFFSET 11
- Composite designed to have the component offset scaled (designed for
- Apple rasterizer)
-
- UNSCALED_COMPONENT_OFFSET 12
- Composite designed not to have the component offset scaled (designed
- for the Microsoft TrueType rasterizer)
-
- Perhaps you could add a load_flag to allow the user to define the
- default setting?
-
- David says:
-
- Wow, I was not even aware of this, it will probably take a little time
- to implement since I don't have any font that implement these
- "features", and also because I believe that we're running out of bits
- for "load_flag", some other way to set preferences is probably needed.
-
-
-
---- END OF OPEN BUGS ---
-
-
-
-BAD-TTNAMEID.H
-
- The file "ttnameid.h" contains various constant macro definitions
- corresponding to important values defined by the TrueType specification.
-
- Joe Man reports that:
-
- According to the information from TrueType v1.66:
-
- Platform ID = 3 (Microsoft)
- the Encoding ID of GB2312 = 4
- the Encoding ID of big5 = 3
-
- However, I have found that in ttnameid.h:
-
- TT_MS_ID_GB2312 = 3
- TT_MS_ID_BIG_5 = 4
-
- Which one is correct?
-
- Antoine replied that this was a bug in the TT 1.66 specification, and that
- FreeType followed the most recent TrueType/OpenType specification here.
-
-
-
-AUTOHINT-SBITS
-
- When trying to load a glyph, with the auto-hinter activated (i.e., when
- using FT_LOAD_FORCE_AUTOHINT, or when the font driver doesn't provide its
- own hinter), embedded bitmaps are _never_ loaded, unlike the default
- behaviour described by the API specification.
-
- This seems to be a bug in FT_Load_Glyph(), but there is no way to solve it
- efficiently without making a few important internal changes to the
- library's design (more importantly, to the font driver interface).
-
- This has been corrected with a hack in FT_Load_Glyph(). More important
- internal changes should help get rid of it with a clean solution in a
- further release like FreeType 2.1.
-
-
-
-BAD-T1-CHARMAP
-
- Type1 driver doesn't read "cacute" and "lslash" characters from iso8859-2
- charset. Those characters are mapped as MAC-one in glnames.py, so they
- cannot be shown in Adobe Type1 fonts.
-
- (This was due to a bug in the "glnames.py" script used to generate the
- table of glyph names in 'src/psaux/pstables.h'.)
-
-
-
-BAD-UNIXXXX-NAMES
-
- Glyph names like uniXXXX are not recognized as they should be. It seems
- that code in psmodule.c for uniXXXX glyph names was never tested. The
- patch is very simple.
-
- (A simple bug that was left un-noticed due to the fact that I don't have
- any Postscript font that use this convention, unfortunately.)
-
-
-
-GLYPH_TO_BITMAP-BUG
-
- Calling FT_Glyph_To_Bitmap() sometimes modifies the original glyph
- outline, creating weird alignment artefacts.
-
- This subtle bug was really in the file `src/smooth/ftsmooth.c'.
- Basically, the outline was shifted before rendering it into a new bitmap
- buffer. However, it wasn't properly un-shifted after that operation.
-
- This was only noticeable with certain glyphs or certain fonts; it crept in
- a long time ago.
-
- The same bug has been fixed in src/raster/ftrender1.c also.
-
-
-
-TT-GLYPH-CRASH
-
- The library crashed when trying to load certain glyphs from an
- automatically generated TrueType file (tt1095m_.ttf submitted by Scott
- Long).
-
- It turned out that the font contained invalid glyph data (i.e. was
- broken), but the TrueType glyph loader in FreeType wasn't paranoid enough,
- which resulted in nasty memory overwrites all over the place.
-
-
-
-T1-FONT-CRASH
-
- The library crashed when trying to load the "Stalingrad Regular" face from
- the "sadn.pfb" font file provided by Anthony Fok (and the Gnome-Print team
- I believe).
-
- This was due to the fact that the font missed a full font name entry,
- though boasted a family name and postscript name. The Type 1 face loader
- didn't check for these pathetic cases and seg-faulted.
-
-
-
-BAD-ADVANCES
-
- All scalable font drivers returned un-fitted glyph advances when
- FT_LOAD_DEFAULT was used, which was incorrect. This problem was pretty
- old but hadn't been spotted because all test programs actually explicitly
- or implicitly (i.e. through the cache) rounded the advance widths of
- glyphs.
-
- This resulted in poor rendering of a number of client applications however
- (it is strange to see they took so long to notify the FreeType team).
-
-
-
-GLYPH-TO-BITMAP-BUG
-
- FT_Glyph_To_Bitmap() did incorrectly modify the source glyph in certain
- cases, which resulted in random behaviour and bad text rendering. This
- was spotted to bugs in both the monochrome and smooth rasterizer.
-
-
-=== end of file ===
Index: xc/extras/freetype2/docs/BUILD
diff -u xc/extras/freetype2/docs/BUILD:1.1.1.2 xc/extras/freetype2/docs/BUILD:removed
--- xc/extras/freetype2/docs/BUILD:1.1.1.2 Tue May 15 23:45:44 2001
+++ xc/extras/freetype2/docs/BUILD Sat Feb 28 21:40:13 2004
@@ -1,276 +0,0 @@
-
- FreeType 2 compilation how-to
- =============================
-
-
-Introduction
-------------
-
-Welcome to the FreeType 2 library. You'll find in this document
-instructions on how to compile the library on your favorite platform.
-
-
-I. QUICK COMMAND-LINE GUIDE
----------------------------
-
- THE FOLLOWING WILL ONLY WORK WITH GNU MAKE, IT WILL FAIL MISERABLY
- WITH OTHER MAKE TOOLS, FOR EXAMPLE "BSD MAKE".
-
- Install GNU Make (version 3.78.1 or newer), then try the following
- on Unix or any system with gcc:
-
- make // this will setup the build
- make // this will build the library
-
- On Win32 + Visual C++:
-
- make setup visualc // setup the build for VisualC++ on Win32
- make // build the library
-
- Then, go to the `demos' directory and type
-
- make
-
-
- Note that on Unix, the first `make' invocation will run a configure
- script (which is located in `freetype2/builds/unix/'. You can also
- pass parameters to this script with the CFG variable, as in:
-
- make CFG="--prefix=/usr/local"
- make
-
-
- If this doesn't work, read the following.
-
-
-II. COMMAND-LINE COMPILATION
-----------------------------
-
- Note that if you do not want to compile FreeType 2 from a command
- line shell, please skip to section III below (DETAILED COMPILATION).
-
- 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
-
- 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
- *fail*.
-
- 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
- typing something like:
-
- make -v
-
- to display its version number.
-
- VERSION 3.78.1 OR NEWER IS NEEDED!
-
- 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
- example, on Win32:
-
-
- ==============================================================
- FreeType build system -- automatic system detection
-
- The following settings are used:
-
- 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.
-
- 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
- the build system, the detected platform will be `ansi'.
-
- c. 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
- with
-
- make setup
-
- For example:
-
- to use Visual C++ on Win32, type: "make setup visualc"
- to use LCC-Win32 on Win32, type: "make setup lcc"
-
- The name to use is platform-dependent. The list of
- available compilers for your system is available in the file
- `builds//detect.mk' (note that we hope to make the list
- displayed at user demand in the final release).
-
- If you are satisfied by the new configuration summary, skip to
- step e.
-
- 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'.
-
- 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.
-
- 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
- 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.
-
- f. Build the demonstration programs
-
-
-III. DETAILED COMPILATION PROCEDURE
------------------------------------
-
- If you don't want to compile FreeType 2 from the command-line (for
- example if you use a graphical IDE on a Mac or Windows), you will
- need to understand how the FreeType files are organized.
-
- FreeType 2 has a very modular design, and it is made of several
- components. Each component must be compiled as a stand-alone object
- file, even if it is really made of several C source files. For
- example, the `base layer' component is made of the following C
- files:
-
- src/
- base/
- ftcalc.c - computations
- ftextend.c - extensions support
- ftlist.c - simple list management
- ftobjs.c - object management
- ftoutln.c - simple outline processing
- ftstream.c - stream input
-
- However, you can create a single object file by compiling the file
- `src/base/ftbase.c', which basically contains
-
- #include "ftcalc.c"
- #include "ftobjs.c"
- #include "ftstream.c"
- #include "ftlist.c"
- #include "ftoutln.c"
- #include "ftextend.c"
-
- Similarly, each component has a single `englobing' C file to compile
- it as a stand-alone object:
-
- src/autohint/autohint.c - the autohinting module
- src/base/ftbase.c - the base layer, high-level interface
- src/cache/ftcache.c - a glyph and image caching system
- (still experimental)
- src/cff/cff.c - the OpenType font driver
- src/cid/type1cid.c - the CID-keyed font driver
- src/psaux/psaux.c - the PS support module
- src/psnames/psnames.c - a support module to handle PS glyph
- names
- src/raster1/raster1.c - the monochrome raster module
- src/sfnt/sfnt.c - the `sfnt' module
- src/smooth/smooth.c - the anti-aliasing raster module
- src/truetype/truetype.c - the TrueType font driver
- src/type1/type1.c - the Type 1 font driver
-
- The last module of FreeType 2, `winfonts' (implementing support for
- Windows FNT format), is a single file.
-
- To compile one component, do the following:
-
- - Add the top-level `include' directory to your compilation
- include path
-
- - Add the `src/' directory to your compilation include
- path, or simply `cd' to the component's source directory.
-
- - Compile the component `source' file (see list below); you don't
- need to be in the component's directory if you added
- `src/' to your include path.
-
- For example, the following line can be used to compile the truetype
- driver on Unix:
-
- cd freetype2/
- cc -c -Iinclude -Isrc/truetype src/truetype/truetype.c
-
- Alternatively:
-
- cd freetype2/src/truetype
- cc -c -I../../include truetype.c
-
- Finally, FreeType 2 contains some other components:
-
- src/base/ftsystem.c - system-specific memory and i/o support
- src/base/ftinit.c - initialization layer
- src/base/ftdebug.c - debugging component (empty in release
- build)
- src/base/ftglyph.c - optional convenience functions
-
- All font drivers are optional. The `sfnt', `psaux', and `psnames'
- modules are mandatory for certain drivers. However, you may need to
- update the list of drivers that are statically linked to the
- library, which is located in the configuration file
- `include/freetype/config/ftmodule.h'.
-
-
-IV. Support for flat-directory compilation
-------------------------------------------
-
- 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:
-
- cp freetype2/src/base/*.[hc] .
- cp freetype2/src/raster1/*.[hc] .
- cp freetype2/src/smooth/*.[hc] .
- etc.
-
- 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.
-
- You don't need to define the FT_FLAT_COMPILATION macro (as this was
- required in previous releases of FreeType 2).
-
-End of file
Index: xc/extras/freetype2/docs/CHANGES
diff -u xc/extras/freetype2/docs/CHANGES:1.1.1.6 xc/extras/freetype2/docs/CHANGES:1.1.1.7
--- xc/extras/freetype2/docs/CHANGES:1.1.1.6 Thu Jun 20 04:16:05 2002
+++ xc/extras/freetype2/docs/CHANGES Wed May 28 22:01:43 2003
@@ -1,3 +1,266 @@
+LATEST CHANGES BETWEEN 2.1.4 and 2.1.3
+
+ I. IMPORTANT BUG FIXES
+
+ - updated to newest libtool version, fixes build problems on various
+ platforms.
+
+ - a fix in the Gzip stream reader, it couldn't read certain .gz files
+ properly due to a small typo. In certain cases, FreeType could also
+ loop endlessly when trying to load tiny gzipped files.
+
+ - the configure script now tries to use the system-wide zlib when
+ it finds one (instead of the copy found in src/gzip). And
+ "freetype-config" has been updated to return relevant flags in this
+ case when invoked with "--libs" (e.g. "-lzlib")
+
+ - certain fonts couldn't be loaded by 2.1.3 because they lacked a
+ Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously rejected
+ them.
+
+ - 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 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 cache sub-system now properly manages out-of-memory conditions,
+ instead of blindly reporting them to the caller. This means that it
+ will try to empty the cache before restarting its allocations to see
+ if that can help.
+
+ - the PFR driver didn't return the list of available embedded bitmaps
+ properly.
+
+ 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..
+
+ - 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 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
+ 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 !!
+
+ 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 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 installation documentation has been seriously revamped. Everything
+ is now in the "docs" directory.
+
+==============================================================================
+LATEST CHANGES BETWEEN 2.1.3 and 2.1.2
+
+ I. IMPORTANT BUG FIXES
+
+ - FT_Vector_Transform had been incorrectly modified in 2.1.2, resulting
+ in incorrect transformations being applied (for example, rotations
+ were processed in opposite angles).
+
+ - The format 8 and 12 TrueType charmap enumeration routines have been
+ fixed (FT_Get_Next_Char returned invalid values).
+
+ - The PFR font driver returned incorrect advance widths if the outline
+ and metrics resolution defined in the font file were different.
+
+ - FT_Glyph_To_Bitmap now returns successfully when called with an
+ FT_BitmapGlyph argument (it previously returned an error).
+
+ - A bug in the Type 1 loader that prevented valid font bounding boxes to
+ be loaded from multiple master fonts.
+
+ - The SFNT validation code has been rewritten. FreeType can now load
+ "broken" fonts that were usable on Windows, but not with previous
+ versions of the library.
+
+ - The computation of bearings in the BDF driver has been fixed.
+
+ - The Postscript hinter crashed when trying to hint certain glyphs (more
+ precisely, when trying to apply hints to an empty glyph outline).
+
+ - The TrueType glyph loader now supports composites in "Apple format"
+ (they differ slightly from Microsoft/OpenType ones in the way transform
+ 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
+
+ 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
+ with XFree86 with FreeType (and libXft/libXft2, by extension).
+
+ - The automatic and postscript hinters have both been updated. This
+ results in a relatively important increase of rendering quality since
+ many nasty defaults have been supressed. Please visit the web page:
+
+ http://www.freetype.org/hinting/smooth-hinting.html
+
+ for additional details on this topic.
+
+ - The "load_flags" parameter of FT_Load_Glyph is now an FT_Int32
+ (instead of just being an FT_Int). This breaks source and binary
+ compatibility for 16bit systems only, while retaining both of them for
+ 32 and 64 bit ones.
+
+ Some new flags have been added consequently:
+
+ FT_LOAD_NO_AUTOHINT :: Disable the use of the auto-hinter
+ (but not native format hinters).
+
+ FT_LOAD_TARGET_NORMAL :: Hint and render for normal anti-aliased
+ displays.
+
+ FT_LOAD_TARGET_MONO :: Hint and render for 1-bit displays.
+
+ FT_LOAD_TARGET_LCD :: Hint and render for horizontal RGB or BGR
+ sub-pixel displays (like LCD screens).
+ THIS IS STILL EXPERIMENTAL!
+
+ FT_LOAD_TARGET_LCD_V :: Same as FT_LOAD_TARGET_LCD, for vertical
+ sub-pixel displays (like rotated LCD
+ screens). THIS IS STILL EXPERIMENTAL!
+
+ FT_LOAD_MONOCHROME is still supported, but only affects rendering, not
+ the hinting.
+
+ Note that the 'ftview' demo program available in the 'ft2demos' package
+ has been updated to support LCD-optimized display on non-paletted
+ displays (under Win32 and X11)
+
+ - The PFR driver now supports embedded bitmaps (all formats supported),
+ and returns correct kerning metrics for all glyphs
+
+ - The TrueType charmap loader now supports certain "broken" fonts that
+ load under Windows without problems.
+
+ - The cache API has been slightly modified (it's still a beta!):
+
+ - The type FTC_ImageDesc has been removed; it is now replaced by
+ FTC_ImageTypeRec. Note that one of its fields is a `load_flag'
+ parameter for FT_Load_Glyph.
+
+ - The field "num_grays" of FT_SBitRec has been changed to "max_grays"
+ in order to fit within a single byte. Its maximum value is thus 255
+ (instead of 256 as previously).
+
+
+ III. MISCELLANEOUS
+
+ - Added support for the DESTDIR variable during "make install". This
+ simplifies packaging of FreeType.
+
+ - 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
+ "src/tools/docmaker/docmaker.py". Features:
+
+ - better cross-referenced output
+ - more polished output
+ - uses Python regular expressions (though it didn't speed the
+ program)
+ - much more modular structure, which allows for different "backends"
+ in order to generate HTML, XML, or whatever format.
+
+ One can regenerate the API reference by calling:
+
+ python src/tools/docmaker/docmaker.py \
+ --prefix=ft2 \
+ --title=FreeType-2.1.3 \
+ --output=
+ include/freetype/*.h \
+ include/freetype/config/*.h \
+ include/freetype/cache/*.h
+
+ - A new, experimental, support for incremental font loading (i.e.,
+ loading of fonts where the glyphs are not in the font file itself, but
+ provided by an external component, like a Postscript interpreter) has
+ been added by Graham Asher. This is still work in progress, however.
+
+ - A new, EXPERIMENTAL, path stroker has been added. It doesn't suffer
+ from severe rounding errors and treat bezier arcs directly. Still
+ work in progress (i.e. not part of the official API). See the file
+ for some of the details.
+
+ - The massive re-formatting of sources and internal re-design is still
+ under-way. Many internal functions, constants, and types have been
+ renamed.
+
+
+========================================================================
+
+LATEST CHANGES BETWEEN 2.1.2 and 2.1.1
+
+ I. IMPORTANT BUG FIXES
+
+ - Many font drivers didn't select a Unicode charmap by default when
+ a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS options
+ enabled), causing many applications to not be able to display text
+ correctly with the 2.1.x releases.
+
+ - The PFR driver had a bug in its composite loading code that produces
+ incorrectly placed accents with many fonts.
+
+ - The Type42 driver crashed sometimes due to a nasty bug.
+
+ - The Type 1 custom encoding charmap didn't handle the case where the
+ first glyph index wasn't 0.
+
+ - A serious typo in the TrueType composite loader produced incorrectly
+ placed glyphs in fonts like "Wingdings" and a few others.
+
+
+ II. MISCELLANEOUS
+
+ - The Win32 Visual C++ project file has been updated to include the
+ PFR driver as well.
+
+ - "freetype.m4" is now installed by default by "make install" on Unix
+ systems.
+
+ - The function FT_Get_PS_Font_Info now works with CID and Type42 fonts
+ as well.
+
+
+========================================================================
+
LATEST CHANGES BETWEEN 2.1.1 and 2.1.0
I. IMPORTANT BUG FIXES
@@ -36,7 +299,7 @@
- Three new font drivers in this release:
- * A BDF font driver, contributed by Franco Narda Zapelli, heavily
+ * A BDF font driver, contributed by Franco Zappa Nardelli, heavily
modified by Werner Lemberg. It also supports anti-aliased bitmaps
(using a slightly extended BDF format).
@@ -52,7 +315,7 @@
- The cache sub-system has been optimized in important ways. Cache hits
are now significantly faster. For example, using the CMap cache is
- about twice faster than calling FT_Get_Char_Index on most platforms.
+ about twice faster than calling FT_Get_Char_Index on most platforms.
Similarly, using an SBit cache is about five times faster than loading
the bitmaps from a bitmap file, and 300 to 500 times faster than
generating them from a scalable format.
@@ -1270,7 +1533,7 @@
Here's a layout of the new directory hierarchy:
- TOP
+ TOP_DIR
include/
freetype/
freetype.h
@@ -1298,7 +1561,7 @@
Compiling a module is now much easier, for example, the following
- should work when in the TOP directory on an ANSI build:
+ should work when in the TOP_DIR directory on an ANSI build:
gcc -c -I./include -I./src/base src/base/ftbase.c
gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c
Index: xc/extras/freetype2/docs/CUSTOMIZE
diff -u /dev/null xc/extras/freetype2/docs/CUSTOMIZE:1.1.1.1
--- /dev/null Sat Feb 28 21:40:13 2004
+++ xc/extras/freetype2/docs/CUSTOMIZE Wed May 28 22:01:43 2003
@@ -0,0 +1,117 @@
+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.
+
+
+I. Configuration macros:
+
+ 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.
+
+ 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..
+
+
+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.
+
+ 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
+
+
+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".
+
+ the current implementation uses standard C library calls to manage
+ memory and 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:
+
+ on Unix:
+ ./configure
+ export FTSYS_SRC=foo/my_ftsystem.c
+ make
+ make install
+
+ on Windows:
+ make setup
+ set FTSYS_SRC=foo/my_ftsystem.c
+ make
+
+
+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:
+
+ 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:
+
+ #include FT_CONFIG_OPTIONS_H
+ #include FT_CONFIG_MODULES_H
+
+ are compiled. Their default values being
+ and , you can do something like:
+
+ custom/
+ freetype/
+ config/
+ ftoption.h => custom options header
+ ftmodule.h => custom modules list
+
+ include/ => normal FreeType 2 include
+ freetype/
+ ...
+
+ 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:
+
+ #ifndef __FT2_BUILD_GENERIC_H__
+ #define __FT2_BUILD_GENERIC_H__
+
+ #define FT_CONFIG_OPTIONS_H
+ #define FT_CONFIG_MACROS_H
+
+ #include
+
+ #endif /* __FT2_BUILD_GENERIC_H__ */
+
+ place them in:
+
+ 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.
+
Index: xc/extras/freetype2/docs/DEBUG
diff -u /dev/null xc/extras/freetype2/docs/DEBUG:1.1.1.1
--- /dev/null Sat Feb 28 21:40:13 2004
+++ xc/extras/freetype2/docs/DEBUG Wed May 28 22:01:43 2003
@@ -0,0 +1,183 @@
+Debugging within the FreeType sources:
+======================================
+
+I. Configuration macros
+-----------------------
+
+There are several ways to enable debugging features in a FreeType 2
+builds. This is controlled through the definition of special macros
+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.
+
+ 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.
+
+ The trace macros are used to send debugging messages when an
+ appropriate "debug level" is configured at runtime through the
+ FT2_DEBUG environment variable (more on this later).
+
+ FT_DEBUG_MEMORY
+
+ If this macro is #defined, the FreeType engines 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
+ 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.
+
+
+II. Debugging macros
+--------------------
+
+Several macros can be used within the FreeType sources to help debugging
+its code:
+
+ 1. FT_ERROR(( ... ))
+
+ This macro is used to send debug messages that indicate relatively
+ serious errors (like broken font files), but will not stop the
+ execution of the running program. Its code is compiled only when
+ 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
+ parentheses, like in:
+
+ FT_ERROR(( "your %s is not %s\n", "foo", "bar" ));
+
+
+ 2. FT_ASSERT( condition )
+
+ This macro is used to check strong assertions at runtime. If its
+ condition isn't TRUE, the program will abort with a panic message.
+ Its code is compiled when either FT_DEBUG_LEVEL_ERROR or
+ FT_DEBUG_LEVEL_TRACE are defined. You don't need double-parentheses
+ here. For example:
+
+ FT_ASSERT( ptr != NULL );
+
+
+ 3. FT_TRACE( level, (message...) )
+
+ The FT_TRACE macro is used to send general-purpose debugging
+ messages during program execution. This macro uses an *implicit*
+ macro named FT_COMPONENT used to name the current FreeType component
+ being run.
+
+ The developer should always define FT_COMPONENT as appropriate, for
+ example as in:
+
+ #undef FT_COMPONENT
+ #define FT_COMPONENT trace_io
+
+ The value of the FT_COMPONENT macro is an enumeration named
+ trace_XXXX where XXXX is one of the component names defined in the
+ internal file .
+
+ Each such component is assigned a "debug level", ranging from 0 to 6
+ when a program linked with FreeType starts, through the use of the
+ FT2_DEBUG environment variable, described later.
+
+ When FT_TRACE is called, its level is compared to the one of the
+ corresponding component. Messages with trace levels *higher* than
+ the corresponding component level are filtered and never printed.
+
+ This means that trace messages with level 0 are always printed,
+ those with level 2 are only printed when the component level is *at
+ least* 2.
+
+ The second parameter to FT_TRACE must contain parentheses and
+ correspond to a print-like call, as in:
+
+ FT_TRACE( 2, ( "your %s is not %s\n", "foo", "bar" ) )
+
+ The shortcut macros FT_TRACE0, FT_TRACE1, FT_TRACE2_, ... FT_TRACE6
+ can be used with constant level indices, and are much cleaner to
+ use, as in
+
+ FT_TRACE2(( "your %s is not %s\n", "foo", "bar" ));
+
+
+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
+ FT_DEBUG_LEVEL_TRACE defined. It contains a list of component level
+ definitions, following this format:
+
+ 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
+ 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)
+
+ 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.
+
+ FT2_DEBUG_MEMORY
+
+ This environment variable, when defined, tells FreeType to use a
+ debugging memory manager that will track leaked memory blocks as
+ well as other common errors like double frees. It is also capable
+ of reporting _where_ the leaked 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.
+
+ 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.
+
+ If it is undefined, or if its value is not strictly positive, then no
+ allocation bounsd are checked at runtime.
+
+End of file
Index: xc/extras/freetype2/docs/INSTALL
diff -u xc/extras/freetype2/docs/INSTALL:1.1.1.2 xc/extras/freetype2/docs/INSTALL:1.1.1.3
--- xc/extras/freetype2/docs/INSTALL:1.1.1.2 Thu Jun 20 04:16:06 2002
+++ xc/extras/freetype2/docs/INSTALL Wed May 28 22:01:44 2003
@@ -1,185 +1,65 @@
-In order to build the library, read the `BUILD' document in the `docs'
-directory. This is only a quick starter.
+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:
-I. Unix systems
----------------
+I. Normal installation and upgrades:
- If you have GNU Make installed, simply type
+ 1. Native TrueType Hinting:
+
+ Native TrueType hinting is disabled by default[1]. If you really need it,
+ read the file "TRUETYPE" for information.
- ./configure
- make
- make install
+
+ 2. Unix Systems (as well as Cygwin or MSys on Windows):
- on the command line to configure, build and install FreeType on your
- system. Note that the default installation path is "/usr/local".
+ 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 !!)
- Please read the file README.UNX, it contains _critical_ information
- regarding the installation of FreeType on many Unix systems.
+ 3. On VMS with the "mms" build tool:
+
+ see INSTALL.VMS for installation instructions on this platform
+ 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,
+ including Mingw, Visual C++, Borland C++, and more.
-II. From the command line
--------------------------
+ instructions are provided in the file "INSTALL.GNU"
- 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.
+ 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.
+
+ to find them, have a look at the content of the "builds/"
+ directory, where stands for your OS or environment.
- For more information, please see:
- http://www.freetype.org/jam/index.html
+ 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.
- The second one is to use "GNU Make" (and NO OTHER MAKE TOOL).
+II. Custom builds of the library:
- 1. Building FT2 with "Jam"
- --------------------------
+ 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"
- 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.
+[1] More details on: http://www.freetype.org/patents.html
- 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
+End of file
- 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'. 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=~/freetype2 \
- make -f$TOP/Makefile setup ansi
- OBJ_DIR=~/freetype2.compiled TOP=~/freetype2 \
- make -f$TOP/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.
-
-
-III. In your own environment (IDE)
-----------------------------------
-
- 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,
- `freetype2/src/truetype/' contains the TrueType font driver.
-
- DO NOT COMPILE ALL C FILES! Rather, compile the following ones:
-
- -- 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/ftmac.c -- only on the Macintosh
-
- -- other components are 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/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
-
- Note:
-
- `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'
-
- etc.
-
-For more information, please consult "docs/BUILD".
-
---- end of INSTALL --
+
\ No newline at end of file
Index: xc/extras/freetype2/docs/INSTALL.ANY
diff -u /dev/null xc/extras/freetype2/docs/INSTALL.ANY:1.1.1.1
--- /dev/null Sat Feb 28 21:40:13 2004
+++ xc/extras/freetype2/docs/INSTALL.ANY Wed May 28 22:01:43 2003
@@ -0,0 +1,96 @@
+Instructions on how to build FreeType with your own build tool:
+
+ see the file "CUSTOMIZE" to learn how to customize FreeType to
+ specific environments.
+
+ follow these simple steps:
+
+I. Normal way:
+--------------
+
+ * DISABLE PRE-COMPILED HEADERS ! This is very important for Visual
+ C++, because FreeType uses lines like:
+
+ #include FT_FREETYPE_H
+
+ 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,
+ 'freetype2/src/truetype/' contains the TrueType font driver.
+
+ * DO NOT COMPILE ALL C FILES! Rather, compile the following ones:
+
+ -- base components (required)
+
+ src/base/ftsystem.c
+ src/base/ftinit.c
+ src/base/ftdebug.c
+ src/base/ftbase.c
+ src/base/ftglyph.c
+ src/base/ftbbox.c
+ src/base/ftmm.c
+ src/base/ftpfr.c -- optional, see
+ src/base/ftbdf.c -- optional, see
+ src/base/ftwinfnt.c -- optional, see
+
+ src/base/ftmac.c -- only on the Macintosh
+
+ -- other components are 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
+
+ Note:
+
+ `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.
+
+
+II. Support for flat-directory compilation
+------------------------------------------
+
+ 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:
+
+ cp freetype2/src/base/*.[hc] .
+ cp freetype2/src/raster1/*.[hc] .
+ cp freetype2/src/smooth/*.[hc] .
+ etc.
+
+ 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.
+
+ You don't need to define the FT_FLAT_COMPILATION macro (as this was
+ required in previous releases of FreeType 2).
+
Index: xc/extras/freetype2/docs/INSTALL.GNU
diff -u /dev/null xc/extras/freetype2/docs/INSTALL.GNU:1.1.1.1
--- /dev/null Sat Feb 28 21:40:13 2004
+++ xc/extras/freetype2/docs/INSTALL.GNU Wed May 28 22:01:44 2003
@@ -0,0 +1,128 @@
+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.
+
+
+ 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
+
+ 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
+ *fail*.
+
+ 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
+ typing something like:
+
+ make -v
+
+ to display its version number.
+
+ VERSION 3.78.1 OR NEWER IS NEEDED!
+
+
+
+ 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
+ example, on Win32:
+
+
+ ==============================================================
+ FreeType build system -- automatic system detection
+
+ The following settings are used:
+
+ 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.
+
+ 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
+ the build system, the detected platform will be 'ansi'.
+
+
+ c. 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
+ with
+
+ make setup
+
+ For example:
+
+ to use Visual C++ on Win32, type: "make setup visualc"
+ to use Borland C++ on Win32, type "make setup bcc32"
+ to use Watcom C++ on Win32, type "make setup watcom"
+ to use Intel C++ on Win32, type "make setup intelc"
+ to use LCC-Win32 on Win32, type: "make setup lcc"
+ to use Watcom C++ on OS/2, type "make setup watcom"
+ to use VisualAge C++ on OS/2, type "make setup visualage"
+
+ The name to use is platform-dependent. The list of
+ available compilers for your system is available in the file
+ `builds//detect.mk'
+
+ If you are satisfied by the new configuration summary, skip to
+ step e.
+
+ 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'.
+
+ 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.
+
+ 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
+ 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.
+
+
+
+ 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
+ "INSTALL.ANY" to create your own Makefiles.
Index: xc/extras/freetype2/docs/INSTALL.UNX
diff -u /dev/null xc/extras/freetype2/docs/INSTALL.UNX:1.1.1.1
--- /dev/null Sat Feb 28 21:40:13 2004
+++ xc/extras/freetype2/docs/INSTALL.UNX Wed May 28 22:01:44 2003
@@ -0,0 +1,181 @@
+This document contains instructions on how to build the FreeType library
+on Unix systems. This also works for emulations like Cygwin or MSys on
+Win32:
+
+
+ I. 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).
+
+ 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.
+
+
+
+ IV. Build and install the library
+ ---------------------------------
+
+ The following should work on all Unix systems where the 'make'
+ command invokes GNU Make:
+
+ ./configure --prefix=
+ make
+ make install (as root)
+
+ where "" must be replaced by the prefix returned by
+ the "freetype-config" command.
+
+ When using a different command to invoke GNU Make, use the GNUMAKE
+ variable. For example, if `gmake' is the command to use on your
+ system, do something like:
+
+ GNUMAKE=gmake ./configure --prefix=
+ gmake
+ gmake install (as root)
+
+ If this still doesn't work, something's rotten on your system(
+ (e.g. you're using a very old version of GNU Make)
+
+
+
+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 --
Index: xc/extras/freetype2/docs/INSTALL.VMS
diff -u /dev/null xc/extras/freetype2/docs/INSTALL.VMS:1.1.1.1
--- /dev/null Sat Feb 28 21:40:13 2004
+++ xc/extras/freetype2/docs/INSTALL.VMS Wed May 28 22:01:44 2003
@@ -0,0 +1,35 @@
+How to build the freetype2 library on VMS
+-----------------------------------------
+
+Just type one of the following depending on the type of external entries you
+want:
+
+ mms
+
+or
+
+ mms/macro=("COMP_FLAGS=/name=(as_is,short)")
+
+The library is avalaible in the directory
+
+ [.LIB]
+
+To compile applications using freetype2 you'll need 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
+$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.
+
+
+ Any problems can be reported to
+
+ joukj@hrem.stm.tudelft.nl
+
+
+ Jouk Jansen
Index: xc/extras/freetype2/docs/TODO
diff -u xc/extras/freetype2/docs/TODO:1.1.1.1 xc/extras/freetype2/docs/TODO:1.1.1.2
--- xc/extras/freetype2/docs/TODO:1.1.1.1 Mon Jan 14 11:52:03 2002
+++ xc/extras/freetype2/docs/TODO Wed May 28 22:01:44 2003
@@ -4,6 +4,10 @@
Here is a list of items that need to be addressed in FreeType 2; they are
not exactly bugs, but should be considered though:
-* Add synthesized Unicode charmap processing to the CFF driver.
-
* Implement stem3/counter hints properly in the Postscript hinter.
+
+* FInalize the cache sub-system. If has been in beta for 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..
Index: xc/extras/freetype2/docs/TRUETYPE
diff -u /dev/null xc/extras/freetype2/docs/TRUETYPE:1.1.1.1
--- /dev/null Sat Feb 28 21:40:13 2004
+++ xc/extras/freetype2/docs/TRUETYPE Wed May 28 22:01:44 2003
@@ -0,0 +1,23 @@
+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
+ 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:
+
+ - open the file "include/freetype/config/ftoption.h"
+
+ - locate a line that says:
+
+ #undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
+
+ - change it to:
+
+ #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
+
+ of course, this must be done _before_ compiling the library
Index: xc/extras/freetype2/docs/UPGRADE.UNX
diff -u /dev/null xc/extras/freetype2/docs/UPGRADE.UNX:1.1.1.1
--- /dev/null Sat Feb 28 21:40:13 2004
+++ xc/extras/freetype2/docs/UPGRADE.UNX Wed May 28 22:01:44 2003
@@ -0,0 +1,124 @@
+
+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
+ perform a few special steps to ensure that everything goes well.
+
+
+ I. 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.
+
+
+ II. 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
+ 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).
+
+
+
+ III. 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).
+
+ 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.
+
+
+
+ IV. Build and install the library
+ ---------------------------------
+
+ The following should work on all Unix systems where the `make'
+ command invokes GNU Make:
+
+ ./configure --prefix=
+ make
+ make install (as root)
+
+ where "" must be replaced by the prefix returned by
+ the "freetype-config" command.
+
+ When using a different command to invoke GNU Make, use the GNUMAKE
+ variable. For example, if `gmake' is the command to use on your
+ system, do something like:
+
+ GNUMAKE=gmake ./configure --prefix=
+ gmake
+ gmake install (as root)
+
+ If this still doesn't work, read the detailed compilation
+ procedure available in the file "docs/BUILD" for troubleshooting.
+
+
+ V. Take care of XFree86 version 4
+ ---------------------------------
+
+ 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
+ /usr/lib/libfreetype.6.1.0.so
+
+ and
+
+ /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".
+
+ 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.
+
+ 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).
+
+ - Change the link in /usr/X11R6/lib/libfreetype.so to point to
+
+ /usr/lib/libfreetype.so,
+
+ and get rid of
+
+ /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
+ here doesn't help.
Index: xc/extras/freetype2/docs/VERSION.DLL
diff -u /dev/null xc/extras/freetype2/docs/VERSION.DLL:1.1.1.1
--- /dev/null Sat Feb 28 21:40:13 2004
+++ xc/extras/freetype2/docs/VERSION.DLL Wed May 28 22:01:44 2003
@@ -0,0 +1,90 @@
+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
+FreeType on Unix.
+
+
+I. Version & Release numbers:
+
+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 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 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 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
+
+
+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 !!
+
+
+II. Table:
+
+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:
+
+ 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
+
+
+
+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
+
Index: xc/extras/freetype2/docs/license.txt
diff -u xc/extras/freetype2/docs/license.txt:1.1.1.2 xc/extras/freetype2/docs/license.txt:1.1.1.3
--- xc/extras/freetype2/docs/license.txt:1.1.1.2 Mon Jan 14 11:52:02 2002
+++ xc/extras/freetype2/docs/license.txt Wed May 28 22:01:44 2003
@@ -1,11 +1,28 @@
-FreeType comes with two licenses from which you can choose the one which
-fits your needs best:
+ 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 License, in file `docs/FTL.txt'.
+ 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:
- . The GNU General Public License, in file `docs/GPL.txt'.
-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).
+
Index: xc/extras/freetype2/docs/readme.vms
diff -u xc/extras/freetype2/docs/readme.vms:1.1.1.1 xc/extras/freetype2/docs/readme.vms:removed
--- xc/extras/freetype2/docs/readme.vms:1.1.1.1 Sun Sep 9 22:55:42 2001
+++ xc/extras/freetype2/docs/readme.vms Sat Feb 28 21:40:13 2004
@@ -1,35 +0,0 @@
-How to build the freetype2 library on VMS
------------------------------------------
-
-Just type one of the following depending on the type of external entries you
-want:
-
- mms
-
-or
-
- mms/macro=("COMP_FLAGS=/name=(as_is,short)")
-
-The library is avalaible in the directory
-
- [.LIB]
-
-To compile applications using freetype2 you'll need 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
-$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.
-
-
- Any problems can be reported to
-
- joukj@hrem.stm.tudelft.nl
-
-
- Jouk Jansen
Index: xc/extras/freetype2/include/freetype/freetype.h
diff -u xc/extras/freetype2/include/freetype/freetype.h:1.1.1.8 xc/extras/freetype2/include/freetype/freetype.h:1.1.1.9
--- xc/extras/freetype2/include/freetype/freetype.h:1.1.1.8 Thu Jun 20 04:16:06 2002
+++ xc/extras/freetype2/include/freetype/freetype.h Wed May 28 22:01:44 2003
@@ -35,7 +35,7 @@
/* */
#define FREETYPE_MAJOR 2
#define FREETYPE_MINOR 1
-#define FREETYPE_PATCH 0
+#define FREETYPE_PATCH 4
#include
@@ -241,11 +241,12 @@
/* completely independent from the others; it is the `root' of a set */
/* of objects like fonts, faces, sizes, etc. */
/* */
- /* It also embeds a system object (see FT_System), as well as a */
- /* scan-line converter object (see FT_Raster). */
+ /* It also embeds a memory manager (see @FT_Memory), as well as a */
+ /* scan-line converter object (see @FT_Raster). */
/* */
/* */
- /* Library objects are created through FT_Init_FreeType(). */
+ /* Library objects are normally created by @FT_Init_FreeType, and */
+ /* destroyed with @FT_Done_FreeType. */
/* */
typedef struct FT_LibraryRec_ *FT_Library;
@@ -270,11 +271,7 @@
/* */
/* */
/* A handle to a given FreeType font driver object. Each font driver */
- /* is able to create faces, sizes, glyph slots, and charmaps from the */
- /* resources whose format it supports. */
- /* */
- /* A driver can support either bitmap, graymap, or scalable font */
- /* formats. */
+ /* is a special module capable of creating faces from font files. */
/* */
typedef struct FT_DriverRec_* FT_Driver;
@@ -285,10 +282,10 @@
/* FT_Renderer */
/* */
/* */
- /* A handle to a given FreeType renderer. A renderer is in charge of */
- /* converting a glyph image to a bitmap, when necessary. Each */
- /* supports a given glyph image format, and one or more target */
- /* surface depths. */
+ /* A handle to a given FreeType renderer. A renderer is a special */
+ /* module in charge of converting a glyph image to a bitmap, when */
+ /* necessary. Each renderer supports a given glyph image format, and */
+ /* one or more target surface depths. */
/* */
typedef struct FT_RendererRec_* FT_Renderer;
@@ -299,12 +296,21 @@
/* FT_Face */
/* */
/* */
- /* A handle to a given driver face object. A face object contains */
- /* all the instance and glyph independent data of a font file */
- /* typeface. */
+ /* A handle to a given typographic face object. A face object models */
+ /* a given typeface, in a given style. */
+ /* */
+ /* */
+ /* Each face object also owns a single @FT_GlyphSlot object, as well */
+ /* as one or more @FT_Size objects. */
/* */
- /* A face object is created from a resource object through the */
- /* new_face() method of a given driver. */
+ /* Use @FT_New_Face or @FT_Open_Face to create a new face object from */
+ /* a given filepathname or a custom input stream. */
+ /* */
+ /* Use @FT_Done_Face to destroy it (along with its slot and sizes). */
+ /* */
+ /* */
+ /* The @FT_FaceRec details the publicly accessible fields of a given */
+ /* face object. */
/* */
typedef struct FT_FaceRec_* FT_Face;
@@ -315,12 +321,21 @@
/* FT_Size */
/* */
/* */
- /* A handle to a given driver size object. Such an object models the */
- /* _resolution_ AND _size_ dependent state of a given driver face */
- /* size. */
+ /* A handle to a given size object. Such an object models the data */
+ /* that depends on the current _resolution_ and _character size_ in a */
+ /* given @FT_Face. */
/* */
- /* A size object is always created from a given face object. It is */
- /* discarded automatically by its parent face. */
+ /* */
+ /* Each face object owns one or more sizes. There is however a */
+ /* single _active_ size for the face at any time that will be used by */
+ /* functions like @FT_Load_Glyph, @FT_Get_Kerning, etc. */
+ /* */
+ /* You can use the @FT_Activate_Size API to change the current */
+ /* active size of any given face. */
+ /* */
+ /* */
+ /* The @FT_SizeRec structure details the publicly accessible fields */
+ /* of a given face object. */
/* */
typedef struct FT_SizeRec_* FT_Size;
@@ -332,11 +347,16 @@
/* */
/* */
/* A handle to a given `glyph slot'. A slot is a container where it */
- /* is possible to load any of the glyphs contained within its parent */
+ /* is possible to load any one of the glyphs contained in its parent */
/* face. */
/* */
- /* A glyph slot is created from a given face object. It is discarded */
- /* automatically by its parent face. */
+ /* In other words, each time you call @FT_Load_Glyph or */
+ /* @FT_Load_Char, the slot's content is erased by the new glyph data, */
+ /* i.e. the glyph's metrics, its image (bitmap or outline), and */
+ /* other control information. */
+ /* */
+ /* */
+ /* @FT_GlyphSlotRec details the publicly accessible glyph fields. */
/* */
typedef struct FT_GlyphSlotRec_* FT_GlyphSlot;
@@ -352,8 +372,19 @@
/* parent's face. Some font formats may provide several charmaps per */
/* font. */
/* */
- /* A charmap is created from a given face object. It is discarded */
- /* automatically by its parent face. */
+ /* Each face object owns zero or more charmaps, but only one of them */
+ /* can be "active" and used by @FT_Get_Char_Index or @FT_Load_Char. */
+ /* */
+ /* The list of available charmaps in a face is available through the */
+ /* "face->num_charmaps" and "face->charmaps" fields of @FT_FaceRec. */
+ /* */
+ /* The currently active charmap is available as "face->charmap". */
+ /* You should call @FT_Set_Charmap to change it. */
+ /* */
+ /* */
+ /* When a new face is created (either through @FT_New_Face or */
+ /* @FT_Open_Face), the library looks for a Unicode charmap within */
+ /* the list and automatically activates it. */
/* */
typedef struct FT_CharMapRec_* FT_CharMap;
@@ -364,14 +395,26 @@
/* FT_ENC_TAG */
/* */
/* */
- /* This macro converts four letter tags into an unsigned long. */
+ /* This macro converts four letter tags into an unsigned long. It is */
+ /* used to define "encoding" identifiers (see @FT_Encoding). */
+ /* */
+ /* */
+ /* Since many 16bit compilers don't like 32bit enumerations, you */
+ /* should redefine this macro in case of problems to something like */
+ /* this: */
+ /* */
+ /* #define FT_ENC_TAG( value, a, b, c, d ) (value) */
/* */
+ /* to get a simple enumeration without assigning special numbers. */
+ /* */
+
#ifndef FT_ENC_TAG
-#define FT_ENC_TAG( value, _x1, _x2, _x3, _x4 ) \
- value = ( ( (unsigned long)_x1 << 24 ) | \
- ( (unsigned long)_x2 << 16 ) | \
- ( (unsigned long)_x3 << 8 ) | \
- (unsigned long)_x4 )
+#define FT_ENC_TAG( value, a, b, c, d ) \
+ value = ( ( (FT_UInt32)(a) << 24 ) | \
+ ( (FT_UInt32)(b) << 16 ) | \
+ ( (FT_UInt32)(c) << 8 ) | \
+ (FT_UInt32)(d) )
+
#endif /* FT_ENC_TAG */
@@ -382,50 +425,174 @@
/* */
/* */
/* An enumeration used to specify encodings supported by charmaps. */
- /* Used in the FT_Select_Charmap() API function. */
+ /* Used in the @FT_Select_Charmap API function. */
/* */
/* */
/* Because of 32-bit charcodes defined in Unicode (i.e., surrogates), */
/* all character codes must be expressed as FT_Longs. */
/* */
+ /* The values of this type correspond to specific character */
+ /* repertories (i.e. charsets), and not to text encoding methods */
+ /* (like UTF-8, UTF-16, GB2312_EUC, etc.). */
+ /* */
/* Other encodings might be defined in the future. */
/* */
+ /* */
+ /* FT_ENCODING_NONE :: */
+ /* The encoding value 0 is reserved. */
+ /* */
+ /* FT_ENCODING_UNICODE :: */
+ /* Corresponds to the Unicode character set. This value covers */
+ /* all versions of the Unicode repertoire, including ASCII and */
+ /* Latin-1. Most fonts include a Unicode charmap, but not all */
+ /* of them. */
+ /* */
+ /* FT_ENCODING_MS_SYMBOL :: */
+ /* Corresponds to the Microsoft Symbol encoding, used to encode */
+ /* mathematical symbols in the 32..255 character code range. For */
+ /* more information, see `http://www.ceviz.net/symbol.htm'. */
+ /* */
+ /* FT_ENCODING_MS_SJIS :: */
+ /* Corresponds to Microsoft's Japanese SJIS encoding. More info */
+ /* at `http://langsupport.japanreference.com/encoding.shtml'. */
+ /* See note on multi-byte encodings below. */
+ /* */
+ /* FT_ENCODING_MS_GB2312 :: */
+ /* Corresponds to the encoding system for Simplified Chinese, as */
+ /* used in China. Only found in some TrueType fonts. */
+ /* */
+ /* FT_ENCODING_MS_BIG5 :: */
+ /* Corresponds to the encoding system for Traditional Chinese, as */
+ /* used in Taiwan and Hong Kong. Only found in some TrueType fonts. */
+ /* */
+ /* FT_ENCODING_MS_WANSUNG :: */
+ /* Corresponds to the Korean encoding system known as Wansung. */
+ /* This is a Microsoft encoding that is only found in some TrueType */
+ /* fonts. For more information, see */
+ /* `http://www.microsoft.com/typography/unicode/949.txt'. */
+ /* */
+ /* FT_ENCODING_MS_JOHAB :: */
+ /* The Korean standard character set (KS C-5601-1992), which */
+ /* corresponds to Windows code page 1361. This character set */
+ /* includes all possible Hangeul character combinations. */
+ /* Only found on some rare TrueType fonts. */
+ /* */
+ /* FT_ENCODING_ADOBE_LATIN_1 :: */
+ /* Corresponds to a Latin-1 encoding as defined in a Type 1 */
+ /* Postscript font. It is limited to 256 character codes. */
+ /* */
+ /* FT_ENCODING_ADOBE_STANDARD :: */
+ /* Corresponds to the Adobe Standard encoding, as found in Type 1, */
+ /* CFF, and OpenType/CFF fonts. It is limited to 256character */
+ /* codes. */
+ /* */
+ /* FT_ENCODING_ADOBE_EXPERT :: */
+ /* Corresponds to the Adobe Expert encoding, as found in Type 1, */
+ /* CFF, and OpenType/CFF fonts. It is limited to 256 character */
+ /* codes. */
+ /* */
+ /* FT_ENCODING_ADOBE_CUSTOM :: */
+ /* Corresponds to a custom encoding, as found in Type 1, CFF, and */
+ /* OpenType/CFF fonts. It is limited to 256 character codes. */
+ /* */
+ /* FT_ENCODING_APPLE_ROMAN :: */
+ /* Corresponds to the 8-bit Apple roman encoding. Many TrueType and */
+ /* OpenType fonts contain a charmap for this encoding, since older */
+ /* versions of Mac OS are able to use it. */
+ /* */
+ /* FT_ENCODING_OLD_LATIN_2 :: */
+ /* This value is deprecated and was never used nor reported by */
+ /* FreeType. Don't use or test for it. */
+ /* */
+ /* */
+ /* By default, FreeType automatically synthetizes a Unicode charmap */
+ /* for Postscript fonts, using their glyph names dictionaries. */
+ /* However, it will also report the encodings defined explicitly in */
+ /* the font file, for the cases when they are needed, with the Adobe */
+ /* values as well. */
+ /* */
typedef enum FT_Encoding_
{
- FT_ENC_TAG( ft_encoding_none, 0, 0, 0, 0 ),
+ FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ),
- FT_ENC_TAG( ft_encoding_symbol, 's', 'y', 'm', 'b' ),
- FT_ENC_TAG( ft_encoding_unicode, 'u', 'n', 'i', 'c' ),
- FT_ENC_TAG( ft_encoding_latin_1, 'l', 'a', 't', '1' ),
- FT_ENC_TAG( ft_encoding_latin_2, 'l', 'a', 't', '2' ),
- FT_ENC_TAG( ft_encoding_sjis, 's', 'j', 'i', 's' ),
- FT_ENC_TAG( ft_encoding_gb2312, 'g', 'b', ' ', ' ' ),
- FT_ENC_TAG( ft_encoding_big5, 'b', 'i', 'g', '5' ),
- FT_ENC_TAG( ft_encoding_wansung, 'w', 'a', 'n', 's' ),
- FT_ENC_TAG( ft_encoding_johab, 'j', 'o', 'h', 'a' ),
-
- FT_ENC_TAG( ft_encoding_adobe_standard, 'A', 'D', 'O', 'B' ),
- FT_ENC_TAG( ft_encoding_adobe_expert, 'A', 'D', 'B', 'E' ),
- FT_ENC_TAG( ft_encoding_adobe_custom, 'A', 'D', 'B', 'C' ),
+ FT_ENC_TAG( FT_ENCODING_MS_SYMBOL, 's', 'y', 'm', 'b' ),
+ FT_ENC_TAG( FT_ENCODING_UNICODE, 'u', 'n', 'i', 'c' ),
- FT_ENC_TAG( ft_encoding_apple_roman, 'a', 'r', 'm', 'n' )
+ FT_ENC_TAG( FT_ENCODING_MS_SJIS, 's', 'j', 'i', 's' ),
+ FT_ENC_TAG( FT_ENCODING_MS_GB2312, 'g', 'b', ' ', ' ' ),
+ FT_ENC_TAG( FT_ENCODING_MS_BIG5, 'b', 'i', 'g', '5' ),
+ FT_ENC_TAG( FT_ENCODING_MS_WANSUNG, 'w', 'a', 'n', 's' ),
+ FT_ENC_TAG( FT_ENCODING_MS_JOHAB, 'j', 'o', 'h', 'a' ),
+
+ FT_ENC_TAG( FT_ENCODING_ADOBE_STANDARD, 'A', 'D', 'O', 'B' ),
+ FT_ENC_TAG( FT_ENCODING_ADOBE_EXPERT, 'A', 'D', 'B', 'E' ),
+ FT_ENC_TAG( FT_ENCODING_ADOBE_CUSTOM, 'A', 'D', 'B', 'C' ),
+ FT_ENC_TAG( FT_ENCODING_ADOBE_LATIN_1, 'l', 'a', 't', '1' ),
+
+ FT_ENC_TAG( FT_ENCODING_OLD_LATIN_2, 'l', 'a', 't', '2' ),
+
+ FT_ENC_TAG( FT_ENCODING_APPLE_ROMAN, 'a', 'r', 'm', 'n' )
} FT_Encoding;
/*************************************************************************/
/* */
+ /* */
+ /* ft_encoding_xxx */
+ /* */
+ /* */
+ /* These constants are deprecated; use the corresponding @FT_Encoding */
+ /* values instead. */
+ /* */
+ /* */
+ /* ft_encoding_none :: see @FT_ENCODING_NONE */
+ /* ft_encoding_unicode :: see @FT_ENCODING_UNICODE */
+ /* ft_encoding_latin_2 :: see @FT_ENCODING_OLD_LATIN_2 */
+ /* ft_encoding_symbol :: see @FT_ENCODING_MS_SYMBOL */
+ /* ft_encoding_sjis :: see @FT_ENCODING_MS_SJIS */
+ /* ft_encoding_gb2312 :: see @FT_ENCODING_MS_GB2312 */
+ /* ft_encoding_big5 :: see @FT_ENCODING_MS_BIG5 */
+ /* ft_encoding_wansung :: see @FT_ENCODING_MS_WANSUNG */
+ /* ft_encoding_johab :: see @FT_ENCODING_MS_JOHAB */
+ /* */
+ /* ft_encoding_adobe_standard :: see @FT_ENCODING_ADOBE_STANDARD */
+ /* ft_encoding_adobe_expert :: see @FT_ENCODING_ADOBE_EXPERT */
+ /* ft_encoding_adobe_custom :: see @FT_ENCODING_ADOBE_CUSTOM */
+ /* ft_encoding_latin_1 :: see @FT_ENCODING_ADOBE_LATIN_1 */
+ /* */
+ /* ft_encoding_apple_roman :: see @FT_ENCODING_APPLE_ROMAN */
+ /* */
+#define ft_encoding_none FT_ENCODING_NONE
+#define ft_encoding_unicode FT_ENCODING_UNICODE
+#define ft_encoding_symbol FT_ENCODING_MS_SYMBOL
+#define ft_encoding_latin_1 FT_ENCODING_ADOBE_LATIN_1
+#define ft_encoding_latin_2 FT_ENCODING_OLD_LATIN_2
+#define ft_encoding_sjis FT_ENCODING_MS_SJIS
+#define ft_encoding_gb2312 FT_ENCODING_MS_GB2312
+#define ft_encoding_big5 FT_ENCODING_MS_BIG5
+#define ft_encoding_wansung FT_ENCODING_MS_WANSUNG
+#define ft_encoding_johab FT_ENCODING_MS_JOHAB
+
+#define ft_encoding_adobe_standard FT_ENCODING_ADOBE_STANDARD
+#define ft_encoding_adobe_expert FT_ENCODING_ADOBE_EXPERT
+#define ft_encoding_adobe_custom FT_ENCODING_ADOBE_CUSTOM
+#define ft_encoding_apple_roman FT_ENCODING_APPLE_ROMAN
+
+
+ /*************************************************************************/
+ /* */
/* */
/* FT_CharMapRec */
/* */
/* */
- /* The base charmap class. */
+ /* The base charmap structure. */
/* */
/* */
/* face :: A handle to the parent face object. */
/* */
- /* encoding :: A tag which identifies the charmap. Use this with */
- /* FT_Select_Charmap(). */
+ /* encoding :: An @FT_Encoding tag identifying the charmap. Use */
+ /* this with @FT_Select_Charmap. */
/* */
/* platform_id :: An ID number describing the platform for the */
/* following encoding ID. This comes directly from */
@@ -436,10 +603,6 @@
/* comes from the TrueType specification and should be */
/* emulated similarly. */
/* */
- /* */
- /* We STRONGLY recommmend emulating a Unicode charmap for drivers */
- /* that do not support TrueType or OpenType. */
- /* */
typedef struct FT_CharMapRec_
{
FT_Face face;
@@ -466,9 +629,9 @@
/* */
/* */
/* An opaque handle to an FT_Face_InternalRec structure, used to */
- /* model private data of a given FT_Face object. */
+ /* model private data of a given @FT_Face object. */
/* */
- /* This field might change between releases of FreeType 2 and are */
+ /* This structure might change between releases of FreeType 2 and is */
/* not generally available to client applications. */
/* */
typedef struct FT_Face_InternalRec_* FT_Face_Internal;
@@ -476,8 +639,6 @@
/*************************************************************************/
/* */
- /* FreeType base face class */
- /* */
/* */
/* FT_FaceRec */
/* */
@@ -487,11 +648,11 @@
/* */
/* */
/* num_faces :: In the case where the face is located in a */
- /* collection (i.e., a resource which embeds */
+ /* collection (i.e., a file which embeds */
/* several faces), this is the total number of */
/* faces found in the resource. 1 by default. */
/* */
- /* face_index :: The index of the face in its resource. */
+ /* face_index :: The index of the face in its font file. */
/* Usually, this is 0 for all normal font */
/* formats. It can be more in the case of */
/* collections (which embed several fonts in a */
@@ -499,11 +660,12 @@
/* */
/* face_flags :: A set of bit flags that give important */
/* information about the face; see the */
- /* FT_FACE_FLAG_XXX macros for details. */
+ /* @FT_FACE_FLAG_XXX constants for details. */
/* */
/* style_flags :: A set of bit flags indicating the style of */
/* the face (i.e., italic, bold, underline, */
- /* etc). */
+ /* etc). See the @FT_STYLE_FLAG_XXX */
+ /* constants. */
/* */
/* num_glyphs :: The total number of glyphs in the face. */
/* */
@@ -530,15 +692,14 @@
/* */
/* num_fixed_sizes :: The number of fixed sizes available in this */
/* face. This should be set to 0 for scalable */
- /* fonts, unless its resource includes a */
- /* complete set of glyphs (called a `strike') */
- /* for the specified size. */
+ /* fonts, unless its face includes a complete */
+ /* set of glyphs (called a `strike') for the */
+ /* specified sizes. */
/* */
/* available_sizes :: An array of sizes specifying the available */
/* bitmap/graymap sizes that are contained in */
- /* in the font resource. Should be set to */
- /* NULL if the field `num_fixed_sizes' is set */
- /* to 0. */
+ /* in the font face. Should be set to NULL if */
+ /* the field `num_fixed_sizes' is set to 0. */
/* */
/* num_charmaps :: The total number of character maps in the */
/* face. */
@@ -546,12 +707,12 @@
/* charmaps :: A table of pointers to the face's charmaps. */
/* Used to scan the list of available charmaps */
/* -- this table might change after a call to */
- /* FT_Attach_File/Stream (e.g. when used to */
- /* hook an additional encoding/CMap to the */
- /* face object). */
+ /* @FT_Attach_File or @FT_Attach_Stream (e.g. */
+ /* if used to hook an additional encoding or */
+ /* CMap to the face object). */
/* */
/* generic :: A field reserved for client uses. See the */
- /* FT_Generic type description. */
+ /* @FT_Generic type description. */
/* */
/* bbox :: The font bounding box. Coordinates are */
/* expressed in font units (see units_per_EM). */
@@ -582,9 +743,9 @@
/* descender :: The face's descender is the vertical */
/* distance from the baseline to the */
/* bottommost point of any glyph in the face. */
- /* This field's value is positive, expressed */
+ /* This field's value is *negative*, expressed */
/* in font units. Some font designs use a */
- /* value different from `-bbox.yMin'. Only */
+ /* value different from `bbox.yMin'. Only */
/* relevant for scalable formats. */
/* */
/* height :: The face's height is the vertical distance */
@@ -619,15 +780,6 @@
/* underline for this face. Only relevant for */
/* scalable formats. */
/* */
- /* driver :: A handle to the face's parent driver */
- /* object. */
- /* */
- /* memory :: A handle to the face's parent memory */
- /* object. Used for the allocation of */
- /* subsequent objects. */
- /* */
- /* stream :: A handle to the face's stream. */
- /* */
/* glyph :: The face's associated glyph slot(s). This */
/* object is created automatically with a new */
/* face object. However, certain kinds of */
@@ -635,12 +787,9 @@
/* can need more than one slot to ease their */
/* task. */
/* */
- /* sizes_list :: The list of child sizes for this face. */
+ /* size :: The current active size for this face. */
/* */
- /* internal :: A pointer to internal fields of the face */
- /* object. These fields can change freely */
- /* between releases of FreeType and are not */
- /* publicly available. */
+ /* charmap :: The current active charmap for this face. */
/* */
typedef struct FT_FaceRec_
{
@@ -701,164 +850,92 @@
/*************************************************************************/
/* */
- /* */
- /* FT_FACE_FLAG_SCALABLE */
- /* */
- /* */
- /* A bit-field constant, used to indicate that a given face provides */
- /* vectorial outlines (i.e., TrueType or Type1). This doesn't */
- /* prevent embedding of bitmap strikes though, i.e., a given face can */
- /* have both this bit set, and a `num_fixed_sizes' property > 0. */
- /* */
-#define FT_FACE_FLAG_SCALABLE 1
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_FACE_FLAG_FIXED_SIZES */
- /* */
- /* */
- /* A bit-field constant, used to indicate that a given face contains */
- /* `fixed sizes', i.e., bitmap strikes for some given pixel sizes. */
- /* See the `num_fixed_sizes' and `available_sizes' face properties */
- /* for more information. */
- /* */
-#define FT_FACE_FLAG_FIXED_SIZES 2
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_FACE_FLAG_FIXED_WIDTH */
- /* */
- /* */
- /* A bit-field constant, used to indicate that a given face contains */
- /* fixed-width characters (like Courier, Lucida, MonoType, etc.). */
- /* */
-#define FT_FACE_FLAG_FIXED_WIDTH 4
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_FACE_FLAG_SFNT */
- /* */
- /* */
- /* A bit-field constant, used to indicate that a given face uses the */
- /* `sfnt' storage fomat. For now, this means TrueType or OpenType. */
- /* */
-#define FT_FACE_FLAG_SFNT 8
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_FACE_FLAG_HORIZONTAL */
- /* */
- /* */
- /* A bit-field constant, used to indicate that a given face contains */
- /* horizontal glyph metrics. This should be set for all common */
- /* formats, but who knows. */
- /* */
-#define FT_FACE_FLAG_HORIZONTAL 0x10
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_FACE_FLAG_VERTICAL */
- /* */
- /* */
- /* A bit-field constant, used to indicate that a given face contains */
- /* vertical glyph metrics. If not set, the glyph loader will */
- /* synthetize vertical metrics itself to help display vertical text */
- /* correctly. */
- /* */
-#define FT_FACE_FLAG_VERTICAL 0x20
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_FACE_FLAG_KERNING */
- /* */
- /* */
- /* A bit-field constant, used to indicate that a given face contains */
- /* kerning information. When set, this information can be retrieved */
- /* through the function FT_Get_Kerning(). Note that when unset, this */
- /* function will always return the kerning vector (0,0). */
- /* */
-#define FT_FACE_FLAG_KERNING 0x40
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_FACE_FLAG_FAST_GLYPHS */
- /* */
- /* */
- /* A bit-field constant, used to indicate that the glyphs in a given */
- /* font can be retrieved very quickly, and that a glyph cache is thus */
- /* not necessary for any of its child size objects. */
- /* */
- /* This flag should really be set for fixed-size formats like FNT, */
- /* where each glyph bitmap is available directly in binary form */
- /* without any kind of compression. */
- /* */
-#define FT_FACE_FLAG_FAST_GLYPHS 0x80
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_FACE_FLAG_MULTIPLE_MASTERS */
- /* */
- /* */
- /* A bit-field constant, used to indicate that the font contains */
- /* multiple masters and is capable of interpolating between them. */
- /* */
-#define FT_FACE_FLAG_MULTIPLE_MASTERS 0x100
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_FACE_FLAG_GLYPH_NAMES */
- /* */
- /* */
- /* A bit-field constant, used to indicate that the font contains */
- /* glyph names that can be retrieved through FT_Get_Glyph_Name(). */
- /* */
-#define FT_FACE_FLAG_GLYPH_NAMES 0x200
-
-
- /*************************************************************************/
- /* */
- /* */
- /* FT_FACE_FLAG_EXTERNAL_STREAM */
+ /* */
+ /* FT_FACE_FLAG_XXX */
/* */
/* */
- /* This bit field is used internally by FreeType to indicate that */
- /* a face's stream was provided by the client application and should */
- /* not be destroyed by FT_Done_Face(). */
- /* */
-#define FT_FACE_FLAG_EXTERNAL_STREAM 0x4000
-
+ /* A list of bit flags used in the 'face_flags' field of the */
+ /* @FT_FaceRec structure. They inform client applications of */
+ /* properties of the corresponding face. */
+ /* */
+ /* */
+ /* FT_FACE_FLAG_SCALABLE :: */
+ /* Indicates that the face provides vectorial outlines. This */
+ /* doesn't prevent embedded bitmaps, i.e., a face can have both */
+ /* this bit and @FT_FACE_FLAG_FIXED_SIZES set */
+ /* */
+ /* FT_FACE_FLAG_FIXED_SIZES :: */
+ /* Indicates that the face contains `fixed sizes', i.e., bitmap */
+ /* strikes for some given pixel sizes. See the `num_fixed_sizes' */
+ /* and `available_sizes' fields of @FT_FaceRec. */
+ /* */
+ /* FT_FACE_FLAG_FIXED_WIDTH :: */
+ /* Indicates that the face contains fixed-width characters (like */
+ /* Courier, Lucido, MonoType, etc.). */
+ /* */
+ /* FT_FACE_FLAG_SFNT :: */
+ /* Indicates that the face uses the `sfnt' storage scheme. For */
+ /* now, this means TrueType and OpenType. */
+ /* */
+ /* FT_FACE_FLAG_HORIZONTAL :: */
+ /* Indicates that the face contains horizontal glyph metrics. This */
+ /* should be set for all common formats. */
+ /* */
+ /* FT_FACE_FLAG_VERTICAL :: */
+ /* Indicates that the face contains vertical glyph metrics. This */
+ /* is only available in some formats, not all of them. */
+ /* */
+ /* FT_FACE_FLAG_KERNING :: */
+ /* Indicates that the face contains kerning information. If set, */
+ /* the kerning distance can be retrieved through the function */
+ /* @FT_Get_Kerning. Note that if unset, this function will always */
+ /* return the vector (0,0). */
+ /* */
+ /* FT_FACE_FLAG_FAST_GLYPHS :: */
+ /* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT. */
+ /* */
+ /* FT_FACE_FLAG_MULTIPLE_MASTERS :: */
+ /* Indicates that the font contains multiple masters and is capable */
+ /* of interpolating between them. See the multiple-masters */
+ /* specific API for details. */
+ /* */
+ /* FT_FACE_FLAG_GLYPH_NAMES :: */
+ /* Indicates that the font contains glyph names that can be */
+ /* retrieved through @FT_Get_Glyph_Names. Note that some TrueType */
+ /* fonts contain broken glyph name tables. Use the function */
+ /* @FT_Has_PS_Glyph_Name when needed. */
+ /* */
+ /* FT_FACE_FLAG_EXTERNAL_STREAM :: */
+ /* Used internally by FreeType to indicate that a face's stream was */
+ /* provided by the client application and should not be destroyed */
+ /* when @FT_Done_Face is called. Don't read or test this flag. */
+ /* */
+#define FT_FACE_FLAG_SCALABLE ( 1L << 0 )
+#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 )
+#define FT_FACE_FLAG_FIXED_WIDTH ( 1L << 2 )
+#define FT_FACE_FLAG_SFNT ( 1L << 3 )
+#define FT_FACE_FLAG_HORIZONTAL ( 1L << 4 )
+#define FT_FACE_FLAG_VERTICAL ( 1L << 5 )
+#define FT_FACE_FLAG_KERNING ( 1L << 6 )
+#define FT_FACE_FLAG_FAST_GLYPHS ( 1L << 7 )
+#define FT_FACE_FLAG_MULTIPLE_MASTERS ( 1L << 8 )
+#define FT_FACE_FLAG_GLYPH_NAMES ( 1L << 9 )
+#define FT_FACE_FLAG_EXTERNAL_STREAM ( 1L << 10 )
/* */
/*************************************************************************/
/* */
- /* @macro: FT_HAS_HORIZONTAL (face) */
+ /* @macro: */
+ /* FT_HAS_HORIZONTAL( face ) */
/* */
/* @description: */
- /* A macro that returns true whenever a face object contains */
- /* horizontal metrics (this is true for all font formats though). */
+ /* A macro that returns true whenever a face object contains */
+ /* horizontal metrics (this is true for all font formats though). */
/* */
/* @also: */
- /* @FT_HAS_VERTICAL can be used to check for vertical metrics. */
+ /* @FT_HAS_VERTICAL can be used to check for vertical metrics. */
/* */
#define FT_HAS_HORIZONTAL( face ) \
( face->face_flags & FT_FACE_FLAG_HORIZONTAL )
@@ -866,11 +943,12 @@
/*************************************************************************/
/* */
- /* @macro: FT_HAS_VERTICAL (face) */
+ /* @macro: */
+ /* FT_HAS_VERTICAL( face ) */
/* */
/* @description: */
- /* A macro that returns true whenever a face object contains vertical */
- /* metrics. */
+ /* A macro that returns true whenever a face object contains vertical */
+ /* metrics. */
/* */
#define FT_HAS_VERTICAL( face ) \
( face->face_flags & FT_FACE_FLAG_VERTICAL )
@@ -878,11 +956,12 @@
/*************************************************************************/
/* */
- /* @macro: FT_HAS_KERNING (face) */
+ /* @macro: */
+ /* FT_HAS_KERNING( face ) */
/* */
/* @description: */
- /* A macro that returns true whenever a face object contains kerning */
- /* data that can be accessed with @FT_Get_Kerning. */
+ /* A macro that returns true whenever a face object contains kerning */
+ /* data that can be accessed with @FT_Get_Kerning. */
/* */
#define FT_HAS_KERNING( face ) \
( face->face_flags & FT_FACE_FLAG_KERNING )
@@ -890,12 +969,13 @@
/*************************************************************************/
/* */
- /* @macro: FT_IS_SCALABLE (face) */
+ /* @macro: */
+ /* FT_IS_SCALABLE( face ) */
/* */
/* @description: */
- /* A macro that returns true whenever a face object contains a */
- /* scalable font face (true for TrueType, Type 1, CID, and */
- /* OpenType/CFF font formats. */
+ /* A macro that returns true whenever a face object contains a */
+ /* scalable font face (true for TrueType, Type 1, CID, and */
+ /* OpenType/CFF font formats. */
/* */
#define FT_IS_SCALABLE( face ) \
( face->face_flags & FT_FACE_FLAG_SCALABLE )
@@ -903,16 +983,17 @@
/*************************************************************************/
/* */
- /* @macro: FT_IS_SFNT (face) */
+ /* @macro: */
+ /* FT_IS_SFNT( face ) */
/* */
/* @description: */
- /* A macro that returns true whenever a face object contains a font */
- /* whose format is based on the SFNT storage scheme. This usually */
- /* means: TrueType fonts, OpenType fonts, as well as SFNT-based */
- /* embedded bitmap fonts. */
+ /* A macro that returns true whenever a face object contains a font */
+ /* whose format is based on the SFNT storage scheme. This usually */
+ /* means: TrueType fonts, OpenType fonts, as well as SFNT-based */
+ /* embedded bitmap fonts. */
/* */
- /* If this macro is true, all functions defined in @FT_SFNT_NAMES_H */
- /* and @FT_TRUETYPE_TABLES_H are available. */
+ /* If this macro is true, all functions defined in @FT_SFNT_NAMES_H */
+ /* and @FT_TRUETYPE_TABLES_H are available. */
/* */
#define FT_IS_SFNT( face ) \
( face->face_flags & FT_FACE_FLAG_SFNT )
@@ -920,12 +1001,13 @@
/*************************************************************************/
/* */
- /* @macro: FT_IS_FIXED_WIDTH (face) */
+ /* @macro: */
+ /* FT_IS_FIXED_WIDTH( face ) */
/* */
/* @description: */
- /* A macro that returns true whenever a face object contains a font */
- /* face that contains fixed-width (or "monospace", "fixed-pitch", */
- /* etc.) glyphs. */
+ /* A macro that returns true whenever a face object contains a font */
+ /* face that contains fixed-width (or "monospace", "fixed-pitch", */
+ /* etc.) glyphs. */
/* */
#define FT_IS_FIXED_WIDTH( face ) \
( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH )
@@ -933,12 +1015,13 @@
/*************************************************************************/
/* */
- /* @macro: FT_IS_FIXED_SIZES (face) */
+ /* @macro: */
+ /* FT_IS_FIXED_SIZES( face ) */
/* */
/* @description: */
- /* A macro that returns true whenever a face object contains some */
- /* embedded bitmaps. See the `fixed_sizes' field of the @FT_FaceRec */
- /* structure. */
+ /* A macro that returns true whenever a face object contains some */
+ /* embedded bitmaps. See the `fixed_sizes' field of the @FT_FaceRec */
+ /* structure. */
/* */
#define FT_HAS_FIXED_SIZES( face ) \
( face->face_flags & FT_FACE_FLAG_FIXED_SIZES )
@@ -949,10 +1032,12 @@
/*************************************************************************/
/* */
- /* @macro: FT_HAS_FAST_GLYPHS (face) */
+ /* @macro: */
+ /* FT_HAS_FAST_GLYPHS( face ) */
/* */
/* @description: */
- /* XXX */
+ /* Deprecated; indicates that the face contains so-called "fast" */
+ /* glyph bitmaps. */
/* */
#define FT_HAS_FAST_GLYPHS( face ) \
( face->face_flags & FT_FACE_FLAG_FAST_GLYPHS )
@@ -960,11 +1045,12 @@
/*************************************************************************/
/* */
- /* @macro: FT_HAS_GLYPH_NAMES (face) */
+ /* @macro: */
+ /* FT_HAS_GLYPH_NAMES( face ) */
/* */
/* @description: */
- /* A macro that returns true whenever a face object contains some */
- /* glyph names that can be accessed through @FT_Get_Glyph_Names. */
+ /* A macro that returns true whenever a face object contains some */
+ /* glyph names that can be accessed through @FT_Get_Glyph_Names. */
/* */
#define FT_HAS_GLYPH_NAMES( face ) \
( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES )
@@ -972,13 +1058,14 @@
/*************************************************************************/
/* */
- /* @macro: FT_HAS_MULTIPLE_MASTERS (face) */
+ /* @macro: */
+ /* FT_HAS_MULTIPLE_MASTERS( face ) */
/* */
/* @description: */
- /* A macro that returns true whenever a face object contains some */
- /* multiple masters. The functions provided by */
- /* @FT_MULTIPLE_MASTERS_H are then available to choose the exact */
- /* design you want. */
+ /* A macro that returns true whenever a face object contains some */
+ /* multiple masters. The functions provided by */
+ /* @FT_MULTIPLE_MASTERS_H are then available to choose the exact */
+ /* design you want. */
/* */
#define FT_HAS_MULTIPLE_MASTERS( face ) \
( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS )
@@ -987,25 +1074,21 @@
/*************************************************************************/
/* */
/* */
- /* FT_STYLE_FLAG_ITALIC */
+ /* FT_STYLE_FLAG_XXX */
/* */
/* */
- /* A bit-field constant, used to indicate that a given face is */
- /* italicized. */
- /* */
-#define FT_STYLE_FLAG_ITALIC 1
-
-
- /*************************************************************************/
+ /* A list of bit-flags used to indicate the style of a given face. */
+ /* These are used in the `style_flags' field of @FT_FaceRec. */
/* */
- /* */
- /* FT_STYLE_FLAG_BOLD */
+ /* */
+ /* FT_STYLE_FLAG_ITALIC :: */
+ /* Indicates that a given face is italicized. */
/* */
- /* */
- /* A bit-field constant, used to indicate that a given face is */
- /* emboldened. */
+ /* FT_STYLE_FLAG_BOLD :: */
+ /* Indicates that a given face is bold. */
/* */
-#define FT_STYLE_FLAG_BOLD 2
+#define FT_STYLE_FLAG_ITALIC ( 1 << 0 )
+#define FT_STYLE_FLAG_BOLD ( 1 << 1 )
/*************************************************************************/
@@ -1022,8 +1105,6 @@
/*************************************************************************/
/* */
- /* FreeType base size metrics */
- /* */
/* */
/* FT_Size_Metrics */
/* */
@@ -1052,7 +1133,7 @@
/* pixels. Always positive. */
/* */
/* descender :: The descender, expressed in 26.6 fixed point */
- /* pixels. Always positive. */
+ /* pixels. Always negative. */
/* */
/* height :: The text height, expressed in 26.6 fixed point */
/* pixels. Always positive. */
@@ -1092,8 +1173,6 @@
/*************************************************************************/
/* */
- /* FreeType base size class */
- /* */
/* */
/* FT_SizeRec */
/* */
@@ -1151,8 +1230,6 @@
/*************************************************************************/
/* */
- /* FreeType Glyph Slot base class */
- /* */
/* */
/* FT_GlyphSlotRec */
/* */
@@ -1180,7 +1257,7 @@
/* */
/* metrics :: The metrics of the last loaded glyph in the */
/* slot. The returned values depend on the last */
- /* load flags (see the FT_Load_Glyph() API */
+ /* load flags (see the @FT_Load_Glyph API */
/* function) and can be expressed either in 26.6 */
/* fractional pixels or font units. */
/* */
@@ -1209,22 +1286,22 @@
/* */
/* format :: This field indicates the format of the image */
/* contained in the glyph slot. Typically */
- /* ft_glyph_format_bitmap, */
- /* ft_glyph_format_outline, and */
- /* ft_glyph_format_composite, but others are */
+ /* FT_GLYPH_FORMAT_BITMAP, */
+ /* FT_GLYPH_FORMAT_OUTLINE, and */
+ /* FT_GLYPH_FORMAT_COMPOSITE, but others are */
/* possible. */
/* */
/* bitmap :: This field is used as a bitmap descriptor */
/* when the slot format is */
- /* ft_glyph_format_bitmap. Note that the */
+ /* FT_GLYPH_FORMAT_BITMAP. Note that the */
/* address and content of the bitmap buffer can */
- /* change between calls of FT_Load_Glyph() and a */
+ /* change between calls of @FT_Load_Glyph and a */
/* few other functions. */
/* */
/* bitmap_left :: This is the bitmap's left bearing expressed */
/* in integer pixels. Of course, this is only */
/* valid if the format is */
- /* ft_glyph_format_bitmap. */
+ /* FT_GLYPH_FORMAT_BITMAP. */
/* */
/* bitmap_top :: This is the bitmap's top bearing expressed in */
/* integer pixels. Remember that this is the */
@@ -1259,13 +1336,13 @@
/* image format. */
/* */
/* */
- /* If @FT_Load_Glyph() is called with default flags (see */
- /* @FT_LOAD_DEFAULT ) the glyph image is loaded in the glyph slot in */
+ /* If @FT_Load_Glyph is called with default flags (see */
+ /* @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in */
/* its native format (e.g. a vectorial outline for TrueType and */
/* Type 1 formats). */
/* */
/* This image can later be converted into a bitmap by calling */
- /* FT_Render_Glyph(). This function finds the current renderer for */
+ /* @FT_Render_Glyph. This function finds the current renderer for */
/* the native image's format then invokes it. */
/* */
/* The renderer is in charge of transforming the native image through */
@@ -1275,7 +1352,7 @@
/* Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */
/* to specify the position of the bitmap relative to the current pen */
/* position (e.g. coordinates [0,0] on the baseline). Of course, */
- /* `slot->format' is also changed to `ft_glyph_format_bitmap' . */
+ /* `slot->format' is also changed to `FT_GLYPH_FORMAT_BITMAP' . */
/* */
typedef struct FT_GlyphSlotRec_
{
@@ -1326,7 +1403,7 @@
/* FT_Init_FreeType */
/* */
/* */
- /* Initializes a new FreeType library object. The set of drivers */
+ /* Initializes a new FreeType library object. The set of modules */
/* that are registered by this function is determined at build time. */
/* */
/*