Sophie

Sophie

distrib > Mandriva > 2010.2 > x86_64 > by-pkgid > 509d41e0887af8604b2d61df3f7cf525 > files > 266

fontforge-1.0-0.20090923.2mdv2010.1.x86_64.rpm

<HTML>
<HEAD>
  <!-- Created with AOLpress/2.0 -->
  <!-- AP: Created on: 27-Aug-2002 -->
  <!-- AP: Last modified: 14-Sep-2009 -->
  <TITLE>Change log for FontForge</TITLE>
  <LINK REL="icon" href="ffanvil16.png">
  <LINK REL="stylesheet" TYPE="text/css" HREF="FontForge.css">
</HEAD>
<BODY>
<DIV id="in">
  <H1 ALIGN=Center>
    <A NAME="change-log">Changes</A> <SMALL>(Enhancements &amp; Bug Fixes)</SMALL>
  </H1>
  <P>
  Changes since the last release may be found by performing a "cvs log" command
  on the file stamp.c.
  <BLOCKQUOTE ID="lit">
    <TABLE>
      <TR>
	<TD><B><SMALL>TEGEUS:</SMALL></B><BR>
	  &nbsp; &nbsp; &nbsp; Tell me,<BR>
	  What is your opinion of Progress? Does it, for example,<BR>
	  Exist? Is there ever progression without retrogression?<BR>
	  Therefore is it not true that mankind<BR>
	  Can more justly be said increasingly to Gress?</TD>
	<TD>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
	  &nbsp;</TD>
	<TD VALIGN="Bottom"><P ALIGN=Right>
	  -- <SMALL>A Phoenix too Frequent<BR>
	  Christopher Fry, 1950</SMALL></TD>
      </TR>
      <TR>
	<TD COLSPAN=3>
	    <HR>
	</TD>
      </TR>
      <TR>
	<TD>"The trouble is," he said, "is that things <I>never</I> get better,<BR>
	  they just stay the same, only more so.</TD>
	<TD>&nbsp; &nbsp; &nbsp; &nbsp;</TD>
	<TD VALIGN="Bottom"><P ALIGN=Right>
	  -- <SMALL><STRIKE>Faust</STRIKE> <FONT COLOR="Red">Eric</FONT><BR>
	  Terry Pratchett, 1990</SMALL></TD>
      </TR>
    </TABLE>
  </BLOCKQUOTE>
  <UL>
    <LI>
      11-Sept-2009
      <UL>
	<LI>
	  FontForge will now generate ttc files. It has two options:
	  <UL>
	    <LI>
	      share a common glyf table (not always possible)
	    <LI>
	      Use CFF output.
	  </UL>
	  <P>
	  There is also a python command font.generateTtc()
	<LI>
	  Barry points out that some fields in OS/2 were set incorrectly if the font
	  were a cff.
	<LI>
	  in winfonts.c under 64 bit mode, the sizeof(FARPROC16) is 8 rather than 4
	  and this screws up the font dump. We'd already fixed it for FARPROC, but
	  FARPROC16 escaped. Thanks to Alexey.
	<LI>
	  Several fixes to the resource editor.
	<LI>
	  Alexey suggests that Control + Mouse wheel should Zoom the metrics window
	  just as it does the glyph view.
	<LI>
	  Fix a couple of problems with the Set Point Size dlg of the metrics view.
	<LI>
	  Blending a new Apple MM instance left us in a font with no encoding.
	<LI>
	  The pulldown list in the apple version of the MM dlg did not get set to the
	  correct default value.
	<LI>
	  Attempt to free something that should not have been freed in MM dlg.
	<LI>
	  Loading LastResort.ttf was extremely slow because some glyphs had hundreds
	  of thousands of altunis and whenever we added a new one we went all through
	  that list to check for duplicates. When parsing a standard encoding there
	  won't be any duplicates.
	<LI>
	  More problems reading apple tables from ttc files. Some crashes, etc.
	<LI>
	  Barry wants to have review hints regenerate substitution points and hint
	  masks.
	<LI>
	  Clean up some minor issues which show up on Mac 10.6
	<LI>
	  Patch by Alexey to add a NameFromUnicode function to both native and python
	  scripting.
	<LI>
	  Drag &amp; dropping a glyph into the metrics view didn't mark the end of
	  string properly so cruft left over could be displayed.
	<LI>
	  In CharView Element-&gt;Join and Element-&gt;Correct Direction were turned
	  off when they should not have been.
	<LI>
	  Patch by Khaled to add some feature names to my list and extend the lookup
	  type to which others apply.
	<LI>
	  new python fields:
	  <UL>
	    <LI>
	      glyph.topaccent
	    <LI>
	      glyph.italicCorrection
	    <LI>
	      glyph.isExtendedShape
	  </UL>
	<LI>
	  Khaled provides a patch. 'Top Accent Pos' value in Glyph Info -&gt; TeX &amp;
	  Math was not being retained when user pressed OK.
	<LI>
	  Alexey points out that wordlists in the metrics view really assumed ASCII
	  letters and didn't handle utf8 well.
	<LI>
	  Patch by Michal to render more strings translateable.
	<LI>
	  See if I can speed up execution of "&lt;glyphname&gt; in &lt;font&gt;"
	<LI>
	  Patch by Alexey K to add two preference items which control features of the
	  autohintor/instructor.
	<LI>
	  Dave Crossland tells me that some security patch to windows considers fonts
	  with a 'name' table bigger than 5K to be insecure (Don't ask me why they
	  think this) and windows will refuse to load any such fonts. This means Windows
	  won't load any font with the Open Font License in the 'name' table. This
	  patch adds three checks:
	  <OL>
	    <LI>
	      When generating a font it will let the user know if the name table is too
	      big.
	    <LI>
	      When loading a font in validation mode it will warn if the name table is
	      too big.
	    <LI>
	      Font Info will make a rough approximation to the size of the name table (an
	      approximation which will always be too small) and warn if this approximation
	      is bigger than 5K
	  </OL>
	<LI>
	  When opening a ttf file the guideline psuedo-layer was cubic not quadratic.
	<LI>
	  Patch by Michal:
	  <UL>
	    <LI>
	      Duplicate "Raster Dark Color" in xresources editor.<BR/>
	      "Delta Grid Color" was really meant the second time
	    <LI>
	      Duplicate charview-&gt;point-&gt;tools-&gt;rotate menu item.
	    <LI>
	      In charview palettes, it was impossible to unset "don't stroke" in freehand
	    <LI>
	      Charview-&gt;hinting-&gt;autohint and Charview-&gt;hinting-&gt;autoinstr
	      were not<BR/>
	      disabled if guide were the active layer. This resulted in segfaults
	    <LI>
	      In GlyphInfo-&gt;Unicode, "variant selector" matrix had headers untranslated.
	  </UL>
	<LI>
	  Autoinstructor: added aspect-ratio correction for new diagonal code.
	<LI>
	  Autoinstructor: pushes EF2Dot14 values in a more compact manner.
	<LI>
	  In the metricsview Cut/Copy/Paste/Undo/Redo menu commands all apply to the
	  textfields as well as the glyphs. So don't disable them. It used not to matter
	  because disabling didn't affect the shortcuts, but it does now.
	<LI>
	  <CODE>File-&gt;X Resource Editor...-&gt;FontView-&gt;Font Size</CODE> was
	  supposed to allow the user to set the size of the glyph labels in the fontview.
	  It didn't. Fixed.
	<LI>
	  Add a new problem (Find Problems) and a new validation state indicative of
	  whether a glyph (or hint mask) has overlapping hints.
	<LI>
	  Patch by Alexandre Prokoudine to make an error message translatable.
	<LI>
	  Patch by Stephen Hartke to make contour splicing (in fontforge's python module)
	  work the way splicing normally does in python.
	<LI>
	  Back in the dark ages adobe provide a set of encodings for the PUA. For instance
	  A.small was encoded into PUA. Nowadays it is thought better to leave A.small
	  unencoded. But if a modern font contained an A.small glyph FontForge would
	  think it should be encoded into the PUA. So I added a preference item to
	  turn off adobe's obsolete names.
	  <P>
	  Sadly the preference item wasn't very smart and turned off names like uE001
	  as well. Fix that.
	<LI>
	  Autoinstructor: made much faster by caching SplinePointListIsClockwise()
	  results.
	<LI>
	  Problem when converting an OpenType contextual subtable to an Apple state
	  machine.
	<LI>
	  If an old-style kerning table kerns glyphs which are outside unicode BMP
	  then windows has problems. Someone provide a patch to check for this. Sadly
	  the patch had a bug which could cause crashes.
	<LI>
	  Autoinstructor: patch from Alexey to fix artifacts caused by diagonal hints
	  at small and medium PPEMs. Code now sets projection vector from the stack,
	  because that's more accurate than using dual projection vector, so some font
	  validators may give warnings due to aspect-ratio-dependent nature of SPVFS.
	<LI>
	  Autoinstructor: Alexey pointed out that inaccurate strong points interpolation
	  caused assymetry of implied perpendicular extremas.
	<LI>
	  I was intended to translate espace_espace_i to space_space_i and espace.small
	  to space.small but that didn't work.
	<LI>
	  When renaming a font to a new namelist I only renamed glyphs, but not the
	  places where glyph names ocurred in lookups or math variants.
	<LI>
	  I used to have a separate set of default Generate [Option] flags for ttf
	  and otf. There's no real need for that, and it's probably a bit confusing,
	  and it makes life hard with ttc files.
	<LI>
	  Typo in code for converting an OpenType contextual sub to an apple state
	  machine.
	<LI>
	  Hunh. If we configured with gb12345 then that encoding appeared twice in
	  the encoding list and the first occurance was broken. Remove the broken
	  occurance.
	<LI>
	  Barry complains that when a feature file creates glyphs which aren't in the
	  encoding then those glyphs aren't visible (until you reencode, of course).
	  This causes confusion. I think the solution is simply to encode the new glyphs.
	<LI>
	  Patch by Michal. Some of the strings for the new delta suggestor were not
	  marked for translation (also resizing the window didn't reset the scrollbar
	  properly).
	<LI>
	  Add a new python method glyph.preserveLayerAsUndo() to add an undo to the
	  undo list which will restore the layer to its current state.
	<LI>
	  embedded bitmaps in CID keyed fonts didn't work.
	<LI>
	  Interpolate fonts would screw up internals if the first font had a layer
	  count which wasn't 2. This would almost certainly cause a crash later.
	<LI>
	  Hunh. Python creates an iterator for my cvt type which doesn't work. So create
	  a real one.
	<LI>
	  Barry wanted a selection field in python glyph.anchorPoints so create a new
	  routine glyph.anchorPointsWithSel()
	<LI>
	  Patch from Peter, python cvt[i] returned an unsigned value.
	<LI>
	  Python cvt.find function crashed if there were no cvt table.
	<LI>
	  Werner suggests that .02 is a better default value for delta checking than
	  .01.
	<LI>
	  When generating a type3 font from a script, ff would convert to type0 if
	  it had a two byte encoding.
	<LI>
	  Werner keeps asking for a clearer header in the GASP part of fontinfo.
	<LI>
	  When generating a temporary font for rasterization purposes, don't output
	  GPOS GSUB, or any AAT tables.
	<LI>
	  Patch by Herbert Duerr. With traditional 'kern' tables, windows has problems
	  with kerning glyphs which do not have BMP encodings. So produce a warning
	  in this case.
	<LI>
	  SVG kerning produced garbage. Two typos. Patch by Simo Kinnunen.
	<LI>
	  Bug in feature file (and hence UFO) output. When outputing a contextual
	  class-based lookup ff would crash if class 0 was unused.
	<LI>
	  Werner requests a command to check when a spline gets very close to the center
	  of a pixel as this might be a candidate for a delta instruction. That is:
	  Grid fit many glyphs at many pixel sizes and see which splines come close
	  to which pixel centers. This is a functional but ugly implementation.
	<LI>
	  Add mnemonics for the first 10 layers (Guide is _0, Back _1, Fore _2, &lt;user
	  layer 1&gt; _3, ...). Guide, Back and Fore already had mnemonics... Now they
	  have two.
	<LI>
	  You can rebind the charview menus separately from the others.
	  <P>
	  If you have an entry like:
	  <BLOCKQUOTE>
	    <PRE>&nbsp; msgid "CV*Open|Ctl+O"
 &nbsp;msgstr "Super+O"
</PRE>
	  </BLOCKQUOTE>
	  <P>
	  then that will rebind Open in the charview and nowhere else.
	  <P>
	  Note that the string "CV*Open|Ctl+O" will not appear in the pot file, you
	  must add it manually if you want to do this (that's because I don't want
	  people to do this).
	  <P>
	  If you have a rebinding for
	  <BLOCKQUOTE>
	    <PRE>&nbsp; msgid "Open|Ctl+O"
</PRE>
	  </BLOCKQUOTE>
	  <P>
	  and no entry for "CV*Open|Ctl+O" (ie. the common case) then all menus (including
	  the charview) will follow the standard rebinding.
	<LI>
	  When listing all languages used in a script, ff would only look at gpos.
	<LI>
	  When creating an ellipse or rectangle, ff would round the points to be integers
	  -- but it would not refigure the splines after doing that (so the spline
	  polynomials do not actually reach their endpoints causing peculiar errors).
	<LI>
	  When reading a featurefile from a ufo there is no associated fv yet, but
	  there is an associated map. Use the map instead of fv-&gt;map when checking
	  encodings.
	<LI>
	  FF was not translating the spiro point menu in charview.
	<LI>
	  Add a mechanism so user can specify a modifier mask to be applied to characters
	  for navigation. Used to be that user typed "a" and the glyph for "a" was
	  selected in the fontview (or the charview shifted to show "a"). No modifier
	  was used. Now I've added "NavigationMask|None" to the pot file for hotkeys.
	  If left as "None" then there will continue to be no modifier. If changed
	  to something like "Super" then the super key must be used.
	<LI>
	  Set Width (Set Right Bearing, etc.) from the fontview would change the width
	  of a glyph even if it were composite with a "use my metrics" reference.
	<LI>
	  If cairo was turned off, and a glyph had background images, then deleting
	  those images (Cut or Clear) in the charview did not update the display. (That's
	  a simplification, but is what it looked like).
	<LI>
	  In python font.save(), if the script does not specify a filename, and the
	  font isn't associated with an sfd file, then generate the same name as used
	  in SaveAs by default.
	<LI>
	  FF can save spiro info into an sfnt. Unfortunately FF didn't read it back
	  in properly.
	<LI>
	  Autoinstructor: patch from Alexey to fix a bug reported by Andrey V. Panov:
	  - sometives the last vertical stem protruded beyond the advance width.
	<LI>
	  Various patches from Michal. Array bounds out of bound kind of thing.
      </UL>
    <LI>
      22-June-2009
      <UL>
	<LI>
	  Apple seems to have broken the X11 clipboard around 10.5.7. Or so other people
	  tell me. I can't reproduce the issue on my 10.5.7 system.
	  <P>
	  I hope I have worked around this by adding a preference item<BR>
	  &nbsp;
	  &nbsp;File-&gt;Preferences-&gt;Generic-&gt;ExportClipboard<BR/>
	  Turn this <STRONG>Off</STRONG> if the clipboard doesn't seem to work.
	  <P>
	  Peter Baker says that a solution is to go into X11 Preferences, click on
	  the "Input" tab, and uncheck "Enable key equivalents under X11".
	  <P>
	  Possibly downloading a new set of developer tools will fix it:
	  <PRE>  http://developer.apple.com/Tools/
    (then log in, (or become a member &amp; log in, it's free))
  Click on Downloads
  In the "Downloads" side bar, click on "Developer Tools"
  Download and Install 3.1.3
</PRE>
	<LI>
	  Add support for friendly names attached to style set features (New in OTF
	  1.6).
	<LI>
	  Add support for Mark Sets (New in OTF 1.6)
	<LI>
	  Serhij Dubyk has provided a Ukrainian UI.
	<LI>
	  Alexandre Prokoudine has updated the Russian UI.
	<LI>
	  Updated Polish translation from Michal
	<LI>
	  Various patches from Michal fixing some out of bound array references.
	<LI>
	  Added a cvt.find method to the python cvt object which returns the index
	  in the cvt table of a given value (or -1 if not found).
	<LI>
	  Two issues:
	  <UL>
	    <LI>
	      Apple has changed the name of the preference file for X11. Annoying. Pointless.
	    <LI>
	      Apple (or xorg) has changed the default setting of DISPLAY.
	  </UL>
	  <P>
	  Together these meant that ff did not use appropriate command keys in the
	  menus.<BR/>
	  I wish Apple wouldn't do pointless changes.
	<LI>
	  When faced with non-integral coordinates ff would sometimes introduce rounding
	  errors so the start and end of a contour were slightly different in type1
	  output. I think this is now fixed...
	<LI>
	  Fix some problems with the non-linear transform dlg.
	<LI>
	  Add a nltransform method (non-linear transform) to python font, glyph and
	  layer.
	<LI>
	  python simplify could crash.
	<LI>
	  Patch by Michal to fix problem when compiled with long doubles.
	<LI>
	  If used twice, tilepath would screw up memory.
	<LI>
	  Someone wants a Reverse contour direction command (in addition to correct
	  contour direction).
	<LI>
	  The code used to check bounding boxes in otf fonts had a bug which caused
	  it to report a minimum value of 0 when the min value was positive. This meant
	  we got erroneous reports of points outside the font's bounding box in fontlint.
	<LI>
	  The code used to check spline intersections had a typo which occasionally
	  caused erroneous intersections to be reported.
	<LI>
	  fontlint said bad 'glyf' table when it meant bad glyph data in CFF table.
	<LI>
	  If a font had multiple glyphs in the ff clipboard, and we sent that clipboard
	  through X11 (rather than just using the internal clip) then only one glyph
	  would come out on the other side. Provide a mechanism for specifying multiple
	  glyphs in the X clipboard too.
	<LI>
	  Refined fix to 'kern pair loss' problem, reported by Louis Simard. There
	  probably was also a similar 'ligature loss' problem.
	<LI>
	  Fixed buffer overrun when filling GASP with default values.
	<LI>
	  Enlarging Metrics window made the feature pane and kerning values grid illegible.
	<LI>
	  Fixed a bug reported by Louis Simard:<BR>
	  'Build composite glyph' was enabled in wrong situations and crashed.
	<LI>
	  when saving an sfd after adding a new "kerning by classes" subtable and
	  cancelling its edit dialog.
	<LI>
	  FF crashes just after closing an open spiro contour (by dragging its first
	  point over the last one, and then a bit further).
	<LI>
	  When reading strings from the name table, certain platform/specific settings
	  would cause ff to:
	  <OL>
	    <LI>
	      read the wrong string
	    <LI>
	      screw up memory.
	  </OL>
	<LI>
	  Consolidate various mechanisms for finding the xHeight/capHeight of a font.
	  Look for flat lines at the top of appropriate glyphs and then snap to the
	  closest bluevalue. If no flat lines, then try curves.
	<LI>
	  Output Cap/X Height into UFO.
	<LI>
	  Add new python commands
	  <UL>
	    <LI>
	      font.capHeight
	    <LI>
	      font.xHeight
	  </UL>
	<LI>
	  Was outputting dates within &lt;date&gt; but should be in &lt;string&gt;
	  when generating UFO files.
	<LI>
	  A font with erroneous GSUB tables (referring to non-existant glyphs) and
	  an incomplete set of glyphs (caused by having bitmaps for glyphs without
	  outlines) caused ff to crash.
	<LI>
	  In svg paths, if you omit a command after a 'moveto' then it defaults to
	  a lineto, not another moveto.
	<LI>
	  Add a python font.saveNamelist(filename) command.
	<LI>
	  Jakub Steiner thinks it would be a good idea if the tool bindings of mouse
	  clicks in the glyph editor were sticky across invocations.
	<LI>
	  Werner finds a place where the new jstf code was corrupting memory.
	<LI>
	  Cancelling Element-&gt;Validation-&gt;Set Extremum Bound caused a crash.
	<LI>
	  When closing a metrics view associated with a CID keyed font, ff would crash.
	<LI>
	  Someone wanted to be able to set both the left and right side bearings at
	  the same time.
	<LI>
	  Patch by Alexey to unlink bitmap code.
	<LI>
	  Barry points out it would be better to use fputs when I use fprintf.
	<LI>
	  If the user didn't have freetype, then the anti-aliased metrics view was
	  faint.
	<LI>
	  Oops, could write but not read styleset names from a feature file.
	<LI>
	  Show Att didn't display cursive anchor positioning anchor classes properly.
	<LI>
	  Panov wants a python function to determine the extent in the x direction
	  of a contour when y is fix. That is, the minimum and maximum values x can
	  attain for a given y. And vice versa.
	  <P>
	  Extend this a little so the user can specify a range of y values (return
	  the extent in x when y is between ybottom and ytop).
	  <P>
	  <UL>
	    <LI>
	      contour.xBoundsAtY(ybottom[,ytop])
	    <LI>
	      contour.yBoundsAtX(xleft[,xright])
	    <LI>
	      layer.xBoundsAtY(ybottom[,ytop])
	    <LI>
	      layer.yBoundsAtX(xleft[,xright])
	  </UL>
	  <P>
	  And that appears not to be what he wants anyway. Oh well.
	<LI>
	  Dave wants a python function to return a random text string.
	  <UL>
	    <LI>
	      font.randomText(script[,lang])
	  </UL>
	<LI>
	  If ff opened a bad bitmap font file and tried to place it in a font's background
	  layer, ff would crash.
	<LI>
	  Adjusting the Previous Control Point from the Get Info (point) window of
	  an HVCurve point had very odd effects.
	<LI>
	  Ubuntu now checks that if you use "%3$s" in a sprintf format string you must
	  also use "%1$" and "%2$".
	<LI>
	  Patch by Nicolas Spalinger improving OFL tooltip.
	<LI>
	  Patch by Andrey Panov to add GetAnchorPoints to legacy scripting.
	<LI>
	  Widhaya Trisarnwadhana points out that the mnemonic _N is bound to two items
	  in the View menu of outline glyphs.
	<LI>
	  I let people assign any name to glyphs in the private use area without destroying
	  the encoding. But due to a bug, if you changed the glyph's encoding to the
	  PUA it fell into that code and would not change the font's encoding either.
	<LI>
	  If a point had control points which were less than 1 em-unit from it, then
	  FF would sometimes think it was a curve point when it wasn't. That's probably
	  still true, but some of the more egregious cases have been fixed.
	<LI>
	  Panov suggests that for cubic points, when we round them we should not round
	  the locations of the controls but should round the distance from the on-curve
	  point. Things are a bit trickier for quadratic controls. If the on-curve
	  point is interpolated, then obviously the controls should be rounded and
	  not the on-curve point.
	<LI>
	  Exporting bitmap formats chose the wrong format.
      </UL>
      <TABLE BGCOLOR="#8080ff" ALIGN="center" WIDTH="80%">
	<TR>
	  <TD>I wish to thank Michal Nowakowski for fixing my bugs these last few months.
	    I no longer have as much time for FontForge as I have in the past, and my
	    attention to the project is spotty.
	    <P>
	    Currently I am training to run a
	    <A href="http://www.seattlerunningcompany.com/WR50/">50 mile race</A> (~80K)
	    to celebrate my 50th birthday this year. I've already run a
	    <A href="http://georgeruns.wordpress.com/2009/06/06/50-at-50-not-quite/">50K
	    race</A> as preparation.</TD>
	</TR>
      </TABLE>
    <LI>
      8-Apr-2009
      <UL>
	<LI>
	  Extensive patch by Alexey Kryukov to support composites (references) in bitmap
	  fonts.
	  <UL>
	    <LI>
	      Copy/Paste bitmap references
	    <LI>
	      Output into sfnts
	    <LI>
	      sfd extension
	    <LI>
	      Fix them up so that bitmap formats which don't support them have them unlinked
	  </UL>
	<LI>
	  Support for the JSTF table (sfd extension), new dialog
	  <CODE>Element-&gt;Other Info-&gt;Justification</CODE>.
	<LI>
	  Add a set of new python functions for manipulating CID keyed fonts:
	  <UL>
	    <LI>
	      cidConvertTo(registry,ordering,supplement)
	    <LI>
	      cidConvertByCmap(filename)
	    <LI>
	      cidFlatten()
	    <LI>
	      cidFlattenByCmap(filename)
	    <LI>
	      cidInsertBlankSubFont()
	    <LI>
	      cidRemoveSubFont()
	  </UL>
	<LI>
	  Add support for reading/writing version 1.8 of Adobe's feature file format
	  (while, I hope, retaining the ability to read version 1.6). Fix a number
	  of bugs in parsing feature files.
	  <P>
	  FontForge now supports the 'BASE' table (in feature files).
	  <P>
	  The new format is considerably better than the old and can now be used to
	  express almost all of OpenType.
	  <P>
	  Changes:
	  <UL>
	    <LI>
	      ability to name anchors and value records and use them later.
	    <LI>
	      contourpoints used to be expressed as "&lt;contourpoint 2&gt;" and are now
	      expressed as "contourpoint 2" (no brokets). Adobe does not mention this in
	      the changelog. [Incompatible change]
	    <LI>
	      It is now possible to specify a GDEF mark attachment class in the lookupflags
	      statement.
	    <LI>
	      The syntax for mark to base/ligature/mark lookups is completely different.
	      [Incompatible change]
	    <LI>
	      The syntax for contextual lookups has been extended to allow them to reference
	      lookups by name. [FontForge has always done this. When I suggested to Adobe
	      that they follow suit they said they would not. They have now followed suit
	      but have used an incompatible syntax to accomplish the same ends. So this
	      is an Incompatible change for FontForge]
	    <LI>
	      The syntax for contextual lookups has been extended to allow for the new
	      mark lookups.
	    <LI>
	      It is now possible to specify a reverse chaining substitution lookup.
	    <LI>
	      It is now possible to specify descriptive names for the ss00-ss99 features.
	      FontForge doesn't support this but will parse and ignore it
	  </UL>
	<LI>
	  Last release Werner asked me to put in checks for glyphs that exceded various
	  limits in the font (glyphs outside the bounding box, glyphs with advance
	  widths bigger than the max, etc.) The problem is that erroneous fonts often
	  have thousands of these errors, so only report once -- unless they turn on
	  fontlint.
	<LI>
	  Fix several problems with simplifying quadratic splines.
	<LI>
	  Could still get control points pointing diametrically opposite their desired
	  position when converting cubics to quadratics (happened when we could not
	  find a good solution by subdividing the spline and had to try another approach).
	<LI>
	  AddExtrema could go into an infinite loop.
	<LI>
	  Barry points out that when converting something to a CID font through a CMAP
	  the last glyph in the encoding will be lost.
	<LI>
	  Some inconsistancies in ff python docs and reality.
	<LI>
	  The regen bitmaps dlg sometimes did not use freetype for all glyphs.
	<LI>
	  Metrics view had problems with cid fonts.
	<LI>
	  FontForge was supposed to check that the compile time (include file) freetype
	  library version number matched the installed version number. But it didn't.
	  Only matters in the debugger, but is important there.
	<LI>
	  Autoinstructor: fixed a hang reported by Andrey V. Panov.
	<LI>
	  Autoinstructor: patch from Alexey:
	  <UL>
	    <LI>
	      More tweaking to diagonal stems.
	    <LI>
	      Added support to horizontal ghost hints not tied to blue zones and vertical
	      ghost hints.
	  </UL>
	<LI>
	  Barry points out a free which is sometimes inappropriate.
	<LI>
	  The transform function from the fontview (and python) would transform images
	  in the background layer multiple times -- once for each selected layer.
	<LI>
	  Autoinstructor: patch from Alexey:
	  <UL>
	    <LI>
	      Fix an issue reported by Andrey V. Panov (counter control again).
	    <LI>
	      One type of dependent stems were positioned with wrong method; resulting
	      in serifs pushed beyond their blue zones and other quirks.
	  </UL>
	<LI>
	  Fix a crash bug in the math kern dlg.
	<LI>
	  If a tt control point were on top of an on-curve point, then ff would ignore
	  it. So when I read things in I moved it, slightly. But that didn't work,
	  because the instructions would do the wrong thing with it, and if it were
	  part of an interpolated sequence that info would be garbled. So only swallow
	  control points if they don't have a nextcpindex.
      </UL>
    <LI>
      24-Feb-2009
      <UL>
	<LI>
	  Support for UFO version 2.
	<LI>
	  If a CID font contained a ".notdef" glyph, then when FF generated a Type1
	  CID font resource from it, FF would omit the .notdef glyph.
	<LI>
	  Patch from Panov to allow legacy scripting to guess values for the private
	  dictionary. PrivateGuess(key).
	<LI>
	  Werner wants to know what version of freetype ff is using. So the debug window
	  now shows this on the info line (I presume that's where it is most important).
	<LI>
	  Andreas Neustifter provided a FontForge icon with a transparent background
	  (or the mac).
	<LI>
	  In TrueType debugging Werner originally asked to mark pixels which changed
	  state. (So there were four states: on and still on, just recently turned
	  on, just recently turned off, always off). Now he'd like to see exactly the
	  current state.
	<LI>
	  People complain that under window managers that try to behave like MS Windows,
	  the palettes slowly walk off the screen. This patch should (almost) fix that.
	  A palette may start to walk off but each time it does, it will be brought
	  back close to the zero point.
	<LI>
	  Pango doesn't like a utf8 string which consists solely of a variation selector.
	  So don't draw them.
	<LI>
	  Werner doesn't want to see anchor points when debugging.
	<LI>
	  Change weight from the fontview usually crashed.
	<LI>
	  In the past if someone had a glyph with a negative advance width, FF would
	  output a large postive number to the 'hmtx' table, instead output 0.
	<LI>
	  Yet another undo problem caused by the [Apply] button in the expand stroke
	  dlg. This one on cancelling the dlg.
	<LI>
	  Werner wants to see what points the current instruction is going to move,
	  so when debugging highlight these points. Also draw circles around the points
	  which are used as reference points.
	<LI>
	  FF needed libxml to compile.
	<LI>
	  If there were no undoes in a glyph then Expand Stroke would crash.
	<LI>
	  Werner suggests adding a check that advance widths are all less than
	  hhea.advanceWidthMax
	<LI>
	  Ah. Werner wants ff to tell him when an isFixedPitch font has a glyph with
	  an andvance width which differs from advanceWidthMax.
	<LI>
	  Add a check that glyphs are within the font's bounding box too.
	<LI>
	  When creating a metrics view with many glyphs, one of which needed to be
	  autohinted, then ff might crash.
	<LI>
	  Width was not set when building some small-caps glyphs out of references.
	<LI>
	  When I boxified Page Setup a typo meant that one radio button occurred twice
	  and another got lost. Resulting in -- a crash.
	<LI>
	  Some dialogs don't get destroyed after they are finished with. Instead they
	  hang around, invisible, containing state information that becomes relevant
	  next time they appear. They need to be able to change their transient_for
	  hints, since they may pop up with a new owner window.
	<LI>
	  Points of extrema weren't being marked correctly in the glyph view.
	<LI>
	  Mark to ligature anchor points not output properly to feature files.
	<LI>
	  Another member problem in merge fonts.
      </UL>
    <LI>
      24-Dec-2008
      <UL>
	<LI>
	  <TABLE BGCOLOR="#ffff00">
	    <TR>
	      <TD>Apple appears to have shipped a buggy version of X11 with 10.5. The problem
		appears fixed in 10.5.6 (It may have been fixed earlier, but I don't have
		a machine on which I can test that).
		<P>
		The problem only affects fontforge it if uses pango or cairo.
		<P>
		This release of fontforge tries to check for a buggy system, and if it thinks
		it is running on one, then it will refuse to use Pango and Cairo.
		<P>
		The problem does not affect Mac 10.4.* 
		  <HR>
		You may upgrade from 10.5 to 10.5.6 by going to the Apple Menu and selecting
		the "Software Update" menu item, and then the "Mac OS X Update Combined".
		<P>
		You probably need to install X11 <STRONG>before</STRONG> you upgrade the
		Operating System.</TD>
	    </TR>
	  </TABLE>
	<LI>
	  Fix more memory problems in Merge Fonts.
	<LI>
	  If a font were missing a .notdef glyph. If the user tried to display a font
	  sample of text which included a character not in the font. Then (after the
	  recent patches for grid-fit metrics in Print dlg) fontforge would crash.
	<LI>
	  Fix a bug in old cubic to quadratic conversion.
	<LI>
	  Lots of changes to extrema code.
	  <OL>
	    <LI>
	      Find problems and add extrema had different defn of "short" splines (ones
	      which could have extrema) so we'd get conflicting behavior.
	    <LI>
	      FontView add extrema couldn't be undone.
	    <LI>
	      Many improvements in the algorithm. Too worried of rounding errors before.
	  </OL>
	<LI>
	  Initializing the font info dialog crashed on the mac when -O2 was specified
	  during configure (the default situation).
	<LI>
	  After adding an Apply button the Transform dlg would crash if invoked in
	  a glyph with no undoes.
      </UL>
    <LI>
      15-Dec-2008
      <UL>
	<LI>
	  Add an <A href="resedit.html">X resource editor</A>.
	<LI>
	  Make the metrics view be more like the display dlg in that you can specify
	  a point-size/dpi to view stuff (also include increment/decrement pointsize).
	  Fix Display dlg so that it passes freetype a point size/dpi combination rather
	  than the (almost) equivalent pixelsize.
	<LI>
	  Patch by "JustFillBug" to exend python scripting by making the find interator
	  become a find/replace iterator.
	<LI>
	  Patch by Taco to fix a memory problem reading bad baseline data.
	<LI>
	  Patch from Andrey PANOV to extend GlyphInfo (legacy scripting) by adding
	  "XProfile" and "YProfile" options.
	<LI>
	  Add an [Apply] button to the transform and expand stroke dialogs in the outline
	  view. (Request from Andrey).
	<LI>
	  Make ff parse preference files independent of the decimal point local in
	  which they were written (that is -- accept either "." or "," in floating
	  numbers).
	<LI>
	  If a Cubic layer had a notdef glyph, then sometimes, rasterizing using freetype
	  would fail (not a freetype problem, I didn't set things up right).
	<LI>
	  Fix one more problems with points being snapped to a wrong stem side (it
	  was still possible in case of off-curve points).
	<LI>
	  Metrics View and Display dlg weren't showing grid fit metrics properly. Several
	  bugs.
	<LI>
	  FF used to shift glyphs left if "build accented" created something with a
	  large enough negative left side bearing (ie. generally when centering a large
	  accent over an "I"). Panov doesn't like this.
	<LI>
	  Change so that only modal dialogs are marked transient. Make sure everybody
	  is marked as a dlg.
	<LI>
	  FF got confused by format 4 cmaps which weren't unicode.
	<LI>
	  Goto dlg would not test altunis when looking for a unicode code point.
	<LI>
	  If a langsys table had a required feature, then ff would drop one feature
	  from the list of features. This omitted feature should have been the required
	  one (which is marked specially), but wasn't always.
	<LI>
	  In my eternal vigilence against rounding errors I failed to report some
	  intersections which were very close to the end points.
	<LI>
	  Change the contour direction tester so that instead of looking at the first
	  part of the contour it sees, make it check the whole thing, so if there are
	  self-intersections we will get inconsistent results. Change everyone who
	  looks at the direction tester to be prepared for an error return.
	<LI>
	  In the glyph view, add the option to check for self-intersections before
	  calculating whether a contour is clockwise or anti-. However, this check
	  can be extremely slow for complex glyphs (those with lots of splines) so
	  include an option to turn it off.
	<LI>
	  Add the extension ".lzma" to the list of compression styles that ff is prepared
	  to deal with.
	<LI>
	  patch by Taco for sfnts with no understandable encoding.
	<LI>
	  Patch by Panov to add a new scritping command SelectGlyphsBoth.
	<LI>
	  loading of Apple gvar fonts broken.
	<LI>
	  Redo all the default font family names we ask for. For example "Helvetica"
	  is provided by X11 bitmaps, but not by fontconfig. Now provide a set of names
	  for each family grouping which will work with either font provider.
	<LI>
	  Back before supporting multiple layers, the transform dlg had an entry "Transform
	  Background too", that should be changed to "Transform all layers".
	<LI>
	  When doing a "Scale Emsize", glyphs containing references with UseMyMetrics
	  set were not set to the correct width if the refered glyph occured later
	  in the encoding.
	<LI>
	  Change the definition of FontView.FontSize. Used to be in pixels. Make it
	  be in points.
	<LI>
	  We could get into infinite recursion when CVChar and DVChar each passed non-latin
	  characters to the other in hopes the other could handle it. Neither could.
	  They kept calling deeper and deeper.
	<LI>
	  Add some more checks for badly numbered glyphs.
	<LI>
	  Memory problems with merge:
	  <UL>
	    <LI>
	      Counter masks
	    <LI>
	      Diagonal stems
	    <LI>
	      Mismatch layers
	  </UL>
	<LI>
	  Memory bug when copying contextual chaining lookups.
	<LI>
	  Scrolling the GPOS/GSUB lookups panes for font info cause lots of nasty
	  flickering.
	<LI>
	  The text fields in the metrics view (right, left bearings, width, kern, etc)
	  drew black text on top of a black selection. It wasn't legible.
      </UL>
    <LI>
      17-Nov-2008
      <UL>
	<LI>
	  Displaying magnified bitmap strikes in the font view often caused a crash.
	<LI>
	  Non-English translations of "%d pixel bitmap" in the View menu of the font
	  view came out garbled. There were interpreted as latin1 rather than utf8
      </UL>
    <LI>
      15-Nov-2008
      <UL>
	<LI>
	  FontForge will now use libpango and libcairo if these libraries are present.
	  Pango provides support for drawing opentype text in any language, so it should
	  now be possible to provide po files for the Arabic and Indic languages. Pango
	  also draws anti-aliased text so the user interface should look nicer.
	  <P>
	  Cairo will draw anti-aliased lines and splines (and text as well). Cairo
	  also supports translucent colors.
	  <P>
	  If you have an old release of pango then it may not be able to draw on top
	  of cairo, in which case you won't see complex scripts drawn properly in the
	  outline glyph view (the only view in which cairo is active).
	  <P>
	  Start up is slower with either Pango or Cairo active because both use fontconfig
	  to initialize stuff and that can take time.
	  <P>
	  Cairo, and to a lesser extent, Pango can slow down drawing. Especially if
	  you use X across a wire (on a display not connected to your computer). The
	  slowdown depends to some extent on your video card, driver, X release, etc.
	  If you find these libraries too slow to be useable you may turn either off
	  in Preferences. (You may also turn them off at configure time).
	  <P>
	  The first time fontforge starts with pango (I think it's pango) enabled,
	  initialization is very slow -- several minutes -- do not be alarmed, it only
	  happens once.
	  <P>
	  Pango crashes on my cygwin system, so my cygwin build does not ship with
	  either pango or cairo.
	  <P>
	  The version of cairo available from fink on the mac (1.0) is too old for
	  it to work with fontforge (which needs at least 1.2). So the mac builds do
	  not ship with cairo.
	  <P>
	  The default initialization of fontconfig on the mac doesn't seem to find
	  any fonts. You should create a ~/.fonts directory and drop into it the fonts
	  you want to be displayed.
	<LI>
	  Updated Polish, Greek and Russian translations.
	  <P>
	  Created a teeny tiny translation file for Malayalam.
	<LI>
	  Change the image import dlg to display jpegs by default.
	<LI>
	  Show gridfit omitted a round to int when displaying grid fit outlines. If
	  you use 72dpi, then all was fine, otherwise there would be a slight difference
	  between where the outline was and where it should have been.
	<LI>
	  Remove the preference item to specify a pixmap directory. Instead allow the
	  user to specify a pixmap search path with X resources.
	  <CODE>Gdraw.GGadgets.ImagePath</CODE>
	<LI>
	  Many new X resources:
	  <UL>
	    <LI>
	      GComboBox.Box...
	    <LI>
	      GComboBoxMenu.Box...
	    <LI>
	      GNumericField.Box...
	    <LI>
	      GNumericFieldSpinner.Box...
	    <LI>
	      fontforge.View.Background.
	    <LI>
	      ...Box.GradientBG
	    <LI>
	      ...Box.GradientStartCol
	  </UL>
	<LI>
	  All dialogs should now be marked as transient for tiling window managers
	  (I'm told). But a few dialogs weren't even marked as dialogs.
	<LI>
	  Boxify the Print Setup dialog.
	<LI>
	  Doing a print sample of a truetype font produced bad CID output.
	<LI>
	  Widths of dependent glyphs where not changed by changing the rbearing of
	  a glyph in the metrics view.
	<LI>
	  Force a reflow of the TeX box when the user changes from TeX Text to TeX
	  Math. The labels change, and in polish the label gets so long it hides under
	  the text field.
	<LI>
	  Boxify the TeX More Params dialog of fontinfo.
	<LI>
	  When a point was exactly midway between its control points, FontForge would
	  not detect that it was a curve point after recent work. As this happens
	  frequently in TrueType (all interpolated points) we shouldn't do that.
	<LI>
	  Fix some more cases where the "link" buttons in the FontInfo-&gt;UnicodeRanges
	  and Generate Fonts dlgs looked wrong.
	<LI>
	  FontForge has been generating bad bounding box information for BDF fonts.
	<LI>
	  Adobe doesn't define how big a spline must be for the "no extrema" restriction
	  to apply. Phillip Poll suggests that fontforge have a command that defines
	  this on a per-font basis. Element-&gt;Validation-&gt;Set Extremum Bound.
	<LI>
	  More accurate catagorization of whether a point is curve or tangent.
	<LI>
	  Sequence/Lookup dlg of contextual lookup dlgs can be too small.
	<LI>
	  Michal points out some strings which are not translated.
	<LI>
	  Michal points out that the [Default using suffix] button in the single
	  substitution subtable dialog didn't work if the lookup were bound to no features.
	<LI>
	  Add a lock icon beside a reference name if that reference has "use-my-metrics"
	  set.
	<LI>
	  If a quadratic glyph is put into spiro mode, modified, and then put back
	  into bezier mode then it LOOKS as if it is still quadratic (there are
	  interpolated points shown) but it is actually cubic.
	<LI>
	  If someone changed the button shape to round rect, then the link button in
	  Font Info-&gt;Unicode Ranges became a blot.
	<LI>
	  Alexey suggests using typo-line-gap between lines in the print dialog.
	<LI>
	  Alexey also provides a patch to fix the old church slavonic sample text in
	  the print dialog and a couple of other issues.
	<LI>
	  Patch by Kanou. SetPanose in legacy scripting did not set the panose_set
	  bit so all changes were lost.
	<LI>
	  Added duplicate name and duplicate unicode to the things validate checks
	  for.
	<LI>
	  Add a command to set the color of all selected glyphs.
	<LI>
	  Give instructions in Find Problems on how to figure out which two glyphs
	  have the same name, or the same unicode code point.
	<LI>
	  Pango has caniptions if I ask it to draw one of the code points reserved
	  for surrogates or some of the "NOT A UNICODE CHARACTER" codepoints (0xffff,
	  etc.). So don't draw these, and mark them as unusable slots instead.
	<LI>
	  Redo the selection menu in the font view.
	  <UL>
	    <LI>
	      If the user holds down the shift key then the selection is enlarged by any
	      glyphs specified in the command. (logical or)
	    <LI>
	      If the user holds down the control key then any glyphs specified by the command
	      are removed from the selection.
	    <LI>
	      If the user has both shift and control down then only glyphs currently selected
	      and specified by the command will remain selected (logical and)
	    <LI>
	      Otherwise the selection is set to what is specifed by the command.
	  </UL>
	  <P>
	  Add new commands to select glyphs which
	  <UL>
	    <LI>
	      Contain nothing by references
	    <LI>
	      Contain nothing by splines
	    <LI>
	      Contain both splines and references (bad idea)
	    <LI>
	      Are whitespace (and contain neither splines nor references).
	  </UL>
	<LI>
	  The print dialog had a nasty habit of crashing when asked to undo.
	<LI>
	  Off by one error with scrollbar would sometimes hide the last line in the
	  print dialog.
	<LI>
	  Lines of text in the Insert Text Outlines dialog were drawn in the reverse
	  order from that shown in the dialog (ie. top line on the bottom).
	<LI>
	  Fix a crash bug in the print dialog.
	<LI>
	  It used to be that if a glyph had instructions, and the background was order2,
	  then editing the background (or any order2 background layer) would clear
	  the instructions.
	<LI>
	  Peter Baker says:
	  <BLOCKQUOTE>
	    In both "Show Grid Fit" and the TT debugger it used to be possible to turn
	    off the display of outlines in the foreground layer simply by unchecking
	    "fore". Now it can no longer be done, and as a result it's become more difficult
	    to check at a glance the overall effect of TT instructions. It would be nice
	    to have this capability back.
	  </BLOCKQUOTE>
	<LI>
	  HV points don't work well with quadratic splines. Too many cases where they
	  just specify an impossiblility. Attempt to improve on that. Merge on quadratic
	  splines also left much to be desired.
	<LI>
	  When FF starts browsing the OFLib it creates a thread which requests the
	  new state of OFLib (ie. any fonts since last time I looked?). This thread
	  should die after it has read all the new stuff. It did die, but then someone
	  restarted it and the whole process repeated. Which might be ok -- we'd get
	  a new state whenever the site changed -- except that it meant a flicker of
	  the display every minute or so.
	<LI>
	  Nicolas Spalinger points out that a license search in the oflib dialog (of
	  fontforge) finds exactly the opposite of what was asked for (searching for
	  PD finds OFL and vice versa).
	<LI>
	  There exist sfds where the width of a glyph does not match that specified
	  by use my metrics on references. So when we read these guys in, fix up the
	  erroneous widths and complain.
	<LI>
	  Distributions no longer provide .so files -- unless you ask for -dev packages,
	  and sometimes those don't exist. This means that dlopening a library doesn't
	  work. I think that's really stupid on the distibutioner's part. What do they
	  gain by removing the .so file? But I won't even try to change their minds.
	  Instead try to open the appropriate foo.so.? file if we can't find foo.so
	  (Not always, but in the more important cases).
	<LI>
	  When deleting a mark-to-mark anchor class, then any mark glyph which had
	  both a base mark anchor point and a normal mark anchor point would have only
	  one of them deleted. The other would be a sort of ghost point pointing to
	  an anchor class that didn't exist and causing problems.
	<LI>
	  Jason Pagura points out that while the short cuts in menus may be changed
	  by the user, the short cuts which appear in windows without menus may not
	  be. So Cut/Copy/Paste in textfields always use Cntl-X/C/V rather than Cmd-X/C/V.
	  Fix this.
	<LI>
	  Add a resource to let the user set the background color of selected glyphs
	  in the fontview. Then Alexey wanted a way to set the foreground color of
	  selected glyphs.
	<LI>
	  Points could be snapped to a wrong edge of a non-ghost stem controlling a
	  blue zone.
	<LI>
	  Put in code to complain when a font contains a hint mask with bits set indicative
	  of hints which have not been defined.
	<LI>
	  When generating random text for a font in the print dlg, FF would alocate
	  one character to few and trample memory.
	<LI>
	  Prefs file was treating hvoffset as a float rather than an int.
	<LI>
	  Patch by Michal to allow user control over whether points are snapped to
	  pixels in charview, or whether we get sub-pixel positioning (and fuzzy lines).
	<LI>
	  Markers for lines/curves which are almost, but not quite, horizontal or vertical.
	<LI>
	  The french translation of the Unicode Names List database changed encodings
	  from latin1 to utf8 when they came out with version 5.0, and I didn't notice.
	<LI>
	  Alexej provides some new preferences for truetype hinting:
	  <UL>
	    <LI>
	      InstructDiagonalStems -- Generate instructions for diagonal stem hints
	    <LI>
	      InstructSerifs -- Try to detect serifs and other elements protruding from
	      base stems and generate instructions for them.
	    <LI>
	      InstructBallTerminals -- Generate instructions for ball terminals
	    <LI>
	      InterpolateStrongPoints-- Interpolate between stem edges some important points,
	      not affected by other instructions.
	    <LI>
	      CounterControl -- Make sure similar or equal counters remain the same in
	      gridfitted outlines. Enabling this option may result in glyph advance widths
	      being inconsistently scaled at some PPEMs
	  </UL>
	<LI>
	  Many problems when numbering points in glyphs with references.
	<LI>
	  Back in Feb, Werner gave me clear instructions on how to handle fonts where
	  bit one of 'head'.flags was unset. I did something I thought was equivalent,
	  but which wasn't. The result broke some glyphs in the "Vista fonts". Let's
	  try doing what he said to do instead.
	<LI>
	  Autoinstructor: some fixes to strong point optimizer.
	<LI>
	  Old bug still exists for monospaced fonts. Glyphs were positioned at 65,000+
	  rather than with a negative left side bearing.
	<LI>
	  Autoinstructor: some points didn't really need to be touched by 'strong point'
	  interpolation.
	<LI>
	  Be a little more careful about TeX pk and gf files in the openfont dlg. Alexej
	  points out that .*gf also matches .xgf.
	<LI>
	  It used to be that when we changed glyphs in a charview we would turn off
	  gridfit. Now it will simply refigure gridfit info for the new glyph.
	<LI>
	  Make it so that moving a point around will not turn off grid fit.
	<LI>
	  Andy Balholm points out that Help-&gt;Help often fails on the mac because
	  DYLD_LIBARY_PATH points to /sw/lib which often contains libjpeg.so which
	  conflicts with apple's libjpeg.so which means oascript doesn't work to invoke
	  things. Undefine it before trying to open the help file.
	<LI>
	  make acorn2sfd work again.
	<LI>
	  When an svg font specified kerning with more than one glyph name in glyph1
	  or 2 then ff would create a kerning by class thing ... except it didn't do
	  any of the checking needed to insure that we were given a valid set of glyph
	  classes, and so generally produced garbage. Just make lots of kern pairs.
	<LI>
	  When processing svg arc commands (in a path) we could get rounding errors
	  that lead to NANs. Clip the range so that doesn't happen.
	<LI>
	  Add font.importBitmaps to python scripting.
	<LI>
	  the cli argument "--library-status" was broken.
	<LI>
	  A couple of important textfields were not using an input context and were
	  limited to ASCII (probably) when they should not have been. Font Comment,
	  lookup name, etc.
      </UL>
    <LI>
      27-Sept-2008
      <UL>
	<LI>
	  Implement a concept of "master counters" (similar to PS counter hints, but
	  more flexibe). I. e. if there are two or more equal or similar counters in
	  the glyph, then references pointing to stems forming the first counter are
	  added to stems forming the subsequent counters. This can be used to implement
	  a sort of counter control in the autoinstructor.
	  <P>
	  Adjust the width to length ratio used to determine if a diagonal stem is
	  acceptable.
	<LI>
	  There appears to be (what I consider to be) a bug in scim. If the Mod2Mask
	  bit is set in the event then it returns a keysym of 0. Other input managers
	  do not do this. And some input managers depend on having that bit set (it
	  is used on the Mac for Option processing for example). The upshot is that
	  if I want to do mnemonics (Alt/Meta key sets Mod2Mask) I must clear this
	  bit when passing info to scim. Since I don't know what input manager is attached
	  I must clear the bit for all managers. Which breaks some of them.
	<LI>
	  When doing completion in a textfield, if ff completed the entire string,
	  then it would not select the unexpected stuff. The result would be that I
	  would type "a", then "." and ff would complete to "a.sc" (rather than
	  "a.<FONT COLOR="Blue">sc</FONT>") so when I typed the "s" I would get "a.scs"
	  rather than "a.s<FONT COLOR="Blue">c</FONT>".
	<LI>
	  Add code to allow users to customize the font used in various dialogs and
	  windows which previously could not be customized.
	<LI>
	  Multiple Master dlg was very broken.
	<LI>
	  Saving and Reading quadradic splines to the 'PfEd'.'layr' subtable didn't
	  work.
	  <P>
	  Also if we didn't save the background layer (layer=0) then a random layer
	  would (inappropriately) become the background.
	  <P>
	  Extend the 'layr' format to store a background/foreground flag per layer.
	<LI>
	  Still problems in importing lookups on 64bit machines.
	<LI>
	  A <A HREF="http://typophile.com/node/49550">thread on typophile</A> exposes
	  my ignorance. The x-height of an italic font is usually a little less than
	  that of it's companion roman font. (This is to correct for an optical illusion,
	  because vertical stems are slanted in italic they will be longer than the
	  corresponding stem in an upright font, and to the human eye they will look
	  taller (even though they are not)). So add an option to the Italic dialog
	  to make the x-height a little smaller.
	<LI>
	  Change the menu handler so it can draw mac menu icons (cloverleaf for command,
	  up arrow for shift, ^ for control and weird squiggly for option).<BR>
	  <IMG SRC="MenuWithMacIcons.png" WIDTH="104" HEIGHT="38">
	  <IMG SRC="MenuWithoutMacIcons.png" WIDTH="125" HEIGHT="38">
	  <P>
	  Remove the hack that if the modifier mask for the command key was set then
	  we'd also set the control mask (this meant that the command key would work
	  as control, but it meant it could only work as control).
	  <P>
	  Let the command key work as itself, and put in special code to check whether
	  X11 is going to give us the command key (or will that key be used in the
	  X11's own menubar). If we get command then we load a special set of keymap
	  bindings (which, presumably, will use command). If we don't find a special
	  set of keymaps, then fall back on normal processing.
	<LI>
	  Make the pixelsize in anchor control be saved in prefs file (clean up prefs
	  file for scripting, bring up to date).
	<LI>
	  We didn't have any way to remove an sfnt table (like 'fpgm') even though
	  we tell the user to do exactly that in the auto instructor.
	<LI>
	  Was not allocating enough memory for comments in the cvt table structure
	  when user did a [Change Length].
	<LI>
	  Patch by Thomas ?. When FF loaded a ufo font (actually any glyf file) it
	  used integers for the coordinates instead of reals.
	<LI>
	  We used to move left and right point coordinates to the baseline for italic
	  stems, so that they may well fall outside of the glyph bounding box. So prevent
	  the situation where this could lead to a nan in spline creation. Also don't
	  change the slope of italic stems when resizing a glyph.
	<LI>
	  Clear should only clear anchors, hints and tt instructions if it is the last
	  foreground layer. We could get picky and clear hints when the last cubic
	  foreground layer went, and instructions whent he last quadratic layer went,
	  but I don't think it is worth the bother.
	<LI>
	  If we have a 'TYP1' sfnt with a kern table which kerns a glyph with no unicode
	  encoding, then FF would likely crash.
	<LI>
	  Oops. Typo in Generic change function. Crashed when doing change glyph on
	  a glyph with only references
	<LI>
	  Just as the paste command should only set the width in foreground layers
	  if all other foreground layers are empty, so the clear command should only
	  reset the width in similar conditions.
	<LI>
	  Internal conversion from fontforge splinesets to ff python contours would
	  often leave interpolated points showing in the contour.
	<LI>
	  When FF generated a default name for a lookup when adding a new lookup from
	  font info, that lookup index was always set to 0, which meant multiple lookups
	  for the same feature would stand a good chance of getting the same default
	  name. Do a little better.
	<LI>
	  Extend the small caps dlg to create petite caps if desired.
	<LI>
	  Fix an uninitialized variable in GXDrawGrabSelection.
	<LI>
	  FF would attach a mark to the first anchor point in the correct subtable
	  in the base glyph. It would not check for the correct anchor class.
	<LI>
	  Python contour conversions would often introduce a control point on a linear
	  order2 spline.
	<LI>
	  List of Panose letterforms was missing an entry from the middle so all later
	  entries were off by one.
	<LI>
	  "Fore" and "Back" weren't localized in one significant place.
	<LI>
	  Add a few more checks (when reading in) on the validity of the 'MATH' table.
	<LI>
	  FF would generate a bad MATH table if given a glyph with assembly data but
	  no variant sizes.
	<LI>
	  Dropping a drag and drop into the metricsview after the last character tried
	  to insert the drop before the first character.
	  <P>
	  Clean up drag and drop from the font view a bit.
	<LI>
	  I have been trying to attach marks to bases backwards. It is the mark which
	  moves, so the attachment should happen when we get to the mark, and we should
	  look backwards to find the base. I have been finding the base, and then walking
	  forward to find the mark.
	  <P>
	  My approach failed if the lookup contains multiple subtables and a base glyph
	  has two marks being attached, one from each subtable -- I would attach the
	  mark in the first subtable, but then having found a subtable that worked
	  would stop, and the second mark never got attached.
	<LI>
	  When dragging and dropping lookups, allow dropping a lookup subtable into
	  a different lookup of the same font (assuming it's got the right lookup type).
	<LI>
	  The recent patch to insure that [Imported] lookups from one font to another
	  came across in the right order didn't work if there were nested lookups involved.
	  The order of nested lookups is irrelevant -- unless they are also used in
	  a non-nested context.
	<LI>
	  Add the ability to define a "Group" by glyph color.
      </UL>
    <LI>
      28-August-2008
      <UL>
	<LI>
	  The Layers pane of Font Info randomly wrote memory when it was initialize.
	  This could cause crashes, and who knows what weird behavior.
	<LI>
	  Validate spent half its time validating the foreground layer and half validating
	  the current layer. This could cause crashes if the current layer was not
	  the foreground.
	<LI>
	  Fixed a bug in parsing old style CID files. (those with type1 charstrings)
	<LI>
	  FontForge's OpenType layout engine probably didn't do the right thing in
	  anchor positioning of mark-to-base lookups when the base glyph had been moved
	  by a previous GPOS lookup.
	<LI>
	  Still missing some unicode ranges from 5.1.
      </UL>
    <LI>
      25-August-2008
      <UL>
	<LI>
	  Turn off debugging if the user switches layers.
	<LI>
	  The truetype debugger really wanted to debug the foreground layer and not
	  any other.
	<LI>
	  When validating a font, and double clicking to bring up find problems in
	  a charview, then the layer setting of find problems was (usually) incorrect.
	<LI>
	  Add a command font.correctReferences() to python scripting to fixup cases
	  of mixed outlines and references (outlines get moved into a newly created
	  glyph and then a reference will be made to it). Also fix cases where the
	  transformation matrix can't be expressed in truetype (scaling by 2 or more,
	  for example).
	<LI>
	  Barry points out a typo introduced in the background layers patch which would
	  cause crashes in fonts with many layers.
	<LI>
	  Minor improvements and bugfixes in resolving stem conflicts. Also, lists
	  of HV stems are now built in stemdb.c, so rely on these data instead of doing
	  a double work in autohint.c.
      </UL>
    <LI>
      24-August-2008
      <UL>
	<LI>
	  <TABLE ALIGN="LEFT">
	    <TR>
	      <TD><IMG SRC="FF32.png" WIDTH="32" HEIGHT="32"></TD>
	      <TD><IMG SRC="FFsfd32.png" WIDTH="32" HEIGHT="32"></TD>
	    </TR>
	  </TABLE>
	  <P>
	  Changes to create a stub Mac application. Add an apple event handler to fontforge
	  so that it will notice when the finder wants it to open files. Add icons,
	  etc. so it will look like a mac app.
	<LI>
	  Make it possible to drag and drop lookups
	  <UL>
	    <LI>
	      from one font info window to another<BR>
	      &nbsp; &nbsp; (copy lookups from one font to another)
	    <LI>
	      within a font info window<BR>
	      &nbsp; &nbsp; (reorder lookups)
	  </UL>
	<LI>
	  Layers can now be marked as either background or foreground.
	  <UL>
	    <LI>
	      Foreground layers may be generated into fonts
	    <LI>
	      Background layers may contain images. Pasting into an empty glyph in a background
	      layer will not set the width. Splines in background layers do not make a
	      glyph worth outputting.
	  </UL>
	<LI>
	  Add a color picker so users can select glyph label colors other than red,
	  cyan, green, etc.
	<LI>
	  Memory problems with references, introduced recently, have been fixed.
	<LI>
	  I hope I'm now getting keysyms right for non-latin menu short cuts.
	<LI>
	  Typo in background layer patch could cause a crash in fonts with many layers.
	<LI>
	  Werner wants an $iscid variable to determine whether a font is a cid-keyed
	  font or not.
	<LI>
	  add font.iscid to python too.
	<LI>
	  python font.cid* variables didn't work, fix them.
	<LI>
	  Add $haspython variable to normal scripting so I can detect if python is
	  available.
	<LI>
	  When pasting a reference into an order2 layer, ff would sometimes miss the
	  fact that the instructions were out of date.
	<LI>
	  Replace with references had the same problem.
	<LI>
	  In scripting, instructions did not get checked for up-to-dateness
	<LI>
	  In the charview, unlink ref only worked on the foreground layer.
	<LI>
	  Patch by Barry (fixed up by me) to fix up open charviews when a layer is
	  added.
	<LI>
	  Barry points out that Contour.round and Layer.round are supposed to have
	  an optional argument, but instead have a required arg.
	<LI>
	  Just as pasting references screws up instructions, so does replace with
	  reference. Do the same thing that we just did to rplref.
	<LI>
	  When scripting without a UI, the char changed routine did not check to see
	  if it should clear the instructions on a change. It now does.
	<LI>
	  Setting device table adjustments from the accent pane of the Math dlg didn't
	  work.
	<LI>
	  File-&gt;Revert File (from the UI) didn't work.
	<LI>
	  If a contextual chaining pos/sub in a sfd file referred to a non-existant
	  lookup we would insert a NULL lookup into a rule. This would cause almost
	  anything that used that lookup to crash. Now, simply remove the sequence/lookup
	  info.
	<LI>
	  When importing lookups we might import a lookup twice if it were nested.
	<LI>
	  When generating bitmaps automatically from a script it was possible that
	  the freetype library got initialized too late and we'd pass a NULL pointer
	  to FT_Memory_Face -- and things would crash.
	<LI>
	  In a quadratic layer of a glyph, when selecting an on-curve point and trying
	  to make it interpolated, if that point had no control points then behavior
	  was odd.
	<LI>
	  didn't create an input context for top level window char and font views.
	  This meant could only use ASCII in menus if the focus were in the top level
	  window (in the scroll bars, or the menu bar.
	<LI>
	  Typo in the code to display side bearings in the charview.
	<LI>
	  FontForge assumed that all anchor classes for a given subtable were in sequence,
	  but Panov has a font where an anchor class for a different subtable appears
	  in the middle of a list of classes for the desired subtable. Result was garbage
	  output, and View-&gt;Show Att crashed.
	<LI>
	  View-&gt;Next/Prev [Def] &amp; Find In Font View don't work in charviews
	  when there are tabs active.
	<LI>
	  R. Sander points out that if you select an ordered set of lookups in one
	  font and import them into another they become disordered. Not good.
	<LI>
	  When pasting into a charview we only set the width if there was nothing in
	  foreground. When pasting into the fontview we always set the width because
	  we were clearing the foreground before we pasted (unless we did paste into
	  -- then we didn't set the width).
	  <P>
	  With layers that should all change. We should only set the width if there
	  is nothing in any of the potential foreground layers. Don't count the background
	  layers or the grid psuedo layer. Don't count open contours (might be a secondary
	  guide line layer or something). If we're going to clear a layer before pasting
	  (normal behavior in fontview) then don't count the layer cleared.
	<LI>
	  Add several different behavior patterms for the metrics view. Users complain
	  that the current multi-functional window is confusing and would prefer a
	  view which only does kerning, or only sets the advance widths, etc.
	<LI>
	  Due to a typo, merging two splinesets at a curve point generally left the
	  point marked with default adjustment enabled on its control points.
	<LI>
	  Another layers problem. Only in the foreground layer could anchor points
	  be moved.
	<LI>
	  Python glyph.unlinkReference command didn't work.
	<LI>
	  My intent was that ligature carets positioned at 0 didn't count (0 isn't
	  meaningful -- a ligature with a zero-width first component?) but that only
	  got implemented for 'lcar' table not for 'GDEF'. So fix that.
	  <P>
	  Also allow the user to specify exactly how many ligature carets s/he wants
	  rather than just setting a minimum bound.
	  <P>
	  Also 'lcar' (Apple) output was broken.
	  <P>
	  Also neither AAT nor OpenType supports negative lig carets, so if the user
	  drags a lig caret line negative, have it stick at 0.
	<LI>
	  Moving ligature carets always marked for an undo in the foreground layer.
	  Register the movement in the layer in which it happens.
	<LI>
	  When placing an accent glyph about which we know nothing, assume it should
	  be centered on top.
	<LI>
	  Change sfd.c so that it will treat the sequence "backslash newline" as no
	  characters on input (er, except in ASCII85 input). And so that it thinks
	  it can parse version 4 or the sfd format.
	  <P>
	  We don't generate version 4 yet, and we won't for a while. Version 4 will
	  include the ability to insert backslash newline into long lines. This is
	  so we can conform to the internet requirements of fewer than 990 bytes on
	  a line. And the delay is so that people don't scream at me for making an
	  incompatible change to the format -- if I give the parser time to perculate
	  through the user community, with luck no one will even notice -- especially
	  as long lines are rare.
	<LI>
	  Selections/Clipboard didn't work in textfields on 64bit intel. There seems
	  to be a bug in the 64bit Xlib which doesn't transfer 32 bit quantities properly.
	  I was passing unicode strings as 32bit UCS4, but UTF8 will work just fine
	  instead.
	<LI>
	  Add the ability to clear all device tables associated with a kerning by classes
	  table. (Needed because of a bug which introduced garbage).
	<LI>
	  We didn't think we could read in a kerning subtable (class or pair) with
	  device tables, so we converted them to pst data. We can read them in in optimized
	  form and we should do so.
	<LI>
	  Alexej points out that if a glyph has "instructions_out_of_date" set on it,
	  then setting the instructions via a script should clear the bit -- but didn't.
	<LI>
	  Werner points out that if a type2 charstring contained a sequence
	  &lt;num&gt; endchar then ff would set the width of the charater even if the
	  the width had already been set. Width can only be set on first stack clearing
	  operation, any extra params on subsequent calls get ignored.
	  <P>
	  Actually it's worse than that, the spec says that if there are too many things
	  on the stack then start parsing the stack from the unexpected end.
	  <P>
	  Adobe have admitted that the obvious reading of their spec is incorrect (they
	  can't quite bring themselves to say the spec is wrong). So revert some of
	  the way we were parsing type2 charstrings.
	<LI>
	  Barry complains that when building ff does not apply the ".cap" suffix when
	  using inverted breve.
	<LI>
	  Valgrind finds a bug in drawing non-BMP characters in the metrics view.
	<LI>
	  Alexej would like to be able to manipulate non-unicode glyphs with the text
	  field of the metrics view. The textfield used to map all non-unicode code
	  points to 0xfffd, but if the font doesn't make use of the supplementary private
	  use areas (planes 15&amp;16) then create a mapping from the font into these
	  areas so that we can represent non-unicode glyphs as funky private use glyphs.
	  <P>
	  (Only do this if font doesn't use these areas).
	<LI>
	  Alexej points out that in non-foreground quadratic fonts the "Points-&gt;Dont
	  Interpolate" command doesn't do anything.
	  <P>
	  Fix a couple of other foreground specific things too.
	<LI>
	  Barry points out that setting a glyph's anchorPoints from python does not
	  mark a glyph as changed nor force an update.
	<LI>
	  Autoinstructor: large patch from Alexey:
	  <UL>
	    <LI>
	      handlles conflicting H/V stems much better;
	    <LI>
	      tries to place HStems between blues better;
	    <LI>
	      adds optional apparatus for instructing serifs;
	    <LI>
	      relies on generic point-to-stem snapping routines from stemdb.c;
	    <LI>
	      needs FPGM changed (older FF's glyph programs should still work, but FPGMs
	      need updating!).
	  </UL>
	<LI>
	  If the user has opened a backup sfd file (one that ends in .sfd~) and does
	  a save on it, then pop up a save as dlg instead of blindly saving it. Saving
	  it back to the backup is probably wrong, yet saving it onto the non-backup
	  version without prompting the user is questionable.
	<LI>
	  glyph.appendAccents didn't mark the glyph as changed nor did it force an
	  update.
	<LI>
	  Barry wants a way to control the use_my_metrics bit of a reference from
	  python.<BR>
	  Give him a hack<BR>
	  glyph.useRefsMetrics(name[,set])
	<LI>
	  Add a glyph.appendAccent() command.
	<LI>
	  Ralf from end-if.de points out that when trying to change the kerning between
	  two glyphs which have a kern class setting of 0, then ff keeps asking the
	  same question several times before a non-zero value is entered. (once when
	  the field is clicked in, once when a minus sign is typed, and once more when
	  a number is entered).
	<LI>
	  The python stuff won't compile under cygwin because it used pointers to stuff
	  in shared libraries as initializers of static variables. It seems windows
	  can't handle that. This patch should provide a work around.
	<LI>
	  Add a font.importLookups (from another font) function to python scripting.
	<LI>
	  When joining two splinesets (during glyph editing) we didn't pay attention
	  to any user settings for the control points, and we'd just always refigure
	  default control points. Now use user specified directions when possible.
	<LI>
	  Add a problem (Find Problems) which will look through all glyphs for those
	  with both contours and references, and which will create a new glyph to contain
	  the contours and make a reference to it in the original.
	  <P>
	  Do something similar for bad transformation matrices (those with members
	  2 or more (or less than -2)).
	<LI>
	  Importing a kerning class from one font to another (and perhaps merging fonts)
	  could cause memory problems if the number of second classes were bigger than
	  the number of first classes.
	<LI>
	  Retain sizes of bitmap and metrics views. People seem to like this even if
	  I don't.
	<LI>
	  Still problems with the guide lines layer
	  <OL>
	    <LI>
	      Displaying a point read bad memory (probably harmless, might cause visual
	      artifacts).
	    <LI>
	      Edit-&gt;Undo in guide layer trampled memory.
	  </OL>
	<LI>
	  Find Problems would occasionally pop up a blank problem dlg.
	<LI>
	  Only show points of inflection in the active layer.
	<LI>
	  If a glyph window were displaying something other than the foreground layer
	  then changes in that window would not be reflected in dependant glyph windows
	  (a change to tilde didn't show in atilde) nor in the fontview.
	<LI>
	  In a cubic glyph with references, turning on point numbering did not renumber
	  the references. They seem to be numbered for TrueType. Not sure where that
	  comes from.
	<LI>
	  Alexey points out that after deleting the active layer, ff does not update
	  the internal bitmap font it used to display glyphs in the font view.
	<LI>
	  Make "-lang ff" work for "-lang=ff", it's more consistent with the rest of
	  the arguments.
	<LI>
	  Add a -unique argument which means that FF checks to see if another fontforge
	  is running on the current screen. If no other fontforge exists things proceed
	  normally, but if there is another, then we send it our arguments and ask
	  it to open them, and then we exit.
	<LI>
	  Make the OFLib dialog have an option to download a preview when you click
	  on a line (rather than requiring you press the [Preview] button for each).
	<LI>
	  The BitmapsAvail and BitmapsRegen scripting functions were broken by the
	  layers patch (they generated bitmaps of whatever was in the background layer).
	<LI>
	  Put in some checks to warn the user when a 'kern' table subtable uses more
	  than 10920 pairs.
	<LI>
	  Give the user one of those "This operation cannot be undone" warnings when
	  deleting a layer in Font Info. (Similar warning about instructions if user
	  changes last quadratic layer(s) to cubic without deleting any).
	<LI>
	  When deleting the last quadratic layer, delete the tt instructions also.
	<LI>
	  When deleting a layer from a font, ff very carefully went through all open
	  glyph views to make sure none was looking at the layer being deleted (and
	  fixing them up if they were) -- but it totally ignored the font views. Their
	  layers needed to be updated too. And the metrics views.
	<LI>
	  The Import menu item in Font Info-&gt;Lookups popup menu was always enabled.
	  It should not have been.
	<LI>
	  Add menu items in Font Info-&gt;Lookups (popup menu) to do a global add/remove
	  language from a specified script in all selected lookups.
	<LI>
	  Get Info (maybe a few other things) didn't work on a selected reference which
	  wasn't in the foreground layer.
	<LI>
	  Copy/Paste of references only worked well in foreground layer.
	<LI>
	  Only in the foreground layer was it possible to select a reference by clicking
	  on it.
	<LI>
	  Snapping to blues was broken due to a typo in the code.
	<LI>
	  Still were a number of places where behavior depended on the spline order
	  in the foreground layer:
	  <UL>
	    <LI>
	      Could only debug a glyph if the foreground layer were quadratic
	    <LI>
	      Show gridfit used some point numbers from the foreground layer and some from
	      the layer being shown.
	    <LI>
	      Gridfit didn't change when changing layers.
	  </UL>
	<LI>
	  Peter Lunicks points out that a tooltip in the prefs dlg actually was for
	  a different preference item.
      </UL>
    <LI>
      20-July-2008
      <UL>
	<LI>
	  Updated Russian UI
	<LI>
	  Updated Simplified Chinese UI
	<LI>
	  Small Caps dialog greatly rewritten and merged into the sub/superscript dialog
	  and a new change glyph dialog.
	<LI>
	  Alexey Kryukov makes Small Caps and friends deal with diagonal stems.
	<LI>
	  Update the upload mechanism to OFLib to send a preview image, license text
	  (if specified in our database) and fontlog (again, if in our database). Currently
	  OFLib throws away both the license info and the fontlog, but I hope they
	  will fix that in time.
	<LI>
	  Add a dialog to browse fonts on the OFLib.
	<LI>
	  Fix some bugs in feature file generation of contextual chaining lookups which
	  refer to marks. Note these are not supported in the spec. This is a FontForge
	  only extension.
	<LI>
	  If a script contain no default language features (but did contain some languages)
	  then ff produced a garbage script table for GPOS/GSUB.
	<LI>
	  A number of Dialogs still did not autosize themselves for different languages
	  Create Hints, Kern (Anchor) Pair, Review Hints.
	<LI>
	  Still places where ff uses the foreground layer rather than the current layer
	  to determine if a glyph is quadratic.
	<LI>
	  On systems using different font metrics, the debug pane looks bad with the
	  buttons partly covered by the instruction pane. If the font is large, and
	  the cvt dlg empty, then I'm told ff complains.
	<LI>
	  Barry points out that Add Encoding Slots scrolls to the wrong place.
	<LI>
	  Adding glyphs in compacted encodings caused problems.
	<LI>
	  When the user resizes the outline glyph window, retain that size and use
	  it for the default size of subsequent invocations of the window.
	<LI>
	  It used to be that whenever ff opened an sfd file then all subsequent new
	  fonts (or fonts opened from real font files) would be displayed in windows
	  the same size as the one requested in the sfd file. Only set the window size
	  preference when the user explicitly changes it, not upon openning something
	  with a different setting.
	<LI>
	  In a CID-keyed font, when opening an empty CID slot, ff could trample memory.
	<LI>
	  BlueFuzz support for autohinter and metafont.
	<LI>
	  Add some checks to make sure that we can survive bad font data without crashing.
	<LI>
	  When trying to change kerning between the last two glyphs in the metrics
	  view using the text field (rather than dragging the line) then the textfield
	  would change, but the kerning would not.
	<LI>
	  In the metrics view, give the user several options about the grid (which
	  shows the advance widths of the glyphs)
	  <UL>
	    <LI>
	      hidden
	    <LI>
	      fully displayed
	    <LI>
	      small lines at the top and bottom of the pane
	    <LI>
	      fully displayed except when the user is adjusting kerning or the advance
	      width, etc. When adjusting grid vanishes until user releases the mouse button.
	  </UL>
	  <P>
	  (setting is sticky).
	<LI>
	  Allow the user to customize the colors in the metrics view.
	<LI>
	  In the metrics view (or in the print display dlg) when glyphs are overlapping
	  (e asier to see when glyphs are large) then the places where one glyph ends
	  and another begins often have a faint halo of lighter pixels. Try to improve
	  things and make these joins be more uniform in color.
	<LI>
	  Add minimal support for alpha channels (treat them as a bitmask for transparent).
	<LI>
	  I find it really hard to believe that this is an error, but I have a second
	  hand report that MicroSoft claims that it is. To me making it erroneous is
	  pointless and annoying, but I don't write the spec. <BR>
	  Add to Find Problems and Validate a check to see that if a base glyph (or
	  mark) contains an anchor point in one anchor class in a lookup subtable,
	  then it must have anchor points for ALL anchor classes in that subtable.
	<LI>
	  Fontimage would crash if asked to process a font with glyphs not in BMP.
	  Make fontimage better about fonts which contain no standard scripts (Apostolos's
	  Phaistos font).
	<LI>
	  A few tweaks to make stemdb.c usable for resizing glyphs and stem control.
	<LI>
	  When importing lookups into a font, append the fontname to the lookup name
	  only if there is already a lookup in the new font with the original name.
	<LI>
	  Empty glyphs containing a "." in the name could cause ff to crash when doing
	  or checking to see if it could do a build accented.
	<LI>
	  Gasp editing was broken (still) from the change to the cleartype stuff.
	<LI>
	  Andrey P. would like to see a reference's bounding box in the Element-&gt;Get
	  Info dlg for the reference.
	<LI>
	  Revert glyph had some stray memory references.
	<LI>
	  Add two proposed language tags for IPA use (one for IPA and one for Americanist).
	<LI>
	  In an empty python layer layer.boundingBox should return a tuple of 4 zeros,
	  instead it returned a tuple of 2 zeros and 2 random garbage values.
	<LI>
	  Validate dlg's scrollbar was broken, and you couldn't drag the thumb up to
	  the top (you could get it to the top by other ways).
	<LI>
	  Add a revalidate all menu item to the window to force a reevaluation of the
	  entire font.
	<LI>
	  Add ability to import graphics from a page of a pdf file.
	<LI>
	  Python interface does not catagorize points.
	<LI>
	  The (python) psMat.skew command skewed vertically, rather than horizontally
	  and by the wrong amoung.
	<LI>
	  When doing a font sample from a script which did not set the page width/height
	  explicitly, then ff would use a size of 0 for each. All text drawn was out
	  of the imaging area, lines were too short (as well as invisible), too many
	  pages (all blank).
	<LI>
	  Barry points out that "print" is a python keyword. So font.print() doesn't
	  work. Call it printSample() instead.
	<LI>
	  Freetype now (or in the next release, 2.3.7) supports dropout modes, which
	  means fontforge must do a bit of work when generating rasters for the debugger.
	<LI>
	  Move some logic out of fontimage.pe and into fontforge to make a default
	  string for a font image more widely available.
	<LI>
	  When saving an image fromt the print dlg, the top line was off the top of
	  the image.
	<LI>
	  Interpolated points need not be on integral boundaries, but ff was checking
	  for them. Different problems in validator and find problems, but both wrong.
	<LI>
	  In the point near hint check (find problems), ff was leaving the hint selected.
	<LI>
	  Fix some rounding errors in spline/line intersection.
	<LI>
	  in Font Info, after user pressed [OK] FF set the state of the subscript
	  superscript default checkbox to the panose default checkbox by mistake. This
	  means if the user defined panose and not sub/super garbage would appear in
	  the OS/2 sub/super fields.
	<LI>
	  fontimage didn't get the script right, so features weren't applied properly.
	<LI>
	  More work on conflicting stems.
	<LI>
	  Pressing [Done] in the print dialog would right to a random address on the
	  stack. Depending on what was going on when this was done it could cause a
	  crash.
	<LI>
	  Fix an uninitialized variable introduced by the last change to order2 conversion.
	<LI>
	  Add the ability to open an archive and peek inside it for fonts. Useful if
	  we want to open stuff from the open font library which is often packaged
	  in zip files.
	<LI>
	  Add a new validation check to see if a glyph has non-integral coordinates.
	  Only an error in TrueType (and can't happen when fontlinting a truetype file,
	  but could happen on an sfd file). Add some logic to ask user if they intend
	  to generate truetype in cases where we aren't sure.
	<LI>
	  Add a preference which allows people to change the pixmap dir -- and do what
	  we can to reload images from the new dir. Some old windows may not be updated,
	  but new ones should reflect the new stuff.
	<LI>
	  When ff changed the name of a glyph, it fixed up all the tabs in charviews
	  to the new name -- but in neglected to refresh them. So they still showed
	  on the screen with the old name (until something forced a refresh).
	<LI>
	  The Anchor Class dialog (which lists all anchor classes of a subtable) only
	  let you create an Anchor Control dialog for the first anchor class.
	<LI>
	  Guard (harder) against generating pathological results when converting cubic
	  to quadratic splines.
	<LI>
	  If we had a spline which almost doubled back on itself, sufficiently so that
	  the spline intersector found lots of really close points, which it called
	  intersections, but not sufficiently so that our colinear detector caught
	  it, then we'd generate a ton of intersections, overflow certain arrays, and
	  trash the stack. =&gt; ff would crash. I didn't think this could happen,
	  until someone provided a test case, so put in guards against this.
	<LI>
	  provide python access to
	  <BLOCKQUOTE>
	    glyph.altuni
	  </BLOCKQUOTE>
	  <P>
	  either None, or a tuple of tuples, one sub-tuple for each alternate. each
	  sub-tuple is (alternate-unicode, variation selector (or -1), reserved for
	  future=0 now).
	<LI>
	  Trying to build dieresis with "PreferSpacingAccents" set meant that we tried
	  to build it out of itself, and crashed.
	<LI>
	  Also fix so that 0x22EF (ellipsis variant) is built out of centered dot in
	  a spacing mode, while Ldot uses it in a non-spacing mode.
	<LI>
	  Merge fonts broken again. This time references didn't work.
	<LI>
	  Provide a mechanism for loading image files to make menu item icons (instead
	  of expecting the images to live in memory inside of fontforge). Then provide
	  a bunch of these icons so the menus will look more interesting.
	  <P>
	  Provide some icons
	  <P>
	  Also update the install procedure to put them in the right place.
	  <P>
	  Preference item containing a directory from which to read icon files
	<LI>
	  FF crashed when opening CID keyed fonts with compact_on_open set.
	<LI>
	  If fontforge got an end of file in the middle of reading a (corrupt) cff
	  font, then ff would sit there reading endlessly and ignoring the error.
	<LI>
	  Off by one error in drawing the large "pixel" rectangles that show grid fit
	  generated.
	<LI>
	  Werner points out that my instruction glosses are out of date:
	  <OL>
	    <LI>
	      Was following Apple's docs for SCANTYPE, not MS. MS has a number of new values.
	    <LI>
	      Was using an old convention for accessing PPEM which broke after freetype
	      2.3.5
	    <LI>
	      Added the FreeType return for GETINFO.
	  </OL>
	<LI>
	  Featurefile patch from Barry.
	<LI>
	  I used to think that the max glyph instruction length field of 'maxp' refered
	  to fpgm and prep. I thought this because there was a footnote (which I now
	  see was for a different field) saying the the field also applied to fpgm
	  and prep.
      </UL>
    <LI>
      07-June-2008
      <UL>
	<LI>
	  New Russian translation of the UI
	<LI>
	  Sometimes FF didn't set the message locale directory properly.
	<LI>
	  Since FF will crash if you load a feature file when the Font Info window
	  is open for that font, close the Font Info window when loading a feature
	  file.
	<LI>
	  New <A href="Styles.html#Italic">dialog</A> to help users convert an upright
	  font into an italic one.
	<LI>
	  New <A href="Styles.html#Smallcaps">dialog</A> to help users create small
	  caps glyphs.
	<LI>
	  New <A href="Styles.html#SubSuper">dialog</A> to help users create
	  subscript/superscript glyphs.
	<LI>
	  And matching python commands: font.italicize(), font.addSmallCaps(),
	  layer.stemControl()
	<LI>
	  Make it clear that the transform dlg from the fontview will move the width
	  of a glyph by default, and provide a checkbox so the user can turn this off.
	<LI>
	  Fix various bugs in argument handling of fontforge.askChoices
	<LI>
	  Change font.removeGlyph to accept a single string argument to remove the
	  glyph with that name.
	<LI>
	  FF didn't like decimal points in the metrics view l/r bearing fields -- even
	  though it would put them there itself.
	<LI>
	  Metrics windows weren't being remetricked after a feature file was loaded
	  (nor an afm file for that matter). Nor were they remetricked after lookups
	  changed in fontinfo.
	<LI>
	  Add to python
	  <UL>
	    <LI>
	      font.revert()
	    <LI>
	      font.revertFromBackup()
	    <LI>
	      font.buildOrReplaceAALTFeatures()
	  </UL>
	<LI>
	  Changing a glyph's width from a python script didn't update the metrics window.
	<LI>
	  Adding two languages in the same script to a lookup in a feature file didn't
	  work.
	<LI>
	  It wasn't possible to rename an anchor class (at least not by the obvious
	  method through the dlg). Attempting to delete an anchor class popped up an
	  error message which didn't provide all its own arguments and so could crash
	  on some systems.
	<LI>
	  Better error recovery in feature file parsing.
	<LI>
	  Werner points out that since I allow the user to see points in references
	  transformed to their ultimate position, I should also transform the raster.
	<LI>
	  Patch by Barry to fix kerning classes (ie. figuring out WHAT glyphs go into
	  a class).
	<LI>
	  When parsing a feature file which used a default languagesystem setup, ff
	  only used the most recent script.
	<LI>
	  If a lookup contained no data (no subtables, or empty subtables) then when
	  generating a feature file ff would output stuff to declare a lookup, but
	  when there was no content that frame could not be parsed as it would be
	  impossible to figure out the lookup type. Try to avoid that.
	<LI>
	  FF did not put contextual lookups on all the lists they needed to be on when
	  loading them from a feature file.
	<LI>
	  Sometimes the Open Font dlg opened with the files shifted left so the first
	  characters of the name were outside the window.
	<LI>
	  Patch from Barry Schwartz. "include" syntax in feature files didn't work.
	<LI>
	  Sort button in the lookups pane of font info didn't refresh the window after
	  it finished (so things looked unsorted even after pressing it).
	<LI>
	  When doing a Build Accented on dotted glyphname (agrave.sc, etc.) the accent
	  was positioned using anchors in the undotted base glyph (a rather than a.sc).
	<LI>
	  Fix various problems with tt debugging.
	<LI>
	  The XUID and UniqueID fields of a PostScript font are deprecated, yet FF
	  has continued to output them by default. Make it so FF no longer does so.
	<LI>
	  When outputing an sfd file, ff would sometimes output a truetype spline as
	  a line if it had a colinear control-point. I thought I'd taken care of that,
	  but here's another case which needed fixing.
	<LI>
	  Typo when loading the underline position field from a 'post' table. I was
	  subtracting half the underline width. I should have been adding it instead.
	  (Why did adobe use a different definition of the same concept in two places?
	  GRRR).
	<LI>
	  It wasn't possible to make the foreground layer invisible.
	<LI>
	  When the file chooser bookmark list got too long ff would crash.
	<LI>
	  I wasn't doing the obvious checks to the sfnt header in font lint. So now:
	  <OL>
	    <LI>
	      Check that there are no duplicate table entries
	    <LI>
	      Check that there are no overlapping tables
	    <LI>
	      Check that no tables extend beyond the end of file
	    <LI>
	      Check that the file's checksum is correct
	    <LI>
	      Check that each table's checksum is correct
	    <LI>
	      Check that the number of tables is reasonable and that the binary search
	      header is consistent with the number of tables.
	    <LI>
	      Check that required tables are present
	    <LI>
	      Check that certain fixed length tables have the correct length.
	  </OL>
	<LI>
	  Werner would like to be able to debug (truetype instructions) when using
	  non-square pixels (x_ppem != y_ppem).
	<LI>
	  Barry wants to be able to close a tab. Add a menu item.
	<LI>
	  When a glyph's name changed, I did not update the names in any tabs in the
	  charviews -- so those tabs would stop working after the change.
	<LI>
	  Scrollbar in points debug window wasn't set right.
	<LI>
	  A. Panov provides a patch. Prefs was losing bookmarks.
	<LI>
	  the new release of volt reveals some new opentype tags.
	<LI>
	  If we have a glyph named "agrave.sc" or "eacute.sc" then FF will now let
	  you build this as an accented character. It will remove the suffix from then
	  name, and look up the components of the bare glyph. Then for the first component
	  it will search for a glyph named "a.sc" and insert it. For the accents it
	  will use "grave.sc" if present, and "grave" if it is not.
	<LI>
	  FF wasn't handling a FontMatrix in the top dict of a cid font.
	<LI>
	  Trying to filter for fig files in the Import dlg caused a crash.
	<LI>
	  Check for bad OS/2 versions (that is, versions windows will reject) when
	  loading a font.<BR>
	  Connect validation's "Points too far" with Find Problem's version.<BR>
	  Make fontlint aware of the new validation states.<BR>
	  When generating a font we complained about bad os/2 version only if they
	  asked for a validation. Move it somewhere more prominant.
	<LI>
	  Add two new problems to find
	  <OL>
	    <LI>
	      Points too far apart
	    <LI>
	      Bitmap advance width different from scaled outline advance widths
	  </OL>
	  <P>
	  (also boxify the Find Problems dlg).
	<LI>
	  Add a new validation state: Test that points aren't too far appart (must
	  be within 32767 of each other or we can't output them).
	<LI>
	  Try a little harder to get some of the obscure code pages right in the OS/2
	  table.
	<LI>
	  Was getting the first glyph index of OS/2 wrong for OTF fonts.
	<LI>
	  If an sfnt contains embedded bitmaps, and if those bitmaps contain a glyph
	  whose advance width is different from that expected by scaling the horizontal
	  advance of the vector data, then windows will only get the correct metrics
	  if the "Instructions modify width" bit is set in the 'head'.flags field.
	<LI>
	  If the "changedsincelasthinted" bit got set on a glyph by the unlink/remove
	  overlap flag on a glyph during font saving, then the glyph did not get restored
	  to its original state.
	<LI>
	  Doing an Undo in the Guidelines layer didn't work, usually crashed.
	<LI>
	  Validate didn't work on CID keyed fonts.
      </UL>
    <LI>
      29-Apr-2008
      <UL>
	<LI>
	  Validate didn't work in CID keyed fonts.
	<LI>
	  Pierre Hanser wants an X Resource (fontforge.CharView.Rulers.FontSize) to
	  specify the font size of text displayed in the info line and the rulers.
	  I have applied his patch, but have made no effort to insure that text will
	  fit in the space allowed for it.
	<LI>
	  Hmm. Freetype seems to dislike rasterizing some complex outlines at large
	  pixelsizes in black and white, but seems fine with doing them in greyscale.
	<LI>
	  When opening a ttc file (and posting a dlg which lists all the fonts in the
	  file) try to find a fontname in the current locale. We used to look first
	  for English and then anything. Now try: First current locale, then english,
	  then anything.
	<LI>
	  Make the Open Font dlg (and similar file chooser dlgs) be customizable, and
	  store that info in prefs. Specifically control whether directories are displayed
	  in alphabetical order among other files, before normal files, or in a separate
	  pane.
	  <P>
	  Also add a bookmark (and back/forward) mechanism.
	<LI>
	  Add support for opening a font from http &amp; ftp URLs. Can browse ftp URLs,
	  and save fonts back to ftp.<BR>
	  <CODE>$ fontforge
	  http://openfontlibrary.org/people/Nasenbaer/Nasenbaer_-_Widelands.ttf</CODE>
	<LI>
	  The validation patch broke the save mac family dialog, and then the upload
	  to open font library broke it further.
	<LI>
	  When doing expand stroke, it is possible to have two points so close together
	  that there is no data on the curve in between the two. If this happens
	  ApproximateFromPointsSlopes can't do a good job. So be careful of this case.
	<LI>
	  Layers change introduced a potential crash in the Embolden command.
	<LI>
	  fontimage didn't draw the first line.<BR>
	  Add a cgi front end to <A HREF="fontimage.html">fontimage</A> so now it is
	  possible to get a font sample of any font on my website.
	<LI>
	  In the Display dlg, if you changed the font, or the point size without selecting
	  something, then that change would vanish instantly. Fix that.
	  <P>
	  Also, was a crash bug when mixing a font with a baseline table and a font
	  without one (in the disply dlg).
	<LI>
	  Add a command to insert text into a glyph. (<CODE>Element-&gt;Insert Text
	  Outlines)</CODE> It adds the text outlines directly (instead of a draw command
	  using another font) because most fonts can't include text drawing in their
	  glyphs. Also include a Bind to Path variant.
	<LI>
	  GLyph lists in kerning classes (in show att) were displayed as ligatures.
	<LI>
	  Upgrade to unicode 5.1
	<LI>
	  If an sfd file were saved with spiros active, and then loaded into a version
	  of fontforge without libspiro, then bad things would happen. Whenever we
	  check that spiros are active also check that they can be active, and add
	  some warnings for the user to let him/her know that spiros aren't available.
	<LI>
	  Add a tile pattern command (if --enable-tile-path) this allows the user to
	  replicate any given pattern in another glyph.
	  <P>
	  This could be used to produce a grid of guidelines, or, in conjunction with
	  <CODE>Element-&gt;Overlap-&gt;Intersec</CODE>t it could provide a poor man's
	  "Pattern Fill" (Since Pattern fills are only available in type3 fonts this
	  sort of makes them work for any font type).
      </UL>
    <LI>
      30-Mar-2008
      <UL>
	<LI>
	  Add support for the OpenType 'BASE' table, and to a lesser extent for Apple's
	  'bsln' table.
	  <P>
	  Add python scripting (font.horizontalBaseline, font.verticalBaseline) too.
	  <P>
	  Add support under Show ATT.
	  <P>
	  Remove the old vertical origin field.
	<LI>
	  Add the ability to create a dummy 'DSIG' table (one containing no signatures)
	  so that Windows will show an opentype icon for a font with extension 'ttf'
	<LI>
	  Add support for gradient and pattern fills to type3 fonts (only if
	  <CODE>./configure --enable-type3</CODE> is specified, of course.
	  <P>
	  Also add support for cliping paths
	  <P>
	  Make fonts containing images work in pdf output.
	<LI>
	  Bump the sfd version number. This should have happened in the last release,
	  but I didn't realize it was needed then, thus there will be sfd files with
	  an incorrect version number (2) when it should be 3. However that should
	  not cause the current parser problems.
	<LI>
	  New Greek translation from Apostolos
	<LI>
	  Updated Polish translation from Michal
	<LI>
	  Apostolos points out that compiling on systems without freetype (Solaris
	  boxes) was broken after last months layers patch.
	<LI>
	  Werner suggested various improvements to Show ATT:
	  <UL>
	    <LI>
	      Lookups should be sorted
	    <LI>
	      Glyph images should be drawn in more cases (before, just for substitutions)
	  </UL>
	<LI>
	  Patch from Alexey, for better handling conflicts between diagonal and H/V
	  stems.
	<LI>
	  Do a more consistent job of handlong curved stem segments. Also collect point
	  data for off-curve points too (may be useful in future for TTF hinting).
	<LI>
	  Last month I put in a patch to make sure the lsb as stored in the 'hmtx'
	  table was really the glyph's lsb if bit 1 of the head.flags field were set.
	  Unfortunately I read in the lsb as an unsigned number which shifted negative
	  lsbs off to around 65535. FF sometimes refused to rasterize them. Of course
	  when the font was generated they got truncated back to negatives in the output.
	<LI>
	  Add a preference item so that fonts will be automagically compacted when
	  they are opened.
	<LI>
	  Add a new preference item (SeekCharacter) to allow users to control which
	  character will be displayed when opening a new font. Normally FontForge displays
	  'A', but that's a bit latin-alphabet-centric.
	<LI>
	  If palettes were not docked, the a complicated series of events could lead
	  to a crash after closing a TilePath (Math kerning, Gradient Fill, etc.) dialog.
	<LI>
	  Was not outputting the %%LanguageLevel DSC comment.
	<LI>
	  Generating a CID-keyed otf font was broken by the layers patch. (Only the
	  background layer was output).
	<LI>
	  Encoding-&gt;Add Encoding Slots didn't work for CID-keyed fonts.
	<LI>
	  Autoinstructor does more consistent vertical stem placement for mono and
	  grayscale. Advance width scales much better. One downside: letters tend to
	  'glue' at small ppems.
	<LI>
	  When FF read in a pairwise positioning lookup with no change to the pos of
	  the first glyph, and an x change to the second glyph it treated that as a
	  r2l kern pair even if the lookup was l2r. This lead to problems.
	<LI>
	  In the Print/Display window all vertical GPOS positioning was diametrically
	  opposed to the direction it should have gone (there was a sign error).
	<LI>
	  Print managed to break itself somehow. Print of a font display to ps file
	  (or was it pdf) didn't work. Type3 pdf fonts were broken, last glyph omitted.
	<LI>
	  In the fontview the horizontal advance and baseline metrics lines were drawn
	  as if bitmap magnification were 1 (so if bitmap mag&gt;1 they were in the
	  wrong place).
	<LI>
	  In the char view, when the active tool is the scale tool, show the scale
	  factors on the info line.
	<LI>
	  The default set for control points of a corner point before/after an hv curve
	  point was to have no control point. Make it be the same as a normal curve.
	<LI>
	  layers patch broke type3 editing in that: in a type3 font glyphs don't have
	  the same number of layers so it is possible to move from one glyph to another
	  in the char view and have the current layer become invalid.
      </UL>
  </UL>
  <P>
  <A HREF="oldchangelog.html">Earlier Changes </A><BR>
  <A HREF="pfaeditchangelog.html">Changes to PfaEdit (predecessor to
  FontForge)</A><BR>
  <A HREF="sfdchangelog.html">Changes to the sfd format.</A>
</DIV>
</BODY></HTML>