

			   Welcome to the

		  F R E E T Y P E    P R O J E C T

			  www.freetype.org

			Public  Release 1.1

		   The FREE TrueType Font Engine

    Copyright 1996 David Turner    <turner@enst.fr>
            - 1998 Robert Wilhelm  <robert@physiol.med.tu-muenchen.de>
                   Werner Lemberg  <wl@gnu.org>


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:

  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
             qualities.

         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 (libttf.so on Linux, or FreeType.dll
     on Windows).  See the file 'freetype/docs/changes.txt' for more
     information.


B. The FreeType mini-FAQ:

  Summary:

  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: 'ft-10.zip'

         which should be available at:

         Hobbes: ftp://ftp.cdrom.com/pub/os2/fonts
         SimTel: ftp://oak.oakland.edu/pub/simtel.net/msdos/graphics

       * for UNIX and Amiga: 'freetype-1.1.tar.gz'

         look at:

         SunSite: ftp://sunsite.unc.edu/pub/Linux/X11/fonts

       * 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:
       
         ftp://ftp.freetype.org/pub/freetype


       We have registered the  "freetype.org" domain.  Our main page
       is now at:

                        http://www.freetype.org

                       (Screen shots available)

       There are also three mailing lists:
       
         o freetype@lists.lrz-muenchen.de 

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


         o freetype-devel@lists.lrz-muenchen.de

             Discusses  development,   design  choices,  portability
             issues, internals, specific licenses, etc.
       

         o freetype-bugs@freetype.org

             To  report bugs you  believe come  from the  engine :-)
             Notice the different address! (You can't subscribe this
             list yet, sorry.)


       To subscribe, send the usual subscription commands to:
       
           majordomo@lists.lrz-muenchen.de
       
       
       Any suggestions/bug reports are welcome.
       
  ------------------------------------------------------------------

  1. What do you mean by 'Public Release'?

       This release fixes  some bugs found in FreeType  1.0, as well
       as  provide  additional  capabilities  to  the  engine,  like
       support for vertical metrics.

       The code has also  been cleaned for 16-bit compilers support,
       better ANSI conformance (in order to get rid of warnings with
       compilers other than gcc), beta multi-threaded support, etc.

       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
       license.
       
       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
       implementation).

       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:

                       freetype@lists.lrz-muenchen.de

       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   (www.freetype.org)   for   up-to-date
       information.

       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  freetype-devel@lists.lrz-muenchen.de for more
       information.


  ------------------------------------------------------------------

  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

  ESC :
    q :   exit


  These keys were chosen because they're available on all platforms.


- FTTIMER:

  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)


- FTZOOM:

  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.
  

- FTLINT:

  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).


- FTVIEW:

  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).


- FTDUMP:

  A simple TrueType font or collection dumper.


- FTSTRING:

  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.


- FTSTRPNM:

  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.


- FTERROR:

  This small test program  is UNIX-specific.  It tests the gettext()
  functionality for internationalized messages.



D. HOW TO USE THE PROGRAMS IN THE 'CONTRIB' DIRECTORY:

  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 --
