Commit b700746a authored by daryll's avatar daryll
Browse files

Import XFree 3.9.16

parent 11e106bf
This diff is collapsed.
# this file is part of the FreeType project
prefix = @prefix@
exec_prefix = @exec_prefix@
libdir = @libdir@
bindir = @bindir@
includedir = @includedir@
# This file is part of the FreeType project.
RMF = @RM@ -f
MAKEFILE = arch/unix/Makefile
all: ttlib tttest ttpo
debug: ttlibdebug tttest ttpo
# we can't use the target names 'lib', 'test', etc.
# because make will believe that the directories are
# the targets and are up-to-date! Grrr... >:-(
cd $(FTLIBDIR); $(MAKE) -f $(MAKEFILE) all
cd $(FTLIBDIR); $(MAKE) -f $(MAKEFILE) debug
cd $(FTTESTDIR); $(MAKE) -f $(MAKEFILE) all
cd $(FTPODIR); $(MAKE) all
cd $(FTLIBDIR); $(MAKE) -f $(MAKEFILE) install
cd $(FTTESTDIR); $(MAKE) -f $(MAKEFILE) install
cd $(FTPODIR); $(MAKE) install
cd $(FTLIBDIR); $(MAKE) -f $(MAKEFILE) uninstall
cd $(FTTESTDIR); $(MAKE) -f $(MAKEFILE) uninstall
cd $(FTPODIR); $(MAKE) uninstall
cd $(FTLIBDIR); $(MAKE) -f $(MAKEFILE) clean
cd $(FTTESTDIR); $(MAKE) -f $(MAKEFILE) clean
cd $(FTPODIR); $(MAKE) clean
cd $(FTLIBDIR); $(MAKE) -f $(MAKEFILE) distclean
cd $(FTTESTDIR); $(MAKE) -f $(MAKEFILE) distclean
cd $(FTPODIR); $(MAKE) distclean
$(RMF) config.cache config.log config.status Makefile \
MakeSub ft_conf.h libtool
@echo This package does not yet have a validation suite
cd $(FTLIBDIR); $(MAKE) -f $(MAKEFILE) depend
cd $(FTTESTDIR); $(MAKE) -f $(MAKEFILE) depend
# end of
Welcome to the
Release 1.2
The FREE TrueType Font Engine
Copyright 1996 David Turner <>
- 1998 Robert Wilhelm <>
Werner Lemberg <>
Table Of Contents:
A. Introduction
B. The FreeType mini-FAQ
C. How to use the test programs
D. How to use the programs in the 'contrib' directory
A. Introduction:
Please read the file `INSTALL' for installation instructions!
The FreeType engine is a free and portable TrueType font rendering
engine. It has been developed to provide TT support to a great
variety of platforms and environments.
Notice that FreeType is a *library*. It is *not* a font server
for your preferred environment, even though it has been written to
allow the design of many font servers.
To our knowledge, this is the only royalty-free complete TrueType
engine available. Moreover, its quality fully matches these of
Windows or the Macintosh, a thing that cannot be said for most
other commercial engines available.
FreeType is a clean-room implementation that is not derived from
the original TrueType engine developed by Apple and Microsoft. It
has been created with the sole help of the published TrueType
specifications, which, to our great surprise and pain, turned out
to be extremely poor or misleading in critical areas. Much hard
work has been undertaken to solve numerous ambiguities;
nevertheless, its end result is a portable, fast quality renderer!
The library itself takes about 55kByte of Intel code, complete
with a TrueType byte-code interpreter and a high-performance
scan-line converter.
You will find in this release:
- a TrueType engine, with source code in ANSI C and Pascal.
The C source code has been successfully compiled and run on
various platforms, including MS-DOS, OS/2, Amiga, Linux and
several other variants of Unix. It should be portable to
many other platforms too.
The Pascal code has been successfully compiled and run on DOS
(Borland's BP7) and OS/2 (fPrint's Virtual Pascal). A Delphi
port is in beta (the code in freetype/pascal compiles).
- An API to be used by client applications and font servers,
providing several low level abstractions that can be used to
open font files and collections, create point sizes and load,
process and render glyph outlines and bitmaps.
- Support for the following features:
o Font smoothing, a.k.a. gray-level rendering.
Just like Win95, the renderer uses a 'fine' algorithm
that only smoothes diagonals and curves, while keeping
the horizontal and vertical stems intact.
This results in glyphs that are much more legible than
the "fuzzy" ones generated by programs like Acrobat.
o Support for all character mapping formats.
o A full-featured TrueType byte-code interpreter.
The engine is able to hint the glyphs to produce
excellent output at small sizes. It was extremely
difficult to get this component right, due to the
ambiguous and misleading TrueType specifications.
However, we now *match* Windows and Macintosh
o TrueType collection support, when several fonts are
embedded in the same file.
o Support for extensions.
It is now possible to extend the library in parts to
support additional features, like optional tables that
are not considered by the current core engine.
o Kerning support.
Provided as a sample extension with this release,
kerning tables can be accessed from a TrueType font for
applications that need it.
o New in 1.1: Support for vertical metrics.
It is now possible to load vertical metrics when
they're present in a font file. Metrics can be
retrieved glyph by glyph, using the loader, or in
arrays with a new API.
o New in 1.1: Support for thread-safety and re-entrancy.
This support is now in beta. You'll need to specialize
the file "ttmutex.c" for your platform to include
system-specific synchronization calls.
Note also that:
- Though development of the library is mainly performed on OS/2
and Linux, the library does not contain system-specific code.
- The package contains some graphics drivers used by the test
programs for display purposes on MS-DOS, OS/2, Amiga, and X11.
These drivers are absolutely not mandatory for running the
FreeType engine. Some console-mode test programs like 'ftlint'
or 'ftdump' don't use graphics at all.
- FreeType 1.1 is _not_ binary compatible with 1.0, which means
that you will need to recompile your programs if they used the
engine as a shared library ( on Linux, or FreeType.dll
on Windows). See the file 'freetype/docs/changes.txt' for more
B. The FreeType mini-FAQ:
0. Where to find the latest FreeType release?
1. What do you mean by 'Public Release'?
2. Did the API changed since the beta ?
3. What does the 'Free' in FreeType means?
Can you use it in a commercial product? (YES!)
4. I have made a small program based on the test programs but I
would like to know how to do xxx?
5. When will I be able to use FreeType to display TrueType fonts
under X11, OS/2 or Wine? (NOW!)
6. Trying to compile the FreeType sources gives me lots of
warnings with my ANSI C compliant compiler!
0. Where to find the latest FreeType release?
The latest package is usually uploaded to various source
repositories, like SunSite, SimTel, or Hobbes. There are two
archive formats (zip and tar.gz), which also differ by their
CR/LF conventions.
* for DOS and OS/2: ''
which should be available at:
* for UNIX and Amiga: 'freetype-1.2.tar.gz'
look at:
* As uploading can take several days before the package
becomes available to the public, we advise you to download
it from our own ftp site if you read this message few days
after the announcement at:
We have registered the "" domain. Our main page
is now at:
(Screen shots available)
There are also four mailing lists:
Announcements only about new versions of FreeType
and related packages. This list is moderated and
expected to have very low traffic.
Discusses general use of FreeType, future and needed
additions, as well as many other font-related
discussions which do not always relate directly to the
FreeType code itself...
Discusses development, design choices, portability
issues, internals, specific licenses, etc.
To report bugs you believe come from the engine :-)
Notice the different address! If you want help fixing
bigs, contact to be manually subscribed.
To subscribe, send the usual subscription commands to:
Any suggestions/bug reports are welcome.
1. What do you mean by 'Public Release'?
This release fixes some bugs found in FreeType 1.1.
Note that FreeType will soon go under a major re-design. The
library will evolve from a TrueType-specific driver to a more
general and high-level text rendering library, with the
ability to support several font file formats (bitmaps,
TrueType, hopefully Type1 PostScript). The first "try" will
be released as FreeType 2.0, but the font driver(s) alone
will still be available for separate compilation.
Of course, we keep the same license :-)
2. Did the API change since the beta ?
Yes, there were a few changes that are summed up in the file
'docs/changes.txt'. Please read it thorougly before
modifying your code to adapt to this release.
Normally, if your source only used the FreeType 1.0 API, and
_didn't_ access directly the outline structures (these
changed in the way), it should recompile flawlessly on the
first try (with very small exceptions).
3. What does the 'Free' in FreeType means?
Can you use it in a commercial product? (YES!)
We have placed this release under the same old FreeType
It was inspired by the BSD, Artistic and IJG (Independent
JPEG group) ones, which specifically encourage use of this
software in commercial products!
The reason we did this is that we believe that TrueType is a
very useful technology, and want to make it available on all
machines and platforms. The license is there to ensure that
the engine can be spread as widely as possible.
However, free does not mean public domain. This engine is
copyrighted by its authors, and they will fiercely defend
their rights.
4. I have made a small program based on the test programs but I
would like to know how to do xxx?
(Where xxx is a feature lacking from the current
First of all, read the documentation. The user guide gives
some basic hints and concepts. You can also read the source
code of the test programs that you didn't consider yet. If
you're really stuck, mail your question to:
We'll try to help you.
5. When will I be able to use FreeType to display TrueType fonts
under X11, OS/2, or Wine?
You can already do that under X11 and OS/2 :-) Go to the
FreeType web page ( for up-to-date
And yes, it looks terrific!
For X11, you could also take a look at "xfstt", an
independent TrueType font server for Unix which doesn't rely
on the FreeType code.
You're welcome to volunteer for other platforms, like:
Amiga, RISC OS, BeOS, and others
Please contact for more
6. Trying to compile the FreeType sources gives me lots of
warnings with my ANSI C compliant compiler!
We use gcc as our reference compiler for warnings. This means
that we use the "-ansi -pedantic -Wall" flags and try to get
rid of warnings in this situation.
If you're compiling with another compiler, you may encounter
warnings, not errors.
We have spent much efforts to reduce seriously the number of
warnings produced by major compilers, including Visual Age,
Visual C++ and Borland C++.
Note that the Borland compilers seem to produce lots of
irrelevant warnings (like 'potential loss of precision').
C. How to use the test programs:
This package includes several test programs in the "freetype/test"
directory. Read the "HOWTO" files to learn how to compile them.
Note that all test programs share the same key map when
displaying. Using the arrow or function keys would have been good
to but we preferred a common map rather than specifying it for
each platform:
x : fine counter-clockwise rotation (ftzoom only)
c : fine clockwise rotation (ftzoom only)
v : fast counter-clockwise rotation (ftzoom only)
b : fast clockwise rotation (ftzoom only)
h : toggle hinting on/off
+ : fast scale up
- : fast scale down
u : fine scale up
j : fine scale down
l : go to next glyph
k : go to previous glyph
o : go to tenth next glyph
i : go to tenth previous glyph
9 : go to hundredth next glyph (useful for CJK fonts)
0 : go to hundredth previous glyph
( : go to 1000th next glyph
) : go to 1000th previous glyph
{ : go to 10000th next glyph
} : go to 10000th previous glyph
q : exit
These keys were chosen because they're available on all platforms.
This is a simple performance timer for the engine. It will load a
TrueType font given as an argument and try to render each glyph as
fast as possible, giving the total time elapsed.
This program only times the scan-line converter's job by rendering
all glyphs at a size of 400pt.
(supports font-smoothing and display)
This program is a very simple glyph viewer. Specify a TrueType
font as an argument, and it will try to load it and allows you to
view/scale/rotate any glyph of it. Supports font smoothing.
Doesn't hint glyphs. Use the -p and -e flags to select a CMAP.
This program will hint each glyph of a font file, at a given point
size. This is useful to detect bugs in the interpreter (or in the
font file).
This program will display all glyphs in a given font, applying
hinting to each one. Try it, the results are really pleasant.
Supports font-smoothing.
You can change the point size whenever you want. The OS/2 viewer
comes with a magnifying sub-window that lets you inspect pixel
details (like font-smoothing).
A simple TrueType font or collection dumper.
A simple program to show off string text generation. Used to
display a given message on the screen with a given font, and
eventually resize it as you want.
Use this program to convert a rendered text string into the PGM or
PBM format which can be further converted to popular formats like
GIF or PNG with the netpbm tool suite.
This small test program is UNIX-specific. It tests the gettext()
functionality for internationalized messages.
These programs (currently ftos2, ttf2bmf, and ttf2pk) are
contributions to FreeType and not really part of it. Please read
the documentation files in the respective subdirectories how to
compile and install them.
Of course, all source code is provided 'as is'. Please read the
file 'license.txt' for more information.
We hope you'll find this engine useful, and look forward to file.
your feed-back. We're of course very interested in bug reports, as
well as FreeType success stories :-)
Thanks for your time and consideration,
David Turner, Robert Wilhelm, Werner Lemberg,
and all the FreeType enthusiasts...
--- end of readme.1st --
A few files in this directory and all the files in the `lib/'
subdirectory come from the FreeType 1.1 distribution. Please consult
for more information.
Those files have been slightly modified. All the changes are marked
with a comment saying `Xserver-specific'.
When importing version A.B of FreeType, use:
cvs import -m "FreeType version A.B" xc/extras/FreeType FreeType FreeType-A_B
Files that are modified relative to the most recent import should have
the ident text: $XFree86: xc/extras/FreeType/README.XFree86,v 1.2 1998/09/06 05:05:29 dawes Exp $ added in a comment.
## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*-
## Copyright (C) 1996-1998 Free Software Foundation, Inc.
## Gordon Matzigkeit <>, 1996
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
## This program is distributed in the hope that it will be useful, but
## WITHOUT ANY WARRANTY; without even the implied warranty of
## General Public License for more details.
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
## As a special exception to the GNU General Public License, if you
## distribute this file as part of a program that contains a
## configuration script generated by Autoconf, you may include it under
## the same distribution terms that you use for the rest of that program.
# serial 24 AM_PROG_LIBTOOL
# Always use our own libtool.
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
# Check for any special flags to pass to ltconfig.
test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
test "$silent" = yes && libtool_flags="$libtool_flags --silent"
test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
# Some flags need to be propagated to the compiler or linker for good
# libtool support.
case "$host" in
# Find out which ABI we are using.
echo '[#]line __oline__ "configure"' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
case "`/usr/bin/file conftest.o`" in
LD="${LD-ld} -32"
LD="${LD-ld} -n32"
LD="${LD-ld} -64"
rm -rf conftest*