# Changes (Enhancements & Bug Fixes)

- 29-May-2004
  - The MergeKern scripting command didn't have the capabilities of its menu counterpart.
  - Enhance the pattern matching capabilities on font names when loading kerning information from a mac FOND (there is no place in the FOND that names the styles, so best we can do is make reasonable guesses).
  - When editing quadratic fonts (truetype), changing the type of a point to be a tangent caused the previous control point to be set the to same location as the next control point. Bleah.
  - New versions of libpng will not automagically load libz when they are loaded. Needed a patch to load libz manually.
  - Fixed a couple of bugs in contextual / chaining dialog.
  - When reading PostScript arrays FF failed to parse negative numbers properly.
  - Make it an error (which it should be) to create a mac postscript resource file without also generating an NFNT.
  - Warn that NFNTs don't work under OS/X, warn that POST resources are probably depreciated.
  - WinAscent/Descent were being saved incorrectly in sfd files, leading to bad WinAscent/Descent in t/otf OS/2 tables.
  - Crash in ExpandStroke from a NaN when try to intersect parallel lines
  - Improved Merge a little bit for quadratic splines
- 23-May-2004
  - Added popups in the Open Font dialog to show the fontname(s) of any font(s) in a file.
  - FontForge failed to load background images. A bug introduced 24-Feb (part of multi-layer)
  - Reordered the which glyph FF would pick when searching for accents. It used to use ASCII versions of the accents over those in the U+03xx range.
- 20-May-2004
  - Bug in scripting change for mac families.
  - Added a Paste After command (which isn't visible by default) which will allow you to build up words more easily.
- 19-May-2004
  - Give the user access to the OS/2 fields WinAscent and WinDescent.
  - Add a new command (Points->Make Line) which will turn a spline between two selected points into a line.
  - Improve the behavior of defaulting control points so we don't get self-intersecting loops
  - Add a mode to the pointer tool. Holding down the <Alt> key now means we don't join two open contours if they make contact while dragging.
  - When loading an otf file and saving it as ttf, sometimes the space glyph would become zero width.
  - Redid the way mac families were output. Should be more flexible under OS/X
- 9-May-2004
  - Several problems with tfm files. Didn't handle tfms with more that 128 lig/kerns.
  - Failed to set the r2l flag properly in 'morx' tables
  - More typos in the ghost hint code
  - Allow users to express error term of the scripting Simplify command as a fraction.
  - The strings in the context / chaining dlg's initial pane were wrong
  - Fixed some bugs in converting OT contextual substitutions to Mac state machines
  - If we wanted to put a glyph with references into a subroutine (in type1 output) we failed miserably
  - Added a new command Edit->ReplaceWithReference (and a scripting version too), which searches all glyphs in the font for any selected glyphs, and for each embedded occurance it replaces the outlines of the glyph with a reference to it. This is because reading a postscript (type2 or type1) font generally loses all reference information.
  - The documentation for OS/2.winAscent makes no sense. I shall ignore it and set winAscent to hhea.ascent
  - Sivan says that hebrew kerning is broken again.
  - The search dlg didn't work on quadratic (truetype) fonts
- 2-May-2004
  - I've changed the colour of check boxes because people found black confusing
  - FontForge read Italic Correction incorrectly out of tfm files and had minor problems generating tfm files.
  - the kern class dlg had an uninitialized variable (introduced with the multiple master code I think)
  - FontForge would sometimes crash when generating a GDEF table for some types of otf font.
  - Pierre Hanser has updated the french UI, and pointed out some problems with the english UI.
  - In a version of FontForge compiled with MultiLayer on, Pasting something containing a reference screwed up memory
- 25-Apr-2004
  - AutoHint produced ghost hints for curved stems that sometimes were outside of the character.
  - Fixed some uninitialized variables in MetaFont (but the algorthim is still flawed)
  - FontForge had problems when the fontview was maximized.
  - The 18-Apr patch for cubic->quadratic conversion had a bug which generally resulted in a crash.
  - When flickering in and out of compacted mode, during a Generate Fonts, the encodings in the displayed bitmap could get out of sync with those of the font leading to a crash.
  - Don't mess with the control points in point type conversion (corner->curve/tangent) when the they are already reasonable.
  - Allow rectangles and ellipses to have seperate settings of the center out flag.
  - Add a dialog which allows you to specify exactly where rectangles/ellipses should go.
  - Double-clicking on the scale/flap/rotate/skew tool brings up the transform dialog.
  - Add a couple of entries in the transform dlg option menus which copy information from the last ruler measurement.
  - Give the user control over how long the ruler window hangs around.
- 18-Apr-2004
  - Fix a couple of bugs dealing with references in multilayered editing.
  - Uninitialized variable in creation of 'name' table (introduced on 10-Apr)
  - Edit->Merge didn't work properly on quadratic splines
  - LCarets should have ignored the script assigned to them, but they didn't.
  - Put in more protection against bad GSUB/GPOS tables. In particular mangal.ttf has a bad GSUB table (with erroneous class specifications).
  - FontForge wasn't setting `'hhea'.caretSlopeRun` appropriately in italic fonts (should match `tan(italicAngle)`).
  - Oops. Can do much better converting from cubic to quadratic splines. We were getting far too many linear segments.
  - Our cubic->quadratic conversion could generate splines where the endpoints were less than 1 unit apart. Since ttf rounds all coords to ints, this meant we'd get the two endpoints on top of one another.
  - When generating a truetype font from a cubic database, FontForge calculated 'maxp'.maxCompositePoints incorrectly.
  - Gave the user control over when point numbers are visible (even for cubic fonts)
- 10-Apr-2004
  - The flatten commands didn't preserve the ttf 'name' table nor the 'OS/2' table
  - Redid the way 'name' table was generated, hopefully we do better for the mac now.
  - the 'kern' table had a bad rangeShift value (it was the negative of what it should be)
  - Pasting a reference from one font to another could crash if the destination font did not have the refered character.
  - ".null" was appearing twice in the 'post' table when saving a ttf file a second time.
  - Markus Schwarzenberg points out that the ScaleToEm() scripting command didn't work when given a single argument.
  - Pierre Hanser points out that the version fix on 4-Apr had a bug that caused crashes on Macs (perhaps elsewhere).
- 04-Apr-2004
  - Several more fixes for cff output.
  - We had a bad habit of including extraneous hintmask operators in output
  - Add a proper ff version (well, as much as my versions be proper) to postscript/svg output
  - Patch from Kanou about reading format 2 bitmaps in a sfnt
  - Patch from Kanou. MS requires a weird format for GSUB in vertical writing.
- 29-Mar-2004
  - When Type1 output needed to output a reference as inline splines (as opposed to a subroutine call or using a seac command) then it would lose any translation applied to that reference.
  - Patch to Type3 output from R.L.Horn
  - FontForge used to crash when reading in a bdf glyph with a bad bounding box.
  - Reading a kerning class from an sfd file when that class had more second character classes than first character classes would screw up memory and probably cause a crash.
  - Attempting to edit a 'cvt ' table in a font without one caused a crash. Attempting to edit a 'cvt ' table in a font with one showed an empty table.
  - Make scaling from the fontview apply to kerning and positioning data.
  - Drawing a rectangle by dragging from center out didn't work
  - Display phantom points when debugging. Be prepared to find either 2 (horizontal metrics) or 4 (both horizontal or vertical) depending on what version of freetype we've got.
  - Bug in both reading and writing encoding format 0 of cff fonts. I forgot to ignore .notdef so everything was off by 1.
  - If a glyph was used as a reference in another glyph, and we put it in a subroutine (type1 output), and it had hint conflicts, then the first group of hints never got output.
  - In multilayered mode, the Revert Glyph command left memory in a potentially bad state. (If you immediately closed the charview, then nothing bad would happen, but if you tried any editing in it, then nasty things happened.)
- 21-Mar-2004
  - When flattening a CID file fontforge lost track of the script/lang list (and other things) which caused bugs when dealing with substitutions
  - When saving multiply, fontforge could free a fonts hash table several times
  - When flattening by a CMAP file from a script fontforge could crash
  - Added a CIDFlatten command to scripting.
  - The "cleanup of OS/2" on 29-Feb actually broke WinAscent/Descent
  - When loading a mac unicode string from the 'name' table, fontforge failed to convert the language correctly.
  - When loading a mac contextual substitution statemachine, fontforge made egregious errors in guessing to what glyphs were usable for a substitution of the marked glyph.
  - Added the current encoding to the font's window title (also display a flag to show whether the font has been changed)
  - When moving points around on an order2 contour fontforge could end up with bad control points and would then produce annoying internal errors alerting the user to this fact.
  - The CID Flatten commands did not work when the view was compacted.
  - CharInfo had been deliberately disabled in CID fonts
  - Show ATT didn't work with CID keyed fonts
  - The preference mapping between mac and opentype small caps features was wrong.
  - Werner found a strange bug in splinefill that I can't reproduce (and can't understand how it could happen) but the fix appears obvious.
  - Add a command to show what glyphs use the current glyph in a substitution (so "A.swash" would show that "A" used it, and "i" would show that "fi" used it).
  - Changed the extension shown in the Generate Fonts dlg for multiple saves to ".pfb". Put in a %s to make it obvious that more will be added to the name. Support people who want .pfa fonts too.
  - The dialog for adding/editing correspondences between mac feature/settings and opentype features never went away.
  - Disable the Default ATT menu if no char is selected in the fontview.
  - FontForge sometimes had trouble drawing the correct rotated glyph in cid fonts on the display lines of the fontview.
  - Changed the way names used in cidmap files, so there are new cidmap files now.
  - The ShowAtt dialog could overwrite itself if there were enough aats in it. (and at one point the vertical scroll bar was set to the bounds of the horizontal scroll bar)
  - Still getting the windows ascent/descent wrong. This time in CID keyed fonts.
  - Add some new language translations for things like "Bold" (dutch, swedish, norwegian)
  - Dragging and dropping a char from the font view into the char info dlg (to create a substitution) created a crash instead.
  - Support more of postscript in the interpreter
  - Our svg fonts pointed to a not-yet-existing dtd file
  - Support for Apple's distortable fonts (sort of like truetype multi-master fonts)
  - Depressing the control key now makes popups live longer (until the mouse moves).
  - new command in MM menu: Blend to new font
- 2-Mar-2004
  - Changed name from pfaedit to fontforge
- Earlier Changes
- Changes to PfaEdit (predecessor to FontForge)