FontForge Changelog

What's new in FontForge 20230101

Jan 3, 2023
  • Display the block name for reserved code points by @dscorbett in #4934
  • Don't respond to wheel scrolls for buttons/tabsets by @jtanx in #4940
  • gfilechooser.c: fix behaviour when changing file type by @jtanx in #4939
  • Better control-drag handling for line-adjacent points by @skef in #4945
  • Fix resolution of program root by @jtanx in #4956
  • Fix missed nonextcp edit by @skef in #4958
  • Support ToUnicode extraction from PDFs for Type3 fonts by @aidos in #4961
  • Add resource file and Windows application manifest by @jtanx in #4950
  • Fix name extraction for Type3 fonts from pdfs by @aidos in #4960
  • cmake: Install fonttools and pycontrib by @jtojnar in #4941
  • Fix InfoPlist.strings file name. by @MaddTheSane in #4962
  • Fix normalisation of absolute paths by @jtanx in #4963
  • Handle non-array cm transforms while reading graphics stream from PDFs by @aidos in #4965
  • Fix rect extraction from graphics stream for type3 fonts by @aidos in #4967
  • Change which lookup types are suggested for jamo features by @dscorbett in #4994
  • Better line handling in simplify by @skef in #4981
  • Use 'cmap' for Adobe-Identity-0 CID fonts by @dscorbett in #4993
  • Fix ChangeGlyph calcluations relative to new nonext/prevcp conventions by @skef in #4979
  • Docs composite glyph by @skinkie in #4971
  • FVSplineFontPieceMeal: Check that the clut is present before applying conversion by @jtanx in #4999
  • Expand the lists of languages and scripts by @dscorbett in #4982
  • Add flags to Python font.transform() by @skef in #4980
  • Support setting SplineChar width from importOutlines. by @frank-trampe in #5005
  • Undefine "extended" macro temporarily on GNU Hurd by @anthonyfok in #5047
  • Define PATH_MAX and MAXPATHLEN for GNU/Hurd compatibility by @anthonyfok in #5046
  • Fix Ascent & Descent Importing from SVG Font by @GroveDG in #5035
  • Prevent floating point shenanigans in loop termination (fixes #5012) by @skef in #5013
  • GroupFindLPos() in fontforgeexe/groupsdlg.c null pointer fix by @Omnikron13 in #5025
  • Fix drawing outside of expose calls by @jtanx in #4949
  • Fixed one more typo by @MahdiAljazairi in #5055
  • Upgrade GitHub Actions by @cclauss in #5014
  • Prevents memory underflow in GFileMimeType() in gutils/fsys.c by @Omnikron13 in #5018
  • Add a preference for saving editor state by @khaledhosny in #5044
  • splineutil.c: prevent hang on nan input by @jtanx in #5058
  • Shell-quote command sent to compressor in BDF by @ctrlcctrlv in #5060
  • Fix pfadecrypt bugs by @zjw in #5074
  • Include SFDUTF7 functions in libfontforge.so by @ctrlcctrlv in #5078
  • splinefit.c: Improvements to merge/simplify by @Alatius in #5095
  • RFE: [FEAT] When reference to non-existent glyphs are present in an OpenTy… by @rajeeshknambiar in #4097
  • docs: Python scripting - update font.mergeFeature with details of boo… by @rajeeshknambiar in #5107
  • Fix logic for CharString double-movetos after PR 4685 by @skef in #5120
  • Upgrade to Unicode 15.0.0 and fix and expand the script lists by @dscorbett in #5110
  • Fix broken link on scripting page by @bkmgit in #5135
  • Fix typo in man page by @h3xx in #5106
  • Fix painting behaviour of the ruler linger window and layer change dialog by @jtanx in #5163
  • fontinfo.c: fix crash from uninitialised other_pos by @jtanx in #5165
  • tottfgpos: Fix needless warning about 16-bit field by @Finii in #5136
  • ufo.c: emit guidelines key by @jtanx in #5166
  • fvmetrics.c: partial revert of 1033bc6 by @jtanx in #5167
  • Update tranlsations from Crowdin by @jtanx in #5168
  • Fix woff2 decoding by @jtanx in #5160
  • Record unicode cmap encodings when one glyph is in multiple slots by @skef in #4586

New in FontForge 20201107 (Nov 8, 2020)

  • This release falls on the 20th anniversary of the first release of FontForge back in 2000. It brings a wide range of minor tweaks and bug fixes for the user interface and file format handlers and a special splash screen to commemorate the big day.

New in FontForge 20200314 (Mar 16, 2020)

  • FontForge now has much improved stroke expansion functionality. The main change is that it actually works most of the time. New features include support for arbitrary convex nibs and the miter-clip and arc join styles from SVG 2. All functionality is accessible from the Python and native APIs. (By @skef.)
  • Remove overlap handles certain important edge cases better. (By @skef and @frank-trampe.)
  • The Python API now has a function called genericGlyphChange that matches the "Change Glyph" command in the GUI. See #4133 for more details. (By @skef.)
  • The Python API now has functions for getting Unicode script and for interrogating glyph boundaries. (By @ctrlcctrlv.)
  • One can now use text flags (rather than just numerical flags) when opening a font file via the Python API. (By @skef.)
  • UFO import now outputs the note field properly. (By @skef.)
  • SVG import is much more robust. (By @skef.)
  • We have dropped most gnulib and autotools logic in favor of CMake, which dramatically simplifies the build system and just as dramatically improves build time. (By @jtanx.)
  • As part of the switch to CMake, per the deprecation of Python 2, and per the lack of objections to the proposal on the mailing list, we have dropped support for building FontForge with Python 2 support. The non-build-system Python 2 code remains, but it is neither tested nor maintained nor supported and is likely to follow a trajectory of decay and then removal.
  • Documentation is now rendered in Sphinx, which makes maintenance and improvement easier. (By @jtanx.)
  • Translations now happen on crowdin, which makes contributions easier. (By @jtanx.)
  • We got such a contribution for Croatian. (By @milotype.)
  • Character view point coloring is more consistent, and preview fills support transparency. (By @skef.)
  • The user can now move and close tabs in the character view. (By @ctrlcctrlv.)
  • The metrics view now allows for entry of negative kerning values and runs a bit more smoothly. (By @ctrlcctrlv.)
  • There is now a warning when a user is about to discard an unsaved script. (By @ctrlcctrlv.)
  • We fixed bugs all over, as always, with particular attention given to the metrics view, Python, Spiro, and high-resolution displays.

New in FontForge 20190801 (Aug 2, 2019)

  • Along with the usual bugfixes, there have been a couple of new features worth calling out:
  • Added Croatian translation
  • Added user decompositions
  • New graphic for the splash/about screen
  • Images embedded in SFDs are now serialised as PNGs:
  • This is enabled by default, but may be turned off with the 'WritePNGInSFD' option.
  • A new tag is used to identify this mode; 'Image2', instead of 'Image'
  • This requires FontForge to be compiled with libpng support. If not compiled with libpng, FontForge will revert to the old method of serialising RLE encoded raw images.
  • As part of an ongoing effort to clean up the code base, there have additionally been multiple build system changes:
  • Python 2 support is deprecated. It is strongly recommended to build with Python 3 support. Python 2 support will be removed in a future release.
  • Both the Windows and Mac builds are now built with Python 3 instead of Python 2.
  • The minimum supported version for the Mac build is now MacOS Sierra (10.12)
  • FontForge no longer uses gnulib
  • collab support has been removed
  • The build system now expects libuninameslist to be present, and will fail if it is not found. Building without libuninameslist must be explcititly specified using --without-libuninameslist

New in FontForge 20190413 (Apr 15, 2019)

  • This is a bugfix focused release.
  • Most notably, it fixes a crash on MacOS when browsing files.
  • Plugin support and direct http/ftp browsing support has also been removed.

New in FontForge 20190317 (Apr 15, 2019)

  • Complete GDK support, enabled by default on Windows and Macintosh, from @jtanx.
  • Enhanced UFO 3 support, with separate import/export paths for UFO 2 and UFO 3, from @frank-trampe. See the technical bulletin here for more information.
  • Improved feature file support, from @skef and @khaledhosny.
  • WOFF2 support, from @jtanx.
  • Unicode 12.1.0 support, from @JoesCat.
  • Extended Python interfaces, from @skef.

New in FontForge 20170730 (Jan 31, 2018)

  • Incorporates a large number of adjustments and fixes.

New in FontForge 20161004 (Oct 4, 2016)

  • Introduces a new icon set, new functionality for custom icon selection graphics, support for GlyphOrderAndAliasDB files, and support for Unicode 9.0.
  • It also fixes a number of small bugs relating to certain bitmap typefaces, stroke expansion, handling of CID ranges, and the user interface.

New in FontForge 20160404 (Apr 5, 2016)

  • This fixes a number of bugs and crashes and adds a few small features. Most importantly, this release comes with a working Macintosh package.
  • Mac users must be running Mac OS X version 10.10 or later.

New in FontForge 20150824 (Aug 31, 2015)

  • This fixes a few bugs, including some in U. F. O. kerning classes and FreeType rasterization, and adds a Korean translation.
  • Note that, for currently unknown reasons, the Macintosh build published here quits immediately after launching from the Finder. Launch it from the Terminal (/Applications/FontForge.app/Contents/MacOS/FontForge) instead.

New in FontForge 20150430 (May 4, 2015)

  • This release includes a few bug fixes, performance enhancements, and refreshed icons.

New in FontForge 20150319 Dev (Mar 31, 2015)

  • Improves start-up performance on the Macintosh, fixes a few crashes, enhances round-tripping of information in certain file formats, and fixes some bad logic.

New in FontForge 20150304 (Mar 5, 2015)

  • Fixes a few small problems and crashes and adds support for fine point adjustment.

New in FontForge 20150203 Dev (Mar 2, 2015)

  • This release fixes a few small problems and crashes and adds support for fine point adjustment.

New in FontForge 20090408 (Apr 13, 2009)

  • Extensive patch by Alexey Kryukov to support composites (references) in bitmap fonts.
  • Copy/Paste bitmap references
  • Output into sfnts
  • sfd extension
  • Fix them up so that bitmap formats which don't support them have them unlinked
  • Support for the JSTF table (sfd extension), new dialog Element->Other info->Justification.
  • Add a set of new python functions for manipulating CID keyed fonts:
  • cidConvertTo(registry,ordering,supplement)
  • cidConvertByCmap(filename)
  • cidFlatten()
  • cidFlattenByCmap(filename)
  • cidInsertBlankSubFont()
  • cidRemoveSubFont()
  • 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.
  • The new format is considerably better than the old and can now be used to express almost all of OpenType.
  • ability to name anchors and value records and use them later.
  • contourpoints used to be expressed as "" and are now expressed as "contourpoint 2" (no brokets). Adobe does not mention this in the changelog. [Incompatible change]
  • It is now possible to specify a GDEF mark attachment class in the lookupflags statement.
  • The syntax for mark to base/ligature/mark lookups is completely different. [Incompatible change]
  • 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]
  • The syntax for contextual lookups has been extended to allow for the new mark lookups.
  • It is now possible to specify a reverse chaining substitution lookup.
  • It is now possible to specify descriptive names for the ss00-ss99 features. FontForge doesn't support this but will parse and ignore it
  • 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.
  • Fix several problems with simplifying quadratic splines.
  • 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).
  • AddExtrema could go into an infinite loop.
  • Barry points out that when converting something to a CID font through a CMAP the last glyph in the encoding will be lost.
  • Some inconsistancies in ff python docs and reality.
  • The regen bitmaps dlg sometimes did not use freetype for all glyphs.
  • Metrics view had problems with cid fonts.
  • 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.
  • Autoinstructor: fixed a hang reported by Andrey V. Panov.
  • Autoinstructor: patch from Alexey:
  • More tweaking to diagonal stems.
  • Added support to horizontal ghost hints not tied to blue zones and vertical ghost hints.
  • Barry points out a free which is sometimes inappropriate.
  • The transform function from the fontview (and python) would transform images in the background layer multiple times -- once for each selected layer.
  • Autoinstructor: patch from Alexey:
  • Fix an issue reported by Andrey V. Panov (counter control again).
  • One type of dependent stems were positioned with wrong method; resulting in serifs pushed beyond their blue zones and other quirks.
  • fix a crash bug in the math kern dlg.
  • 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.

New in FontForge 20090224 (Feb 25, 2009)

  • Support for UFO version 2.
  • 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.
  • Patch from Panov to allow legacy scripting to guess values for the private dictionary. PrivateGuess(key).
  • 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).
  • Andreas Neustifter provided a FontForge icon with a transparent background (or the mac).
  • 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.
  • 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.
  • Pango doesn't like a utf8 string which consists solely of a variation selector. So don't draw them.
  • Werner doesn't want to see anchor points when debugging.
  • Change weight from the fontview usually crashed.
  • 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.
  • Yet another undo problem caused by the [Apply] button in the expand stroke dlg. This one on cancelling the dlg.
  • 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.
  • FF needed libxml to compile.
  • If there were no undoes in a glyph then Expand Stroke would crash.
  • Werner suggests adding a check that advance widths are all less than hhea.advanceWidthMax
  • Ah. Werner wants ff to tell him when an isFixedPitch font has a glyph with an andvance width which differs from advanceWidthMax.
  • Add a check that glyphs are within the font's bounding box too.
  • When creating a metrics view with many glyphs, one of which needed to be autohinted, then ff might crash.
  • Width was not set when building some small-caps glyphs out of references.
  • When I boxified Page Setup a typo meant that one radio button occurred twice and another got lost. Resulting in -- a crash.
  • 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.
  • Points of extrema weren't being marked correctly in the glyph view.
  • Mark to ligature anchor points not output properly to feature files.
  • Another member problem in merge fonts.

New in FontForge 20081224 (Dec 28, 2008)

  • 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).
  • The problem only affects fontforge it if uses pango or cairo.
  • 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.
  • The problem does not affect Mac 10.4.*
  • 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".
  • You probably need to install X11 before you upgrade the Operating System.
  • Fix more memory problems in Merge Fonts.
  • 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.
  • Fix a bug in old cubic to quadratic conversion.
  • Lots of changes to extrema code.
  • Find problems and add extrema had different defn of "short" splines (ones which could have extrema) so we'd get conflicting behavior.
  • FontView add extrema couldn't be undone.
  • Many improvements in the algorithm. Too worried of rounding errors before.
  • Initializing the font info dialog crashed on the mac when -O2 was specified during configure (the default situation).
  • After adding an Apply button the Transform dlg would crash if invoked in a glyph with no undoes.

New in FontForge 20081215 (Dec 16, 2008)

  • Add an X resource editor.
  • 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.
  • Patch by "JustFillBug" to exend python scripting by making the find interator become a find/replace iterator.
  • Patch by Taco to fix a memory problem reading bad baseline data.
  • Patch from Andrey PANOV to extend GlyphInfo (legacy scripting) by adding "XProfile" and "YProfile" options.
  • Add an [Apply] button to the transform and expand stroke dialogs in the outline view. (Request from Andrey).
  • Make ff parse preference files independent of the decimal point local in which they were written (that is -- accept either "." or "," in floating numbers).
  • 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).
  • Fix one more problems with points being snapped to a wrong stem side (it was still possible in case of off-curve points).
  • Metrics View and Display dlg weren't showing grid fit metrics properly. Several bugs.
  • 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.
  • Change so that only modal dialogs are marked transient. Make sure everybody is marked as a dlg.
  • FF got confused by format 4 cmaps which weren't unicode.
  • Goto dlg would not test altunis when looking for a unicode code point.
  • 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.
  • In my eternal vigilence against rounding errors I failed to report some intersections which were very close to the end points.
  • 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.
  • 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.
  • Add the extension ".lzma" to the list of compression styles that ff is prepared to deal with.
  • patch by Taco for sfnts with no understandable encoding.
  • Patch by Panov to add a new scritping command SelectGlyphsBoth.
  • loading of Apple gvar fonts broken.
  • 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.
  • Back before supporting multiple layers, the transform dlg had an entry "Transform Background too", that should be changed to "Transform all layers".
  • 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.
  • Change the definition of FontView.FontSize. Used to be in pixels. Make it be in points.
  • 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.
  • Add some more checks for badly numbered glyphs.
  • Memory bug when copying contextual chaining lookups.
  • Scrolling the GPOS/GSUB lookups panes for font info cause lots of nasty flickering.
  • 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.
  • Memory problems with merge:
  • Counter masks
  • Diagonal stems
  • Mismatch layers

New in FontForge 20081117 (Nov 20, 2008)

  • Displaying magnified bitmap strikes in the font view often caused a crash.
  • 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
  • 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.
  • Cairo will draw anti-aliased lines and splines (and text as well). Cairo also supports translucent colors.
  • 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).
  • Start up is slower with either Pango or Cairo active because both use fontconfig to initialize stuff and that can take time.
  • 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).
  • 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.
  • Pango crashes on my cygwin system, so my cygwin build does not ship with either pango or cairo.
  • 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.
  • 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.
  • Updated Polish, Greek and Russian translations.
  • Created a teeny tiny translation file for Malayalam.
  • Change the image import dlg to display jpegs by default.
  • 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.
  • Remove the preference item to specify a pixmap directory. Instead allow the user to specify a pixmap search path with X resources. Gdraw.GGadgets.ImagePath
  • Many new X resources:
  • GComboBox.Box...
  • GComboBoxMenu.Box...
  • GNumericField.Box...
  • GNumericFieldSpinner.Box...
  • fontforge.View.Background.
  • ...Box.GradientBG
  • ...Box.GradientStartCol
  • 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.
  • Boxify the Print Setup dialog.
  • Doing a print sample of a truetype font produced bad CID output.
  • Widths of dependent glyphs where not changed by changing the rbearing of a glyph in the metrics view.
  • 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.
  • Boxify the TeX More Params dialog of fontinfo.
  • 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.
  • Fix some more cases where the "link" buttons in the FontInfo->UnicodeRanges and Generate Fonts dlgs looked wrong.
  • FontForge has been generating bad bounding box information for BDF fonts.
  • 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->Validation->Set Extremum Bound.
  • More accurate catagorization of whether a point is curve or tangent.
  • Sequence/Lookup dlg of contextual lookup dlgs can be too small.
  • Michal points out some strings which are not translated.
  • 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.
  • Add a lock icon beside a reference name if that reference has "use-my-metrics" set.
  • 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.
  • If someone changed the button shape to round rect, then the link button in Font Info->Unicode Ranges became a blot.
  • Alexey suggests using typo-line-gap between lines in the print dialog.
  • Alexey also provides a patch to fix the old church slavonic sample text in the print dialog and a couple of other issues.
  • Patch by Kanou. SetPanose in legacy scripting did not set the panose_set bit so all changes were lost.
  • Added duplicate name and duplicate unicode to the things validate checks for.
  • Add a command to set the color of all selected glyphs.
  • Give instructions in Find Problems on how to figure out which two glyphs have the same name, or the same unicode code point.
  • 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.
  • Redo the selection menu in the font view.
  • If the user holds down the shift key then the selection is enlarged by any glyphs specified in the command. (logical or)
  • If the user holds down the control key then any glyphs specified by the command are removed from the selection.
  • If the user has both shift and control down then only glyphs currently selected and specified by the command will remain selected (logical and)
  • Otherwise the selection is set to what is specifed by the command.
  • Add new commands to select glyphs which
  • Contain nothing by references
  • Contain nothing by splines
  • Contain both splines and references (bad idea)
  • Are whitespace (and contain neither splines nor references).
  • The print dialog had a nasty habit of crashing when asked to undo.
  • Off by one error with scrollbar would sometimes hide the last line in the print dialog.
  • 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).
  • Fix a crash bug in the print dialog.
  • 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.
  • Peter Baker says:
  • 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.
  • 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.
  • 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.
  • 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).
  • 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.
  • 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).
  • 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.
  • 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.
  • 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.
  • Points could be snapped to a wrong edge of a non-ghost stem controlling a blue zone.
  • Put in code to complain when a font contains a hint mask with bits set indicative of hints which have not been defined.
  • When generating random text for a font in the print dlg, FF would alocate one character to few and trample memory.
  • Prefs file was treating hvoffset as a float rather than an int.
  • 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).
  • Markers for lines/curves which are almost, but not quite, horizontal or vertical.
  • 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.
  • Alexej provides some new preferences for truetype hinting:
  • InstructDiagonalStems -- Generate instructions for diagonal stem hints
  • InstructSerifs -- Try to detect serifs and other elements protruding from base stems and generate instructions for them.
  • InstructBallTerminals -- Generate instructions for ball terminals
  • InterpolateStrongPoints-- Interpolate between stem edges some important points, not affected by other instructions.
  • 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
  • Many problems when numbering points in glyphs with references.
  • 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.
  • Autoinstructor: some fixes to strong point optimizer.
  • Old bug still exists for monospaced fonts. Glyphs were positioned at 65,000+ rather than with a negative left side bearing.
  • Autoinstructor: some points didn't really need to be touched by 'strong point' interpolation.
  • Be a little more careful about TeX pk and gf files in the openfont dlg. Alexej points out that .*gf also matches .xgf.
  • 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.
  • Make it so that moving a point around will not turn off grid fit.
  • Andy Balholm points out that Help->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.
  • make acorn2sfd work again.
  • 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.
  • 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.
  • Add font.importBitmaps to python scripting.
  • the cli argument "--library-status" was broken.
  • 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.

New in FontForge 20080927 (Oct 28, 2008)

  • 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.
  • Adjust the width to length ratio used to determine if a diagonal stem is acceptable.
  • 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.
  • 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.sc") so when I typed the "s" I would get "a.scs" rather than "a.sc".
  • Add code to allow users to customize the font used in various dialogs and windows which previously could not be customized.
  • Multiple Master dlg was very broken.
  • Saving and Reading quadradic splines to the 'PfEd'.'layr' subtable didn't work.
  • Also if we didn't save the background layer (layer=0) then a random layer would (inappropriately) become the background.
  • Extend the 'layr' format to store a background/foreground flag per layer.
  • Still problems in importing lookups on 64bit machines.
  • A thread on typophile 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.
  • 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).
  • 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).
  • 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.
  • Make the pixelsize in anchor control be saved in prefs file (clean up prefs file for scripting, bring up to date).
  • 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.
  • Was not allocating enough memory for comments in the cvt table structure when user did a [Change Length].
  • Patch by Thomas ?. When FF loaded a ufo font (actually any glyf file) it used integers for the coordinates instead of reals.
  • 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.
  • 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.
  • If we have a 'TYP1' sfnt with a kern table which kerns a glyph with no unicode encoding, then FF would likely crash.
  • Oops. Typo in Generic change function. Crashed when doing change glyph on a glyph with only references
  • 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.
  • Internal conversion from fontforge splinesets to ff python contours would often leave interpolated points showing in the contour.
  • 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.
  • Extend the small caps dlg to create petite caps if desired.
  • Fix an uninitialized variable in GXDrawGrabSelection.
  • 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.
  • Python contour conversions would often introduce a control point on a linear order2 spline.
  • List of Panose letterforms was missing an entry from the middle so all later entries were off by one.
  • "Fore" and "Back" weren't localized in one significant place.
  • Add a few more checks (when reading in) on the validity of the 'MATH' table.
  • FF would generate a bad MATH table if given a glyph with assembly data but no variant sizes.
  • Dropping a drag and drop into the metricsview after the last character tried to insert the drop before the first character.
  • Clean up drag and drop from the font view a bit.
  • 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.
  • 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.
  • 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).
  • 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.
  • Add the ability to define a "Group" by glyph color.

New in FontForge 20080824 (Aug 25, 2008)

  • 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.
  • Make it possible to drag and drop lookups
  • from one font info window to another (copy lookups from one font to another)
  • within a font info window (reorder lookups)
  • Layers can now be marked as either background or foreground.
  • Foreground layers may be generated into fonts
  • 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.
  • Add a color picker so users can select glyph label colors other than red, cyan, green, etc.
  • I hope I've got menu short cuts working properly for non-Latin shortcuts.
  • Memory problems with references, introduced recently, have been fixed.
  • Werner wants an $iscid variable to determine whether a font is a cid-keyed font or not.
  • add font.iscid to python too.
  • python font.cid* variables didn't work, fix them.
  • Add $haspython variable to normal scripting so I can detect if python is available.
  • When pasting a reference into an order2 layer, ff would sometimes miss the fact that the instructions were out of date.
  • Replace with references had the same problem.
  • In scripting, instructions did not get checked for up-to-dateness
  • In the charview, unlink ref only worked on the foreground layer.
  • Patch by Barry (fixed up by me) to fix up open charviews when a layer is added.
  • Barry points out that Contour.round and Layer.round are supposed to have an optional argument, but instead have a required arg.
  • Just as pasting references screws up instructions, so does replace with reference. Do the same thing that we just did to rplref.
  • 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.
  • Setting device table adjustments from the accent pane of the Math dlg didn't work.
  • File->Revert File (from the UI) didn't work.
  • 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.
  • When importing lookups we might import a lookup twice if it were nested.
  • 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.
  • 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.
  • 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.
  • Typo in the code to display side bearings in the charview.
  • 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->Show Att crashed.
  • View->Next/Prev [Def] & Find In Font View don't work in charviews when there are tabs active.
  • 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.
  • 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).
  • 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.
  • 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.
  • Due to a typo, merging two splinesets at a curve point generally left the point marked with default adjustment enabled on its control points.
  • Another layers problem. Only in the foreground layer could anchor points be moved.
  • Python glyph.unlinkReference command didn't work.
  • 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.
  • Also allow the user to specify exactly how many ligature carets s/he wants rather than just setting a minimum bound.
  • Also 'lcar' (Apple) output was broken.
  • Also neither AAT nor OpenType supports negative lig carets, so if the user drags a lig caret line negative, have it stick at 0.
  • Moving ligature carets always marked for an undo in the foreground layer. Register the movement in the layer in which it happens.
  • When placing an accent glyph about which we know nothing, assume it should be centered on top.
  • Change sfd.c so that it will treat the sequence

New in FontForge 20080607 (Jun 9, 2008)

  • New Russian translation of the UI
  • Sometimes FF didn't set the message locale directory properly.
  • 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.
  • New dialog to help users convert an upright font into an italic one.
  • New dialog to help users create small caps glyphs.
  • New dialog to help users create subscript/superscript glyphs.
  • And matching python commands: font.italicize(), font.addSmallCaps(), layer.stemControl()
  • Script by Max to trap python exceptions
  • 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.
  • Fix various bugs in argument handling of fontforge.askChoices
  • Change font.removeGlyph to accept a single string argument to remove the glyph with that name.
  • FF didn't like decimal points in the metrics view l/r bearing fields -- even though it would put them there itself.
  • 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.
  • Add to python: font.revert(), font.revertFromBackup(), font.buildOrReplaceAALTFeatures()
  • Changing a glyph's width from a python script didn't update the metrics window.
  • Adding two languages in the same script to a lookup in a feature file didn't work.
  • 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.
  • Better error recovery in feature file parsing.
  • 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.
  • Patch by Barry to fix kerning classes (ie. figuring out WHAT glyphs go into a class).
  • When parsing a feature file which used a default languagesystem setup, ff only used the most recent script.
  • 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.
  • FF did not put contextual lookups on all the lists they needed to be on when loading them from a feature file.
  • Sometimes the Open Font dlg opened with the files shifted left so the first characters of the name were outside the window.
  • Patch from Barry Schwartz. "include" syntax in feature files didn't work.
  • 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).
  • 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).
  • Fix various problems with tt debugging.
  • 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.
  • 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.
  • 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).
  • It wasn't possible to make the foreground layer invisible.
  • When the file chooser bookmark list got too long ff would crash.
  • Werner would like to be able to debug (truetype instructions) when using non-square pixels (x_ppem != y_ppem).
  • Barry wants to be able to close a tab. Add a menu item.
  • 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.
  • Scrollbar in points debug window wasn't set right.
  • A. Panov provides a patch. Prefs was losing bookmarks.
  • the new release of volt reveals some new opentype tags.
  • 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.
  • FF wasn't handling a FontMatrix in the top dict of a cid font.
  • Trying to filter for fig files in the Import dlg caused a crash.
  • Check for bad OS/2 versions (that is, versions windows will reject) when loading a font.
  • Connect validation's "Points too far" with Find Problem's version.
  • Make fontlint aware of the new validation states.
  • When generating a font we complained about bad os/2 version only if they asked for a validation. Move it somewhere more prominant.
  • Add two new problems to find: points too far apart and bitmap advance width different from scaled outline advance widths (also boxify the Find Problems dlg).
  • 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).
  • Try a little harder to get some of the obscure code pages right in the OS/2 table.
  • Was getting the first glyph index of OS/2 wrong for OTF fonts.
  • 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.
  • 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.
  • Doing an Undo in the Guidelines layer didn't work, usually crashed.
  • Validate didn't work on CID keyed fonts.

New in FontForge 20080330 (Apr 1, 2008)

  • Add support for the OpenType 'BASE' table, and to a lesser extent for Apple's 'bsln' table.
  • Add python scripting (font.horizontalBaseline, font.verticalBaseline) too.
  • Add support under Show ATT.
  • Remove the old vertical origin field.
  • 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'
  • Add support for gradient and pattern fills to type3 fonts (only if ./configure --enable-type3 is specified, of course.
  • Also add support for cliping paths Make fonts containing images work in pdf output.
  • 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.
  • New Greek translation from Apostolos
  • Updated Polish translation from Michal
  • Apostolos points out that compiling on systems without freetype (Solaris boxes) was broken after last months layers patch.
  • Werner suggested various improvements to Show ATT: Lookups should be sorted o Glyph images should be drawn in more cases (before, just for substitutions)
  • Patch from Alexey, for better handling conflicts between diagonal and H/V stems.
  • 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).
  • 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.
  • Add a preference item so that fonts will be automagically compacted when they are opened.
  • 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.
  • 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.
  • Was not outputting the %%LanguageLevel DSC comment.
  • Generating a CID-keyed otf font was broken by the layers patch. (Only the background layer was output).
  • Encoding->Add Encoding Slots didn't work for CID-keyed fonts.
  • 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.
  • 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.
  • In the Print/Display window all vertical GPOS positioning was diametrically opposed to the direction it should have gone (there was a sign error).
  • 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.
  • In the fontview the horizontal advance and baseline metrics lines were drawn as if bitmap magnification were 1 (so if bitmap mag>1 they were in the wrong place).
  • In the char view, when the active tool is the scale tool, show the scale factors on the info line.
  • 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.
  • 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.

New in FontForge 20080309 (Mar 15, 2008)

  • Undefined value in the martlett patch.
  • A variable was placed on the stack in font info which needed a longer lifetime. This would probably mean that after several remetrickings of that window the jump to OS/2 Unicode ranges in the Unicode ranges pane would appear in a strange color and oddly shaped. I never saw it happen, but it should have. The variable is now static.
  • When ff read in a contextual subs by glyphs it would reorder each glyph list (backtrack, lookahead and normal) so that the glyphs were in GID order. So "a b c" would probably come out fine in the lookahead list, but would be reversed in the backtrack, while "c b a" would be reversed in the lookahead). Ug.
  • The code which decided on whether to apply a chaining lookup approached backtrack data in the wrong order (so only lookups with either 0 or 1 backtrack entries worked. Which was all I used to test).
  • New fonts were created with relative filenames, this screwed up some font searches. Make 'em absolute.
  • Deleting something in the guidelines layer probably caused a crash.