

mftrace - Scalable PostScript Fonts for MetaFont
************************************************

Introduction
============

   `mftrace' is a small Python program that lets you trace a TeX bitmap
font into a PFA or PFB font (A PostScript Type1 Scalable Font) or TTF
(TrueType) font.  It is licensed under the GNU GPL.

   Scalable fonts offer many advantages over bitmaps, as they allow
documents to render correctly at many printer resolutions. Moreover,
Ghostscript can generate much better PDF, if given scalable PostScript
fonts.

   Versions prior to 1.0.5 were called `pktrace'.

Download
========

   * `http://www.cs.uu.nl/~hanwen/mftrace/mftrace-1.0.16.tar.gz'

   * Anonymous CVS at `anoncvs@subversions.gnu.org:/cvsroot/lilypond',
     module `mftrace'.

Required
========

   `mftrace' is a thin Python wrapper around some other programs that
do the real work: Autotrace and t1asm.  To run mftrace you need:
   * Autotrace - see `http://autotrace.sourceforge.net'.    Version
     0.30 is recommended, earlier versions contain crucial bugs.

   * Python-1.5 or later. See `http://www.python.org/'

   * t1utils. See `http://www.lcdf.org/~eddietwo/type/'

   * TeX-your tex installation should include
        * kpsewhich,

        * MetaFont

Recommended
===========

   A recent version (020215 or newer) of pfaedit
(http://pfaedit.sourceforge.net) is recommended. If it is present, then
mftrace will run the font through pfaedit to simplify and autohint it.

Red Hat
=======

   A RPM may be built by issuing

             rpm -tb mftrace-VERSION.tar.gz

Debian GNU/Linux
================

   Users of Debian unstable (and Debian 3.0 when it is released) can
install all requirements by running (as root):

         apt-get install mftrace
   If you wish to also install the pfaedit package to simplify and
autohint the font, then run the command

         apt-get install pfaedit

Install
=======

   Install the prerequite packages. Then run

         ./configure
         make install
   in the mftrace directory. Run as follows:

     mftrace cmr10

Invoking mftrace.
=================

   Command line options:
`--afm'
     Generate an AFM file from the TFM file. Implies `--simplify'.

`-a,--pfa'
     Generate PFA file (Default).

`-b, --pfb'
     Generate a PFB file.

`-e,--encoding=ENC'
     Use encoding file ENC.

`--glyphs=LIST'
     Only process glyphs in LIST, which is a  comma-delimited  list of
     decimal numbers.

`--gffile=NAME'
     =  Take glyphs from file NAME.

`-h,--help'
     help on options.

`-k,--keep'
     Retain all temporary files in the directory `mftrace.dir/'. This
     is useful for debugging problems.

`--keep-trying'
     Try to continue if autotrace fails: first try it with a less
     smoothed curve, and if that fails, skip the character.

     By default mftrace outputs `autotrace-bug-FONTNAME-NUMBER.pbm' and
     stops the process with a request to file a bugreport.

`--magnification'
     The magnification to use for the PFA file. The default is 1000. The
     larger the more precise the PFA file will be. However, when
     magnification is too large METAFONT can crash with overflow errors.

     Sadly, many MF fonts contain resolution checks
            if dots_per_inch * design_size > 1500:
              ...
     This check is susceptible to overflow errors.  Such code should be
     reported as a bug, and changed to
            if dots_per_inch > (1500 / design_size):
              ...

`-o,--output-base=FILE'
     Output to FILE.pfa or FILE.pfb.

`--simplify'
     Pass the font through PfaEdit for automatic  simplification and
     hinting.

`--tfmfile=FILE'
     Use FILE for the TFM file.  This file is needed to determine at
     what resolution to run MetaFont.

`-t,--truetype'
     Generate a TrueType file (requires pfaedit).

`-V,--verbose'
     Be verbose: print all commands as they are invoked. This is useful
     for debugging.

`-v,--version'
     Print version number

`--dos-kpath'
     Try to kludge up the paths coming from MikTeX for a cygwin
     environment. If this doesn't work, specify `--tfmfile' and
     `--encoding' manually.

`-w,--warranty'
     show warranty and copyright

   Mftrace uses kpathsea for finding fonts, so any kpathsea variable can
be used to fine-tune which files should be loaded.  For example, you
can set `MFINPUTS' to specify which paths to search for `.mf' files.

   Mftrace tries to fill in sensible values for the FontFamily, FullName
and Weight fields. It does so by guessing values for the CM font
series. For other fonts, it tries to read an AFM file (which is not
likely to exist). Suggestions for a more generic way to handle this are
welcome.

Discussion
==========

   Why use `mftrace' over textrace (http://textrace.sourceforge.net)?
Textrace and mftrace are functionally similar. However, mftrace is
quicker, more cleanly written and can be installed using standard
methods. Additionally, textrace requires perl, ghostscript and dvips.

   How about MetaFog (http://www.truetex.com)? MetaFog operates
directly on the curves that generate the bitmap font, its outlines will
probably be smaller and better. However, MetaFog is a proprietary
product: its source code is not available, and it will only run on a
limited number of platforms.

   How about MetaType1 (ftp://bop.eps.gda.pl/pub/metatype1/)?
MetaType1 is a very simplistic approach that puts severe constraints on
what may be done in a font program. It does not work for fonts
containing overlaps and shaped pens.

   How about MetaType (http://metatype.sourceforge.net/)?  MetaType is
similar in design to mftrace. However, metatype aims at producing only
TrueType.  Operating MetaType requires more additional packages. (Note:
Yours Truly did not look further into MetaType)

Bugs and todo
=============

   * Discuss fonts & copyright.

   * Submit `tfm.py' to www.python.org. `tfm.py'  is a python   module
     to parse Tex Font Metric file.

   Should you encounter any bug or problem, then please send a bugreport
to Han-Wen Nienhuys <hanwen@cs.uu.nl>.

Author
======

   Han-Wen Nienhuys <hanwen@cs.uu.nl>

Credits
=======

   The biggest credits go out to Martin Weber, who wrote AutoTrace and
George Williams <gww@silcom.com>, who wrote pfaedit.

   The package also contains gf2pbm, a utility to convert a MetaFont GF
file to a PBM file. Its source code was based on Paul Vojta's Xdvi
program. The license notice is reproduced here:

     Copyright (c) 1990-1999  Paul Vojta

     Permission is hereby granted, free of charge, to any person
     obtaining a copy of this software and associated documentation
     files (the "Software"), to deal in the Software without
     restriction, including without limitation the rights to use, copy,
     modify, merge, publish, distribute, sublicense, and/or sell copies
     of the Software, and to permit persons to whom the Software is
     furnished to do so, subject to the following conditions:

     The above copyright notice and this permission notice shall be
     included in all copies or substantial portions of the Software.

     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     NONINFRINGEMENT.  IN NO EVENT SHALL PAUL VOJTA BE LIABLE FOR ANY
     CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
     CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
     WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

   Thanks to Julian Gilbey (http://www.maths.qmul.ac.uk/~jdg/) for
finding many bugs.

See also
========

   * Type1 font specification
     (http://partners.adobe.com/asn/developer/pdfs/tn/T1Format.pdf)

   * Supplement to the Type1 specification
     (http://partners.adobe.com/asn/developer/pdfs/tn/5015.Type1_Supp.pdf).

