Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > main-release > by-pkgid > 3ee1d34ccdcc42e4e9afc4435fe8d857 > files > 304

fontforge-1.0-0.20071002.1mdv2008.1.x86_64.rpm

<HTML>
<HEAD>
  <!-- Created with AOLpress/2.0 -->
  <!-- AP: Created on: 13-Oct-2006 -->
  <!-- AP: Last modified: 16-Oct-2006 -->
  <TITLE>The history of the development of FontForge</TITLE>
  <LINK REL="icon" href="ffanvil16.png">
  <LINK REL="stylesheet" TYPE="text/css" HREF="FontForge.css">
</HEAD>
<BODY>
<DIV ID="in">
  <H2>
    <IMG SRC="ffanvil300.png" WIDTH="300" HEIGHT="173" ALIGN="Right">What on
    Earth Possessed me...
  </H2>
  <P>
  I have always been interested in calligraphy, especially the eccentricities
  of the swash and black letter capitals.
  <P>
  My father was deeply concerned with Renaissance printing, being a textual
  bibliographer of Shakespeare. His major focus was in the errors printers
  were likely to make, nevertheless I grew up in an environment where the long-s
  and other archaic devices appeared. My father used to brag that a great aunt
  of his still used the long-s in her hand-written notes.<BR CLEAR=ALL>
  <BLOCKQUOTE ID="lit">
    <TABLE>
      <TR VALIGN="Bottom">
	<TD><SMALL><B>MALVOLIO</B></SMALL><BR>
	  By my life, this is my lady's hand, these be her<BR>
	  very C's, her U's and her T's and thus she makes her<BR>
	  great P's. It is, in comtempt of question, her hand.
	  <P>
	  <SMALL><B>Sir ANDREW</B></SMALL><BR>
	  Her C's, her U's and her T's: why that?</TD>
	<TD><P ALIGN=Right>
	  -- Shakespeare<BR>
	  Twelfth Night, II, v</TD>
      </TR>
    </TABLE>
  </BLOCKQUOTE>
  <P>
  Why that indeed. Some questions may have no answers.
  <P>
  In the early '80s I was working at JPL and I met my first bitmap display.
  The primary use of this display was to make movies of a simulated fly-by
  of Olympus Mons (on Mars). I used it to design my first bitmap font.
  <P>
  In the late '80s I bought my first computer, a Mac II. And with it a bought
  a little program called Fontastic which allowed people to design their own
  'FONT' resources (mac bitmap fonts).
  <P>
  Then a friend, Godfrey DiGiorgi, recommended that I buy a copy of Fontographer
  and design PostScript fonts. I was leary initially. How could a rasterizer
  match the quality of a hand crafted bitmap? But eventually I succumbed to
  the attractions of the cubic spline.
  <P>
  In the meantime I had studied calligraphy, and once I had Fontographer began
  designing fonts based on various (latin) calligraphic hands.
  <P>
  In the early '90s I was working at a little web start-up company, called
  NaviSoft, which was almost immediately bought by AOL. My product was an
  html-editor (best known as AOLpress). As I was working to convert it to handle
  Unicode I became concerned about the lack of Unicode fonts. I began working
  on my own Unicode font (just the alphabetics and symbols, I knew there was
  no way I'd be able to deal with all the CJK characters). I designed a font
  based on Caslon's work with Bold and Italic variants. And then I started
  working on monospaced and sans-serif families (I called the sans-serif design
  "Caliban" as a play on Arial).
  <P>
  Aldus (the makers of Fontographer) had been bought by MacroMedia, and MacroMedia
  seemed to have no interest in continuing Fontographer. So development on
  Fontographer ceased. It did not support OpenType, and its unicode support
  was minimal. I began to write little programs to decode Type1 fonts and fix
  them up in various ways.
  <P>
  AOL did not really know what to do with AOLpress. AOLpress had been designed
  with web designers in mind, not with Steve Case's mother (which was AOL's
  target audience). So development on AOLpress ceased and the Unicode/CSS version
  never was completed. I continued to work on my fonts however and continued
  to be dissatisfied with Fontographer. In 1998 my AOL options matured and
  I was able to retire.
  <P>
  I wanted to try to become a primatologist and had made arrangements to spend
  4 months in Madagascar as a field assistant to Chia Tan studying the Greater
  Bamboo lemur (<I>Hapalemur simus</I>). Sadly I found that I was not really
  cut out for that life. I had a hard time recognizing individual animals,
  and found that after a few months the leaches were more annoying than I had
  expected.
  <P>
  So I gave up on that.
  <P>
  Instead I set about working on an improved version of my html editor, and
  started by writing my own Unicode based widget set for it. When the widget
  set was usable I decided to write a small application to test it, and something
  to display the splines of a postscript font seemed just the thing. Having
  done that I figured I might as well allow people to edit those splines and
  save it back. And so was born the first version of PfaEdit.
  <P>
  Somehow the html-editor never got written.
  <P>
  I quickly discovered I was better at designing a font editor than I was at
  designing fonts, so I gave up on them too.
  <P>
  After a couple months of work I had something which worked, or so I thought,
  and I posted it to the web (my friend, Dan Kenan, very kindly gave me some
  space on his server, aptly named bibliofile) on 7 November of 2000. Within
  a month I had received my first bug report, and presumably my first user.
  <P>
  I continued working on PfaEdit, adding support for pfb fonts and then in
  December for truetype and bdf fonts. I learned about sourceforge and moved
  PfaEdit there in April of 2001.
  <P>
  In April of 2001 I added support for type2 fonts embedded in an sfnt wrapper
  (opentype fonts, but not the advanced typographic tables). In July of 2001
  MinGyoon (from Korea) asked me if PfaEdit could support CID keyed fonts so
  I learned about those and added support for them in August.
  <P>
  Valek Filippov suggested that I make PfaEdit be internationalizable, so I
  provided a mechanism and he provided a Russian translation of the user interface
  in June of 2001. On December of 2005 I gave up on my own system and switched
  to GNU gettext.
  <TABLE BORDER CELLPADDING="2">
    <TR>
      <TH>Language</TH>
      <TH>Translator</TH>
      <TH>Initial version</TH>
    </TR>
    <TR>
      <TH>English</TH>
      <TD></TD>
      <TD></TD>
    </TR>
    <TR>
      <TH>Russian</TH>
      <TD>Valek Filippov</TD>
      <TD>June 2001</TD>
    </TR>
    <TR>
      <TH>Japanese</TH>
      <TD>Kanou Hiroki</TD>
      <TD>August 2002</TD>
    </TR>
    <TR>
      <TH>French</TH>
      <TD>Pierre Hanser</TD>
      <TD>September 2002</TD>
    </TR>
    <TR>
      <TH>Italian</TH>
      <TD>Claudio Beccari</TD>
      <TD>February 2003</TD>
    </TR>
    <TR>
      <TH>Spanish</TH>
      <TD>Walter Echarri</TD>
      <TD>October 2004</TD>
    </TR>
    <TR>
      <TH>Vietnamese</TH>
      <TD>Clytie Siddall</TD>
      <TD>July 2006</TD>
    </TR>
    <TR>
      <TH>Greek</TH>
      <TD>Apostolos Syropoulos</TD>
      <TD>August 2006</TD>
    </TR>
    <TR>
      <TH><SMALL>Simplified</SMALL> Chinese</TH>
      <TD>Lee Chenhwa</TD>
      <TD>October 2006</TD>
    </TR>
    <TR>
      <TH>German</TH>
      <TD>Philipp Poll</TD>
      <TD>October 2006</TD>
    </TR>
    <TR>
      <TH>Polish</TH>
      <TD>Michal Nowakowski</TD>
      <TD>October 2006</TD>
    </TR>
  </TABLE>
  <P>
  I started working on support for simple aspects of the OpenType GSUB and
  GPOS tables in April of 2001 and finished the process (ignoring bugs of course)
  with the contextual chaining lookups in August of 2003. Similarly I started
  adding support for the various equivalent Apple Advanced Typography tables
  (primarily 'morx') at about the same time.
  <P>
  In an early attempt to get PfaEdit to generate instructions to grid-fit truetype
  fonts, I set about to write a truetype instruction simulator so that I could
  debug the generated code. It didn't work very well on real fonts. Then, in
  early 2001, I discovered <A HREF="http://freetype.sf.net/">freetype</A> and
  found that freetype already did this (and did it right). At first I examined
  their code to try and figure out what was wrong with mine, but eventually
  I gave that up and simply used freetype as an instruction simulator. As things
  got more complicated (with David Turner's permission, and many suggestions
  from Werner LEMBERG), I eventually wrote a visual front end for freetype's
  built-in debugger. For a while this lived in a separate program called mensis,
  but in March of 2003 I integrated it into PfaEdit.
  <P>
  Many people urged me to provide a scripting interface to PfaEdit. At first
  I could not understand the point -- font design needs a graphical interface
  after all. But I was only looking at a small fraction of the tasks that could
  potentially be done with such an interface, and in January of 2002 PfaEdit
  gained the ability to run scripts.
  <P>
  In 2003 Yannis Haralambous invited me to talk at EuroTex. I fear I rather
  disappointed him in my choice of subject matter -- I tried to do better the
  next year when Apostolos Syropoulos invited me to EuroTex 2004 (but I overreached
  myself then and made some incorrect assumptions). These conferences were
  the first time I had actually met any of my users and were quite stimulating,
  leading to many suggestions and requests. I learned about SVG fonts at EuroTex
  2003 and implemented them soon thereafter.
  <P>
  Yannis was also working on a book, <I>Fontes &amp; codages</I> in which FontForge
  figures. He spent a lot of time making suggestions and finding bugs. He
  encouraged me to support multi-master fonts and by February of 2004 I had
  done so. Then I started working on Apple's distortable font technology (which
  has many similarities to Adobe's multi-master, but is rather badly documented)
  and, with help from Apple, had them working in April of 2004. I then extended
  freetype's support for multi-master fonts to support Apple's distortable
  fonts.
  <P>
  In early 2004 people complained that the name "PfaEdit" no longer reflected
  the abilities of the program and requested that I change it. Various people
  suggested names (including me), but the one I liked the best, FontForge,
  came from David Turner of freetype. And in March of 2004 PfaEdit changed
  its name to FontForge.
  <P>
  At about the same time I wanted to provide a somewhat more complete ability
  to handle PostScript Type3 fonts (or SVG fonts). So I implemented a multi-layered
  editing mode which provided a rather clumsy interface to some of the facilities
  of vector graphics programs.
  <P>
  In 2005 a Korean company asked me to do something. We had some difficulty
  communicating (I don't speak Korean), but eventually I figured out that they
  wanted to be able to group glyphs together. Prior to this FontForge handled
  encodings as an integral part of the font, which didn't seem right, and it
  made implementing groups impossible. So I had to rewrite much of the internals
  of FontForge to redo encodings before I could even start on groups. This
  took longer than I had thought it would, and by the time I finished (in July
  of 2005) the Koreans seemed to have lost interest. Ah well.
  <P>
  I got interested in pdf files in October of 2005, and gave FontForge's Print
  command the ability to print to a pdf file. Then I thought it would be kind
  of fun to be able to read a font out of a pdf file. I was a little worried
  about implementing this because I know that most fonts stored in pdf files
  are sub-sets, and only contain the glyphs actually used in the pdf file itself.
  I was convinced that I'd get lots of bug reports from people complaining
  that FontForge didn't read the entire font. Nevertheless my sense of fun
  overcame my fear of silly bug reports and I implemented it.
  <P>
  And I did get bug reports complaining that FontForge did not read the fonts
  correctly. <BR>
  And I don't think I was able to convince some of the complainers that the
  fonts were incomplete in the pdf file. Ah well.
  <P>
  The X11 folk want to move away from the bdf format, so they came up with
  their own format (call opentype bitmap, with extension "otb") which was
  essentially an sfnt wrapper around a series of bitmap strikes with no outline
  font. I implemented that back in July of 2003. But then in July of 2005 they
  wanted to preserve the BDF properties as well. So we worked out a new table
  (called 'BDF ') to contain the properties from all the strikes in the font.
  Now it should be possible to make a round trip conversion of
  bdf-&gt;otb-&gt;bdf and not lose any information.
  <P>
  Many people complained about FontForge's ability to edit quadratic splines.
  I had no experience editing quadratic splines before I wrote my original
  version, I just made it behave like the cubic spline editor (which seemed
  obvious). But doing the obvious makes it hard to create a font that uses
  some of the optimizations in the ttf file, and made instructing the font
  confusing. So between January and February of 2006 FontForge's quadratic
  editing capabilities underwent an evolutionary change as people complained
  and I tried to fix things.
  <P>
  I have a testsuite for fontforge. Obviously. Originally it was very simple:
  a set of script files which did various actions. If FontForge didn't crash,
  then I presumed it worked. That was about all I could test, and although
  that's important, there are a few other things which might be examined. So
  I wrote a command to compare two fonts and see if they were equivalent.
  Originally this had been a separate command (called sfddiff), but if I integrated
  it into FontForge I could increase the abilities of the tests I wrote.
  <P>
  FontForge produced some rather naif type1 and type2 fonts which did not make
  good use of the PostScript concept of subroutines. In June of 2006 did a
  substantial rewrite of the type2 output code and decreased the size of my
  output fonts considerably. My new comparison command was helpful in debugging.
  Nonetheless I introduced a number of bugs. Which got fixed, of course. But
  it made me leary of doing the same thing for type1 output. After all, Adobe
  doesn't even produce type1 fonts any more, so surely I don't need to optimize
  them. Michael Zedler said otherwise, and after great effort on his part induced
  me (in October 2006) to make better use of subroutines in Type1 output also.
  No bugs yet... (but it's still October of 2006).
  <P>
  All of FontForge's dialogs had a fixed layout. Which works fine if you've
  only got one language to support, but which looks really ugly (and worse
  can be totally illegible) when the dialog is translated into a different
  language and labels suddenly become longer (or shorter) and spill over into
  the textfield they identify. There has been a sudden burst of people willing
  to do translations recently. This mattered. So I stole the concept of boxes
  from gtk and implemented them in my widget set (in August of 2006), allowing
  a dialog to do its own layout to match the size of the things in it.
  <P>
  The pace of change seems to have slowed recently as all of the large tasks
  have either been done or proved insurmountable. As more people use the program
  they find more bugs and I have less time to do development. In the last few
  years there have also been large internal changes which (I hope) are practically
  invisible to users and cosmetic changes which make the dialogs look nicer
  and more comprehensible but which aren't functional. 
    <HR>
  <P>
  I have received many suggestions from many people, too many to enumerate
  here, and FontForge is the better for their requests. Often I have reacted
  badly to these suggestions (because they always mean more work for me), and
  I apologize for that, but mostly I wish to thank those who have helped make
  FontForge what it is today.
  <P>
  Currently, probably the biggest complaint about FontForge is the choice of
  widget set. No one likes my widgets (except me). Unfortunately for the rest
  of the world <A HREF="faq.html#widget-set">I don't like the two choices of
  widget set available to me (gtk and qt)</A>. I will get started working on
  converting to one and then run into some problem I can't work around easily
  and give up and go back to my own.
</DIV>
</BODY></HTML>