
FontForge
FontForge -- An outline font editor
that lets you create your own postscript, truetype, opentype, cid-keyed,
multi-master, cff, svg and bitmap (bdf, FON, NFNT) fonts, or edit existing
ones. Also lets you convert one format to another. FontForge has support
for many macintosh font formats.
FontForge's user interface has been localized for: (English), Russian, Japanese,
French, Italian, Spanish, Vietnamese.
This website itself has been translated into Japanese
and the tutorial into traditional Chinese
and German
.
I have no one to do QA for me except users on the net, so this is essentially
(and eternally) beta software. Expect to find bugs. Please
let me know when you do.
License
Copyright © 2000,2001,2002,2003,2004,2005,2006
by George Williams
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
The name of the author may not be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.
This is essentially the
"revised BSD
license".
There are currently three mailing lists established for FontForge. You may
subscribe to any of them on sourceforge:
http://sourceforge.net/mail/?group_id=103338.
You may not post to a list until you have subscribed (sorry about that, but
we were getting too much spam).
Caveat: Posting to these mailing lists exposes
your email address.
FontForge is by no means perfect. And probably has some bugs. Be prepared
to save frequently and consider working on a copy of the original.
-
No attempt has been made to be efficient.
-
Many type 3 fonts will not be read in correctly
-
Importing a type0 font loses the encoding. FontForge only imports simple
type0 fonts (such as those made by itself), will get confused if there's
more than one font with a chars dictionary.
-
FontForge's does not support contextual ligatures for Apple Advanced Typography
(AAT) fonts
-
There are a number of opentype/AAT tables which FontForge does NOT support.
This list includes the gross bugs that I'm aware of but don't know how to
fix. Minor bugs get reported to me and are generally fixed within a week
and rarely appear on this list.
-
My truetype hinting is still bad. Especially for diagonals.
-
Some truetype fonts (kaiu and mingliu) do not store the correct outline.
Instead they rely on using the instructions to move points around to generate
the outline. The outline does not appear to be grid-fit at all, just positioned.
FontForge does not apply the instructions when loading. In most fonts this
would be the wrong thing to do, and I don't know how I could tell when it
needs to be done...
-
After adding the Johab encoding 23/Nov/01, any old fonts (in sfd files) which
had a unicode encoding will suddenly claim to have a Johab encoding. I don't
see a way around this at the moment. Just reencode them as unicode and all
should be well.
-
I'm told AutoKern doesn't work too well. (I may have fixed this, but
I'm not sure)
-
FontForge is confused by small splines, on the order of one em unit. If you
need something that small, scale the font up by a factor of 2 or more (including
the ascent and descent).
-
There is a fundamental problem when importing a type3 font (or an eps file).
In an most postscript programs each contour is stroked or filled individually,
but in a type1 character, all contours are filled together. This can lead
to unexpected side-effects if contours overlap. (configuring fontforge for
mutlilayered editing can help with this)
-
The MetaFont command doesn't work well.
-
On linux boxes the dashed lines representing hints or the outlines of references
get screwed up. I think this is a bug in the XServer on linux (it doesn't
happen on other systems) but I have not examined it closely.
-
FontForge will not copy and paste large (>XServer transfer (4Meg on my
machine)) clipboards of text.
-
Under gnome mnemonics in menus don't work. Personally I consider this a bug
in gnome.
-
Under gnome, docked palettes don't work the first time. Personally I consider
this a bug in gnome.
-
Under kde, iconifying a FontForge window crashes the button bar at the bottom
of the screen. Personally I consider this a bug in kde.
-
FontForge only produces an approximation to the OS/2 Codepages fields.
-
???
Reporting bugs...
I'm sure you'll find some. If you can isolate it and come up with a reproducible
minimal case, that would be great. If your executable has symbols in it,
you could run it in gdb and get a stack trace... Give me a test case if possible.
Do what you can.
-
My writing leaves much to be desired. Anyone who can make my
documentation more readable is encouraged to do so. (or who wishes to translate
it into other languages, or who wishes to put it into a more flexable format,
KANOU has a Japanese version)
-
I also have a brief tutorial in pdf
format and in html. This could also
be translated into other languages (and would be a simpler job than trying
to translate the entire website, here is the
TeX source if you wish to attempt it).
The html has been translated into German
and
Chinese.
-
The UI can be translated into different languages. FontForge now
uses gnu gettext.
-
English I take care of
-
(I've even got an en_UK file for those differences I've noticed between British
& US spellings)
-
Russian is provided by Valek Filippov.
-
Japanese is provided by KANOU Hiroki. (and has translated the entire website)
-
French is provided by Pierre Hanser and Yannis Haralambous.
-
Italian is provided by Claudio Beccari
-
Spanish is provided by Walter Echarri
-
Vietnamese is provided by
Clytie
Siddall.
-
A Catalan translation is being worked on by Javier Candeira.
-
Gustavo Paolo started a (Brazillian) Portugese translation translation but
no longer has time to work on it. If any one would like to take it over please
do so.
-
Wei-ju Wu is working on a German translation. (and has translated the tutorial)
-
Apostolos Syropoulos is working on a Greek translation
-
Any other language additions would be great (the entire UI does not need
to be translated, any subset is a help)
-
Different font formats
FontForge supports Type1, truetype, opentype, cff, type42, cid-keyed and
svg fonts, also bdf and NFNT for bitmaps
FontForge will sort-of accept metafont files (essentially it runs metafont
and autotraces the result). It won't produce .mf files
FontForge will read (but not produce) Ikarus files
FontForge will read acorn font files with a helper app.
But there are other formats out there that I can't find descriptions of or
don't think are worth supporting
-
Can you point me at documentation for other standards
-
Can you explain why that format is useful?
-
There are certain commands which don't work very well and if someone
else wanted to they might code them better than I...
-
Remove overlap (might be fixed now)
-
Autokern (might be fixed now)
-
Metafont
-
generating instructions to do hinting in truetype (especially hints for diagonal
stems)
-
References
-
I'd like to provide a reasonable bibliography, please suggest some good relevant
books.
-
Are there any other programs or websites that I should be mentioning?
-
Tests
-
I've have a very
simplistic
testsuite-- more to weed out crashes in the underlying engine, than to
make sure it produces the right results. If anyone has a better idea for
an automated suite, or would like to contribute tests to the current stuff,
please let me know.
-
QA
-
I don't.
I find QA boring, and since no one is paying me for this I don't do very
much (I generally run it past my testsuite from time to time). This is obviously
a problem. If anyone wants to undertake to do QA
for me (or several
anyones) I'd be delighted.
-
Printing tests
-
I'm always on the look out for short copyright free texts for printing. I'm
looking for samples from languages I don't have anything on, or in styles
that I don't have.
I'm also interested in phrases equivalent to "The quick brown fox jumps over
the lazy dog." (pangrams). These are short sentences which use every letter
in the script.
-
Indic information
-
Indic languages have a series of special ligature features in opentype. I
believe that FontForge could probably generate some of these by default but
I don't know enough to say which. If you are familiar with indic scripts
could you give me a list of conversions in a format like
U+0066 + U+0069 => U+FB01 'liga'
-
Donate to FontForge
The sample text in File->Print comes from many
sources.
The following people have helped debug fontforge. Many thanks! (actually
the list should be far longer than this)
-
Tom Harvey
-
Ken Chilton
-
Gerhard Killesreiter
-
Alexander Kotelnikov
-
University of California, Santa Barbara
(which has several times let me use some of their machines to do builds and
find bugs if I didn't have the requisite system at home).
-
Uwe Koloska
-
Max Neunhoeffer
-
Martin Giese
-
E.J. Neafsey
-
Norvell Spearman
-
Stefan Fendt
-
Harald ?Gleis?
-
Valek Filippov
-
Pasi Eronen
-
Luc Devroye
-
Scott Pakin
-
Robert Brady
-
Dung Ta Quang
-
Sivan Toledo
-
Gerhard Schellhorn
-
MinGyoon
-
Olaf Rogalsky
-
Baruch Even
-
Volker Gering
-
Torsten Bronger
-
Jacob Jansen
-
Ulrich Klauer
-
Andrey V. Panov
-
Edward G.J. Lee
-
Werner LEMBERG
-
KANOU Hiroki
-
Pierre Hanser
-
Claudio Beccari
-
Yannis Haralambous
-
Walter Echarri
-
Wei-ju Wu
-
Huw Davies of CodeWarriors who showed me how to generate a windows fon
format.
-
And many others!
I owe David Turner (and everyone else) of
FreeType a debt for providing an API
which allows me to debug truetype instructions. Also he came up with the
name "FontForge".
FontForge was inspired by AltSys's
Fontographer
now placed in graceful retirement by MacroMedia.
My father inspired a general interest in typography (though he is interested
in renaissance printing techniques rather than computers).
And finally I owe thanks to Linda Dozier, David Cole and everyone at NaviSoft
which company has given me the free time to write this program.
-
BDF editors
-
gbdfed -- bdf
editor
Formerly called
xmbdfed
-
gfe -- GNU font editor.
Eventually supposed to support other formats
-
fstobdf -- Part of the X distribution, reads a font from the server and generates
a bdf file from it.
-
Postscript/ttf font editors
-
Automated font creation by template
-
MetaFont -- Knuth's font generation which produces bitmaps from a program
based on splines (& other TeX utilities)
-
(available with the TeX package)
-
MetaPost, Uses
the metafont language to produce PostScript pictures.
-
MetaType1, Which attempts
to generate a type1 font directly from the metafont splines (I think)
-
MetaFog -- Part of TrueTeX
(proprietary) another mf->outline
converter.
-
TeXTrace, generates pfb fonts from
TeX fonts by rasterizing at high res and then autotracing them
-
mftops,
similar
-
mftrace, traces
pk fonts (bitmap images) and creates pfb/pfa files. (formerly called pktrace)
-
Postscript utilities
-
gfontview -- displays a
postscript/ttf font
-
gglyph
-- another font displayer
-
t1utils -- Type 1 utility programs
& multiple master utilities
-
Type1inst
-- helps to install type 1 fonts under X and ghostscript
-
ttf2pt1 -- Converts truetype
to type1 postscript fonts and generates hints
-
ttftot42 -- Converts
truetype to type42 postscript fonts.
-
type1fix -- (part of the TeXtrace package).
Used to make some Type1 fonts work with ATM.
-
my stuff
-- Type 1 decoders and converters. True Type & open type decoder.
-
TrueType utilities
-
Rogier C van Dalen has written
a set of utilities for viewing
and hinting truetype fonts
-
Peter Baker has a programming language called
xgridfit for hinting truetype fonts.
It is also available bundled with his
junicode font.
Xgridfit aims to releve some of the tedium of instructng fonts by provding
such amenities as named points, control values, variables and functions,
high-level programmng structure, and automatic management of stack and reference
points.
-
TTX provides an
opensource way of editing all the strange tables in a opentype font (by
converting them from/to XML)
-
Microsoft provides a bunch of stuff (for windows only of course)
-
And Adobe provides a
Font Developer Kit
(mostly for setting opentype tables I think)
-
And Apple
does too (mac only)
-
And some OS/X
tools (mac only)
-
Other font creation tools
-
Font manipulation libraries
-
Rasterizers
-
Other font tools of mine
-
fondu -- Unwraps fonts from mac resource
files (this includes dfonts). Produces ttf, pfb and bdf files for 'sfnt',
'POST' and 'NFNT' resources
-
mensis -- Allows the user much finer
control over some truetype tables than is provided by FontForge.
-
showttf
-- Dumps the contents of a truetype/opentype font. Does some error checking
too.
-
pcl2ttf
-- Reads a pcl file (to go to an HP printer) and extracts any truetype or
bitmap fonts in it. (the bitmap fonts become bdf files, the truetype fonts
become ttf files).
-
font organizers
-
Unicode
Font Guide for Free/Libre Open Source Operating Systems
-
Other related links...
If you know of a tool you think should be on this list, please
let me know. I
did my research a couple of years ago and expect it is out of date.
-
DejaVu -- extension of bitstream Vera
to cyrillic & greek.
-
Free UCS Outline
Fonts -- A set of free OpenType fonts covering ISO 10646/Unicode character
set..
-
Computer Modern Unicode
-- Outline based version of Knuth's TeX fonts, extended to unicode.
-
JUnicode
-- A free (GPL) font especially for scholars working with European medieval
texts
-
TypeForge -- a site for collaborative
font development.
-
Linux Libertine -- A
replacement for the Times font family