# Changes (Enhancements & Bug Fixes)

Changes since the last release may be found by performing a "cvs log" command on the file stamp.c.

> | TEGEUS: Tell me, What is your opinion of Progress? Does it, for example, Exist? Is there ever progression without retrogression? Therefore is it not true that mankind Can more justly be said increasingly to Gress? |  | -- A Pheonix too Frequent Christopher Fry, 1950

> "The trouble is," he said, "is that things never get better, they just stay the same, only more so. |  | -- Faust Eric Terry Pratchett, 1990

- 22-Aug-2006
  - Initial Greek translation.
  - Add a pane to the Preference dlg allowing user to control some of fontforge's hint creation.
  - Someone complained that Find Problems->Path Direction got the wrong answer. It got the wrong answer because they had a self-intersecting path (which screws up all concepts of in/out-side. So try to make it clear that they should do a find intersecting paths first.
  - Update my opentype scripts list (in particular include music).
  - Due to a typo, ff thought pretty much everything outside unicode BMP was in the hebrew script.
  - Add a new command to the point menu which allows you to specify a spline and one coordinate (either X or Y) on that spline. FF will calculate the other coordinate and add a point there.
  - CODE2000 contains an anchor class with only base glyphs (no mark glyphs) as part of a set of anchor classes. FF crashed.
  - Patch by Nix. svg.c did not compile when designed to be linked directly with libxml (instead of dlopening it).
  - Redo the font open dlg so that there's a list of standard filters and a mechanism for changing that list. Remember the last filter used.
  - If a popup menu is huge it used to appear under the cursor. This meant that even if the user didn't mean to s/he would have selected something and press/release would not be a no-op. This was a problem with the Font Info ->TTF Names
  - Patch from SUSE. Use of uninitialized local variable. But the result is never used, so just remove the offending lines.
  - Emulate gtk's boxes and use that to do automatic dialog layout. Get the font info dlg working (and then several others too). This means that the layout is no longer optimized for English, but will look better in other languages (I hope).
  - Add an information to Font Info to display what unicode character ranges are supplied by the font.
  - Philipp Poll points out that when generating versioned fonts (ie. Ambrosia-1.0 rather than just Ambrosia) you don't want the filename to default to the fontname (the fontname will be Ambrosia), instead you want some way of specifying a default filename. So add that to the Names pane of the Font Info dlg.
  - Try to keep track of font creation and modification times. NOTE: This is different from file times (which is what appears to be stored in the 'head' table of an sfnt file). Add a new table 'FFTM' to our sfnt output with these timestamps (and the timestamp of fontforge itself, just in case we ever care).
  - Mark classes could not be set from the selection.
  - Ben Laenen points out that if an order2 glyph has a dependent which refers to it using point matching and we keep changing the point number on the glyph then we'll keep getting warning messages. He suggests one message.
  - Empty glyphs weren't marked with red Xs any more.
  - In font compare, when comparing two contextual/chaining lookups, I forgot that class[0] was always NULL.
  - Open contours caused the ttf point renumberer to crash.
  - A font can have many kerning pairs. More than will fit in one GPOS subtable (which essentially has a 64k data limit or a bit more than 10,000 kern pairs). So be prepared to generate many sub-tables each dealing with a subset of the (first) glyphs.
  - If an apple mutually exclusive feature had a default setting which wasn't 0 then my previous patch didn't work.
  - If guessing bluevalues found no OtherBlues, fontinfo->PS Private would create an incorrect OtherBlues value [0]
  - Support clipboards containing image/svg
  - Ralf Stubner points out that the maximum zone size of bluezones is determined by 1/BlueScale. So adjust BlueScale if the max zone is too big.
  - Merge fonts didn't merge anchors and got into a terrible mess. Let's merge kern classes and state machines too. Merging kern classes may be a bad idea. We don't really merge them we just copy them so that if the same glyph is mentioned in two classes unexpected things might happen.
  - ff could crash on an sfd file containing erroneous anchors (such as might be generated by the merge fonts command).
  - Once upon a time, Apple was so concerned about accuracy of floating point operations that they required all operations be performed in IEEE extended (80bit). This had the interesting side effect that a program which conformed to Apple's standards could not also conform to ANSI C (which required operations use double temporaries for double values). I find it somewhat ironic, therefore, that gcc on the mac doesn't even promote floats to doubles. FF needs the extra accuracy provided by a double (an extended type doesn't seem to provide additional assistance unfortunately). So on the mac we got extrema that weren't, which meant that remove overlap didn't.
  - If we had a mac feature which had multiple subtables (ie. a state machine for a contextual substitution, and a non-contextual substitution too) then we produced a bad chain in the morx table.
  - Merge & Simplify would sometimes generate solutions using control points which were diametrically opposed to what they should be.
  - Yet another attempt to do a better job of autohinting.
  - Add a "Revert to Backup" command.
  - Put code in to correct for single bit (sometimes double bit) errors when search from extrema. This is at a lower level than the previous patch.
  - Output of extension lookups wasn't working
  - Fixed a problem in the ttf names pane of Font Info.
  - A slight improvement to magnifying by dragging a rectangle.
  - The first time you click on a transition in a Font Info->Mac SM->Indic state machine, ff would crash.
  - Tihkomirov points out that it isn't clear how to delete a ttf name from the name pane of fontinfo. So add some popup help. The language & string ID menus in that pane were sorted on the wrong key
  - Was not preserving (unparsed) tables properly. Several bugs.
  - When loading an apple bitmap font (with no hmtx tables) we need to dummy up widths for the outline glyphs.
- 15-Jul-2006
  - Apple's bitmap only fonts should not have an 'hhea' nor an 'hmtx' table
    Dummy up outline glyph widths when we don't have a 'hmtx' table by looking at bitmap widths for that glyph.
    ftxvalidate complains if the vertical line metrics are 0. Even in a strike with no vertical metrics information. So dummy something up.
  - Was getting the flags wrong for turning off features in an apple morx chain.
  - When outputing mark-to-base sub-tables with multiple marks I neglected to output an NUL offsets for the anchors that weren't there. So if a glyph had only one anchor (instead of two, or however many) then the offsets would be all wrong.
  - The SetPref() scripting function was misdocumented to be called SetPrefs() so accept both names.
  - When building an accented letter out of glyphs with an anchor class ff would increase the advance width of the accented glyph by the size (xmax-xmin) of the accent.
  - Expand the functionality of the ruler tool so that it also shows curvature.
  - When importing a bitmap font from a mac binary or an sfnt and the encodings of the destination and the bitmap did not match, then things got rather screwed up and might crash.
  - patch from KANOU. the ref check routine in glyphcomp compared one reference to itself.
- 03-Jul-2006
  - Type2 charstrings have no closepath operator. I used to think that meant I could not omit the final vector. In fact it means I can omit the final vector AND the closepath operator.
  - If we had a font with no complete code pages we used to generate a version 0 OS/2 table without codepage info. But now windows refuses to install such a font. Instead generate a bogus codepage field which claims to have latin1 (even though it doesn't).

    Windows won't use a font where the codepages field is 0.

  - When generating a FOND for a bitmap only sfnt, we created dummy 'NFNT' resources with the wrong resource ids. Which meant we got garbage when the font was used.
  - Make the TabSets in the font & glyph info dialogs run vertically rather than hor izontally. (Add an option to get the old display back).
  - Approximate Spline from Point Slopes sometimes set the control point while leavi ng the nonextcp flag on.
  - Add Extrema only looked at how close a point was to the extrema in one dimension. While that dimension is more important, make a less stringent check on the other.
  - Expand Stroke removes "U-turns" from splines because they confuse it. But the routine that did that got a bit rambunctious and did the wrong thing on a circular arc.
  - If a font did not contain an OS/2 table then we didn't retain the 'hhea' ascent/ descent.
  - Various fixes from Matthias Kilian of OpenBSD.
  - When asking for default 'subs' features, every glyph gets assigned U+2080.
  - Display the curvature information at each point. In Point Info dlg, and in a pop up window when editing cps.
  - Add two new menu commands/scripting commands:
    - Canonical Start Points (CanonicalStart())
    - Canonical Contours (CanonicalContours())

    The first sets the start point of each contour to the leftmost point, while the second orders the contours by their leftmost points. This will slightly reduce the size of output charstrings. It will also make more things available to be put in subroutines.

  - Print Multi-Size & Full Page printed the wrong glyphs from the font view. Broken since the encoding change.
  - When stroking a contour that makes a 180degree turn, ff did not give it a semi-circle if linejoin was set to round.
  - SPLCopyTranslatedHintMasks didn't work if there were more than one contour being copied.
  - Nathan Summers points out that if the XUID is garbage the ff can go into an infinite loop when generating an otf/cff font.
  - Somehow the XUID and UniqueID fields crept off the bottom of the fontinfo Names p ane and weren't visible or modifyable. Give them their own pane now.
  - Apply some patches (with some changes) from Nathan Summers to the truetype debug ger.
  - The property count in BDF fonts is wrong.
  - Ralf Stubner points out that the notdef glyph in an otf font should look like that in a ttf font, and not like that in a type1 font. (that is there should be something in the glyph).
  - Add support for group "encodings" which have empty spaces for unused glyphs.
  - make another attempt to find a good default sli for glyphs with no default script.
  - Typo in scripting function DefaultATT.
  - The View->Display Substitutions has been broken since the encoding change last summer.
  - Mark glyphs with out of date instructions differently from those with no instructions.
  - The last change to the cvt table generally did not get made.
  - Make glyph compare check for point matching in anchor points and in references.
  - Add a warning message about out of date instructions when generating a font.
  - When generating a font with anchor points matched to ttf points, ff failed to allocate enough space for them and offsets got all confused.
  - Oops. Some variables which should have been static were dynamic. Which meant we kept dlopening libfreetype.
  - If we had an anchor point which positioned itself with point matching, and we ge nerated an otf font then we'd output a lookup which tried to do point matching i n postscript. Only do point matching if we are sure we're in a tt font.
  - Add a preference item to control clearing of tt instructions.
  - Printing a multi-size page of a truetype font crashed.
  - Anchor Point dlg didn't work well with matching tt points.
  - Add a field to allow users to search for a glyph name within a kerning class.
  - Interesting. In kerning by classes, if the coverage table does not match the glyphs specified in all the classes (for the first (left) glyph), then any glyphs in the coverage table but not in any class should be treated as being in class 0.
  - Add something to the font view's copy from menu to control whether truetype instructions are copied or not.
  - Add some more problems to find problems
    - Check for glyphs with both contours and references.
    - Find out of date point matched references.
    - Find references with transformation matrices which can't be expressed (as refs) in truetype
    - Find references with transformation matrices which aren't translations (and so can't be expressed (as refs) in type1/2 fonts.
  - Allow the user to turn off composite info in afm files.
  - otf kerning classes were dumped in the wrong order.
  - In GaramondPremrPro.otf (version 001.000) Adobe has coverage tables (for some context chaining subs) which have the glyphs mentioned multiple times. I suppose this is legal, but it is annoying. I want my strings to have each glyph appear at most once. So add a little thingy to remove duplicate glyphs when we generate a list of glyph names.
  - Adobe has depreciated the use of PUA to represent small caps, old style numerals, etc. Add a preference item so that ff will no longer recognize "a.sc" as having a PUA encoding.
  - The tool tip for the preference item "NameListForNewFonts" was wrong.
  - Horizontal scrolling in the show att dlg was too slow. It was by pixel. Make it be by something which approximates the width of a character.
  - Add a new scripting command to give a font's bounding box.
  - Sigh. Within a GPOS lookup, sub-tables are not additive. Only one will be applied at a time. So order the 'kern' lookup so that pair-wise kerning comes out first (to override class kerning).
  - Was sometimes outputting mkmk base-mark attachement points as the mark attachment point.
  - Clytie Siddall has many suggestions about how to make the translation process easier for translators. He also tells me how to insert contextual comments into the program source, and provides many fixes for typoes.
  - The OS/2 version 1,2 has a different defn of avgCharWidth than OS/2 version 3(,4) does. Display of CJK fonts is supposed to break under windows if using the v3 defn.

    Use the appropriate defn for the version we happen to be outputting.

  - Autohinting crashed on glyphs in an order2 font if the glyph contained both an outline and a reference.
  - Pressing the help key in the main windows went to the overview page, not to the contextual help for the window.
  - Add a warning when 'CFF ' widths and 'hmtx' widths differ.
  - Set the default and normative widths too late after the cff subroutine change.
  - Make double clicking in the list of kern pair/anchor combinations bring up either Kern Pair Closeup dlg or Anchors Away.
  - The Anchor control dlg didn't work after the encoding change.
  - Add a popup message to explain what "Cor:" means.
  - Doing a Close() from a script didn't work if the windowing system were open.
  - Yet another bug in type1 hinting output.
  - Some versions of realloc don't like allocating 0 bytes.
  - Users expect ff to recognize a glyph name "Diaeresis", even though Adobe (following standard American, but not European spelling) spells it "Dieresis".
  - GhostScript has canniptions when it gets a version 3 OS/2 table in a ttf file.
  - Can't add a flex hint when there's a hintmask at the mid point.
  - The hintmask part of PointInfo would not let you clear a hintmask.
  - Add a new command to the fontview: Edit->Select->Select by Name
    and a new scripting command: SelectAllInstancesOf

    Both will select all encoding slots containing the named glyph (or unicode value)

  - Add scripting command: RemoveDetachedGlyphs
  - Was setting typo linegap to hhead linegap.
  - Using the X clipboard to paste into the character view has been broken at least since I added multi-layered editing.
  - Add a pref to control whether we prefer to use spacing or combining accents when building accented glyphs.
  - Spacing in the group dlg was sometimes off.
  - More hinting fixes. If the edges of a stem aren't quite parallel we had problems
  - Add some new built in variables: $order, $em, $ascent, $descent
  - The 'TeX ' table was output incorrectly if glyph's order wasn't the same in the sf as in the ttf.
  - Allow the [*] Back visibility checkbox to control whether the grid fit lines are visible or not.
  - If scripting is in verbose mode, flush the output buffer before calling a built in procedure (so any errors it generates will at least show the right line).
  - Ambrose LI points out that the master font in a cid keyed font should match the ascent/descent of at least one of its subfonts (so that the typoAscent/Descent f ields will default correctly).
  - Spend some quality time with valgrind looking (oh, and fixing) memory leaks.
  - Make ControlAfmLigatureOutput (scripting command) apply to ofm/tfm files too.
  - Oops. When parsing mac state machines I was using sizeof(long) when I should have said sizeof(int32). It gave rather bad results on 64bit machines.
  - Add a scripting function to load a user defined cidmap file.
  - Hmm. sizeof(point)==8 on AMD64, but structures are aligned to 4. This means our chunk alloc routines complain. So if we're given something that isn't in units o f sizeof(pointer) then just round it up.
  - lookup ordering within GSUB has been totally broken at least since I added the c ode to coalesce lookups for kerning.
  - Kanou suggests changing function name that includes Char to be Glyph. Well a few do really mean Char, but the rest should be Glyph. Leave the old names there bu t document them as deprecated.
  - Make CID keyed fonts use the new subroutine mechanism too. We can use global sub rs now too!
  - Oops. Familyname can be NULL, and we were indescriminately checking to make sure its length was less than 31.
  - Make a better use of subroutines when generating otf fonts. Doesn't work for CID fonts yet.
  - We crashed if we changed from one cid sub-font to another when compacted.
  - Oops. I made ff work with ft22 if the debugger was being built... but it failed to compile if people didn't build the debugger.
  - Oops a scripting function was marked as not needing a font when it did (HasPreservedTable & friends).
  - More for font compare. If there is a difference in a glyph in the two fonts add the option for including the outlines of the second glyph into the first. If the first font is missing a glyph, add an option to insert it with the outlines in the background.
  - Good heavens, someone wants to play with acorn2sfd. Make it compile again.
- 08-Apr-2006
  - Patch by Mike Frysinger from gentoo. Use the HOME environment variable in preference to /etc/passwd.
  - Werner wants to see raw data in the points window of the debugger. My guess is that most people won't be interested in this mode (and it makes the window a bit uglier) so I've made it configurable. --with-debug-raw-points
  - Write sfddiff as a fontforge script and put it back into the install process.
  - Add code to font compare so it can do the old sfddiff --merge option (if two corresponding glyphs differ, add the outlines of the second to the background of the first).
  - Someone wanted acorn2sfd! Make it compile again.
  - Make configure look for libgif
- 06-Apr-2006
  - Patch by Ian Jackson of Ubuntu. When in an empty glyph (one not WorthOutputting) then doing a View->Show Grid Fit would cause a crash.
  - The PLRM says that formfeed is whitespace. The T1_Spec says that it is not. After an eexec the T1_Spec is right (and ff was following the PLRM definition).
    Also add a check to insure that the first character we generate in pfb encryption isn't a white space character.
  - On some windows systems (mine at least), windows will refuse to install a postscript font if the fontname or familyname of that font is longer than 31 characters. These are the names in the Font Dictionary of the postscript font itself, not the names in the 'name' table (for otf fonts).
  - Make ff compile with freetype 2.2.0
  - The popup menu of text fields was garbage.
  - Make a change to pfm output which might allow non windows ANSI encoded fonts to work.
  - Allow the freehand tool to work in quadratic fonts.
  - Didn't always refigure splines properly when using Get Info in quadratic mode. Patch by Michal Nowakowski.
  - Trying to invoke the KDE browser (for help) didn't work. Patch by Dimitar Zhekov
  - Still losing instructions if contours begin with off-curve points.
  - if a font had a defined notdef glyph, then FF would usually enter it incorrectly in the 'hmtx' table.
  - In the Select menu, Width had an extra underscore.
  - Wasn't looking in the right place to get the right weight name in an otf font.
  - People have been complaining about the UI for drawing quadratic (truetype) curves. It was consistent with the UI for drawing cubic (postscript) curves, but it seems hard to draw quadratics that way. Rather than concentrating on the on-curve points (as in cubics), now concentrate on the off-curve points. So the pen-tool behaves quite differently now in quadratic mode. As does Element->Get info.
  - A patch added back in 2004 to make vertical substitutions work for Japanese (to work around a bug in Windows to be precise) had a bug itself if more than one language was involved.
  - When outputting an inline copy of a reference in otf fonts with translated hintmasks we did the wrong translation for vertical stems and got garbage results.
  - New command to allow user to enter X,Y coordinates of a point and have that point be selected. I want this for debugging. It might be useful generally.
  - Fixed problems with type2 subroutines containing glyphs with conflicts.
  - ReplaceWithReference had too large a fudge factor and found macron when it should have found macron.sc in minionpro-regular.
  - If an alternate/multiple subs had more than 30 components then we lost all those after 30 when generating opentype GSUB table.
  - Hmm. Sometimes least squares does give the answer we want for merge. So give it a try.
  - Patch by kanou to fix some translation problem.
  - In the shape tools (round rect, ellipse): Instead of generating a quadratic shape at the start, generate a cubic shape and convert to quadratic. The convert routine now knows about how to find integer control points and such.
  - Patch from Kanou to get more grid size values for looking at bitmaps.
  - If a glyph starts with a control point then ff would sometimes throw out the ttf instructions, thinking it wasn't numbered properly.
  - A merge in a quadratic font produced a straight line. Even when it shouldn't have.
  - Change namelists to support non-ASCII glyph names.
  - Oops. Some hinting scripting commands had a "b" prepended to their name by mistake. Sigh. From now on support both names.
  - When pasting a glyph with hints into an empty glyph, we shouldn't set the "in need of autohinting" flag. (Actually, we might should if the original copy were done in a glyph with out of date hints.... but that gets more complicated).
  - Patch to make loading bdf fonts more efficient.
  - Add Kanou's "fontview" font to the list of fonts searched by default for the fontview window.
  - FF did not mark ghost hints as different from normal hints.
  - Interpolating fonts broke when I did the encoding change last summer.
  - Patch from Kanou to prevent the hash function from returning negative numbers. (and crashing)
  - Add a menu and a scripting command to compare two fonts.
  - Oops. There's a stray underscore in a field in font info.
  - Refresh font view(s) after changing glyph name/unicode in glyph info in case those are being displayed.
  - If a name entered in the goto dlg was a single unicode char, then goto would treat it as such. Normally this is fine, but a user might use the underscore character (for example) as a glyph name and not assign it to U+005F. So check for the name too.
  - Rewrite the cubic->quadratic conversion code. It now looks much prettier and tries to position intermediate points on integer (or half integer) locations so there won't be unexpected rounding later. It's slightly less accurate though.
  - Many changes to the postscript hinting code.
  - If a glyph contained references but no alphabetic characters then Glyph Info would crash.
  - Scripting command AskUser doesn't work unless FF_SCRIPT_IN_LATIN1 is set. Patch by Kanou.
  - In some error messages I ended a sentence with a comma. Make it a full stop.
  - Patches from Kanou to make Japanese translation better.
  - Kanou points out that the code which handles modifications to the unicode char textfield (in glyph info) complains about the wrong things and he provides a patch.
  - Hand tool failed to scroll background images (probably failed on hints too).
  - When doing a copy splines with hintmask operation we neglected to refigure the spline after transforming the end points. This was ok since we never used that info -- except if the splines were quadratic and we needed to convert to cubic. So when generating a ps font from a quadratic database, and the font contained references with scaling/rotation/etc. then we'd get erroneous results.
  - In Find Problems, the Flipped Reference check could fail if the reference contained a contours which intersected (themselves or each other).
  - Make ff aware of ExtraLight as a valid weight when setting a default value for the PS weight string.
  - When the user clicked on a textfield with attached pulldown list, ff would get an event saying the first entry on the list had been chosen. This meant that the Tag dialog (used for new ligatures/substitutions/etc. would show the first tag in the list instead of blank.
  - Include some glyph name synonems from Richard Kinch's TrueTeX list.
  - Determination of whether a ghost hint is top (-20) or bottom (-21) should depend on the current contour, not on the glyph as a whole.
  - If a glyph consists solely of references then add _<ref-name-1>_<ref-name-2>...<ref-name-n> to the list of possible names. Sometimes also add uniXXXXXXXX.
  - Kanou wants to translate some more strings.
  - Barry.SCHWARTZ wants to be able to reencode a font to compact from a script.
  - Barry.SCHWARTZ points out that my "cfg" files contain no newlines. Shows how much use they've received:-)
  - Barry.SCHWARTZ points out that when generating an afm file for an otf font only the first 256 characters were given encodings.
  - Simplify much improved.
  - Make simplify for quadratic splines aware of the peculiarities of truetype. So one simplification is to make a point interpolateable. And removing a point is not always good if it means points that were interpolateable become non-interpolateable.
  - After examining (and stealing with permission) Huw Davies's code in wine/tools/fnt2fon.c I believe I can now produce .fon files.
  - Add support for reading bitmap references (from an sfnt bitmap)
  - Patch by Kanou. cvknife didn't compile in one mode.
  - Typo in an error message
  - Add a command to show points of inflection (also change View->Mark Extrema to show where extrema occur on a spline if not at the endpoints)
  - Patch by Michal Nowakowski. Uninitialized variable in simplify dlg.
  - glyph names for unencoded glyphs were always "uniFFFFFFFF" should be "NameMe-<n> broken by last summer's encoding changes.
  - Werner wants CC (composite character) entries in afm for GPOS mark-to-base features.
  - The switch to utf8 last summer broke font info->Size
  - Allow users to ask for both 'GPOS' and old-style 'kern' tables. FontLab does this. The OpenType list is generally disapproving of the idea.
  - If we tried to put more than about 10000 kerning pairs into one old-style kerning sub-table then we'd overflow various shorts. So split it up after about 10000 kp into several different sub-tables.
  - Round to Int screwed up interpolated points.
  - When generating a tfm file don't generate a width bigger than 16*em-size (even if the font says to) because TeX will throw it out.
  - Alexey Kryukov's patch to fix an error message.
  - Printing a CID keyed truetype font to a pdf file produced a very odd ordering of glyphs (compacting some and omitting others and getting errors when it ran out of glyphs but asked for more).
  - Alexey Kryukov suggests repunctuating an error message.
  - Johan Winge suggests an improvement to converting cubic splines to quadratic: If we end up using a line when looking at the spline as a whole, try breaking it at the point(s) of inflection first. It seems like a good idea.
  - Johan Winge also points out that I identify points as tangents when they should not be. This is because I use one measure of sloppiness no matter how close the cps are to the base point when determining colinear. It's probably best to have a variable measure depending on how far the cp is from the base point.
  - Alexey Kryukov thinks Add Unencoded Slots should work in the compacted view by making the thing have a custom encoding.
  - Scripting reencode didn't get rid of the "compacted" mark.
  - Ralf Stubner points out that I produce type1 charstrings which end in "seac endchar" when a simple "seac" is sufficient. He's right.
  - When generating opentype tables in from a single sub-font of a cid-keyed font (ie. user asked for a ttf font generated from one sub-font) ff would crash.
  - We didn't hint bold fonts well (anything where stems were bigger than em-size/10)
  - When generating a type1 font with a glyph containing a reference that had to be unlinked, then the vertical stems in that reference would not be hinted.
  - When guessing points at which to attach hints in type1/2 read in we failed if the points were too widely spaced. Be a bit more lenient.
  - SetCharName didn't check its flag value properly.
  - Uncompacting a font caused memory problems.
  - Fix simple crash in metafont.
  - When importing unencoded glyphs into an already existing font, we would sometimes fail to find the matching glyph (and would create a new one).
  - If a font contain an encoded glyph called ".notdef" and that glyph was not the first glyph, then type1 fonts had a .notdef glyph at a random place in the font. Now freetype seems to renumber glyphs so .notdef is always glyph 0 which fontforge did not expect and produced some strange results when rasterizing (tested on 2.1.10). Fix is simple: always make notdef be first in the chars dictionary and then all is happy.
  - Add new scripting command to compare two glyphs. I want this for testsuites, other people might find a use for it.
  - gniibe reports that the scripting function Export() produces bitmap images with the wrong format and provides a patch.
- 9-Feb-2006
  - Instead of refusing to do expand stroke/remove overlap for order2 fonts, why not convert the contours to order3, do the function and convert back.
  - Once more we are numbering points badly.
  - If we clear a glyph which is being referred to (and we don't unlink it first) then when we save it into an sfd file we get a reference to a glyph at orig_pos -1 (because the cleared glyph isn't stored in the sfd) which causes an error when reading it back in.
  - If a copyright message were an exact multiple of 100 characters long, fontforge would screw up memory (and potentially crash) when reading it in from an sfd file.
  - The Merge/Simplify command (which Add Extrema now calls) had problems when the control points were very close to the base point so that the point was (to the human eye) a corner point.
  - Add support for the r2l script N'Ko. MS says opentype will use script 'nko ', ISO says the tag should be 'nkoo'. Follow opentype.
  - Kanou tells me that Syriac & Thaana are also r2l scripts and should be added to my list.
  - If FF was given multiple fonts on the command line the sizes of the font windows would jump around in a very peculiar fashion.
  - Add the concept of a namelist. Users can specify what names they want for new glyphs, or can force an entire font into a new naming scheme. Changes to
    - FontInfo
    - Open
    - Generate (Family)
    - Preferences
    - and the Encoding menu.
    - New scripting functions:
      - LoadNamelist(filename)
      - LoadNamelistDir([dir])
      - RenameGlyphs(namelist)
      - Extended Generate (scripting) to take a namelist argument.
  - If users didn't have libuninameslist installed we were still generating spurious ligatures for numero and TM. (and others)
  - KANOU points out that if you comment out a bdf glyph (with COMMENT) fontforge sort of reads it anyway.
  - Kanou needs to distinquish between the script latin and the language.
  - SplineRemoveAnnoyingExtrema1 got tweaked a little too much in attempting not to generate insane control points.
- 25-Jan-2006
  - If you try to create a bitmap only sfnt but provide pixelsizes for no valid bitmap strikes, the fontforge would crash.
  - Chia points out that I should use the PIXEL_SIZE property to set a bdf font's pixelsize (instead of using font ascent+descent).
  - Trying to rasterize a glyph with a coordinate of 1e7 caused a crash.
  - The change to make Add Extrema remove points near the extrema failed to consider the possbility that some of those points might be corner.
  - In Gentium Roman, when searching for bluevalues, the baseline is further than 1 standard deviation from the mean of glyph ymin. Change the range searched so that 0 is always included.
  - In Font Info->PS Private, if we selected OtherBlues and pressed [Guess] it did not change the OtherBlues value.
  - The gettext patch change Histograms->Blue Values menu item into a line.
  - When changing the order of a font, ff would ask if you minded losing the undoes. There's no point in asking the question if the font hasn't been modified (it has no undoes).
  - The Point Info dlg should enforce that curved points cps are colinear (so if the user changes one cp, the dlg should change the other to be in the opposite direction.
  - There was a path though PointInfo that called SplineRefigure3, which meant that splines got marked as cubics even when they should have been quadratics.
  - Using a rotated elliptical pen in expand stroke did not work
  - Add a homedir button to the file chooser dialogs.
- 17-Jan-2006
  - Make the Import() scripting command accept {bdf,pcf}.gz files
  - Reading utf7 (ttf name) strings from an sfd file was broken if one of the characters had bit 15 (high bit) set and its position in the string mod 3 was 1.
  - My horizontal line metrics in the sfnt bitmap strike header were incorrect
  - Use the horizontal line metrics (if they work) to set the ascent/descent of a bitmap strike.
- 15-Jan-2006
  - The change to fold all COMMENTS into one bdf property broke the sfnt 'BDF ' table routines.
- 14-Jan-2006
  - Change AddExtrema so that if an extremum is very close to an old point it will add the extremum and then remove the old point.
  - Redid how bdf properties were handled
    - I had the definitions of some properties slightly wrong
    - I was generating some obsolete properties
    - When I generated CHARSET_ENCODING for iso8859 encodings I had an extraneous "-" in the value.
    - retain the properties when loading a bdf, pcf font
    - Add a dialog which gives user control over bdf properties
    - design a 'BDF ' table for SFNT files which can contain bdf properties and make FontForge read and generate this table.
  - Ted Packard points out that I output "big metrics" in sfnts inconsistently. This patch should make them consistent and right.
  - Restore "compact" views to their old glory. Ie. they can now be uncompacted (and uncompaction happens automagically when generating a font).
  - When reading a GenTags: line from an sfd file stored with CRLF line terminators, the next line would be lost.
  - ff couldn't handle xrefs which were broken in bits in pdf files?
  - When reading a ttf font from a pdf file we found no encoding info. This caused us to crash because various routines expected an encoding map. Add a dummy (Original) map if not exists.
  - Wasn't numbering points in references properly.
  - Gleep! Ever since the gettext code went in, the Generate fonts dlg has refused to generate "No Outline Font" and "No Bitmap Font".
  - Herbert Duerr from OpenOffice tells me that their OpenSymbol.ttf font when produced by fontforge does not work on Win98. This is because Win98 doesn't like the codepages bits ff produces and refuses to use any glyphs in the font. He submitted a patch to make ff produce a version 0 OS/2 table (with no codepage info) for this font. Win98 will accept it then. His patch was against an earlier version of ff and needed to be modified for the current version.
  - Patch by Raph Levien which finally shows me how to use FT_Outline_Get_Bitmap properly.
  - If the user has never called PrintSetup (or if the user has not called PrintSetup this session and has not loaded prefs), then fontforge will invode setpagedevice on a pagesize which will fit on either A4 or US-Letter. The PS manual says a printer should refuse such a size unless it has paper within 5 points of it. So on printers which follow the spec (not mine) nothing will print as it waits for paper.

    Now if the pagesize has not been set, don't specify a PageSize to setpagedevice.

  - The PrintSetup scripting command should not require a font.
  - Add a mechanism so that users can prevent ff from making a point implicit. Useful in that point needs to be instructed.
  - New copyright notices for 2006
  - Make the pen tool work better with quadratic splines (make it default to having control points which cause the point to be implicit).
  - Order2 elipses were not drawn accurately.
  - Point numbers sometimes didn't get properly renumbered after changes. If we have references & splines in a (truetype) glyph then show the numbers as "?".
  - When a charview displays numbered (truetype) points, then it shows all the control points. But the control points are not selectable. This is not a good thing, so make them selectable.
  - The font display to pdf did not include a title at the top of each page.
  - Peter Denisevich points out that when we print something we say "%%Pages atend" instead of "%%Pages (atend)". And the latter is correct.
  - Werner points out that my type1 (and type1 cid) fonts contain a %%DocumentSuppliedResource line, and they should not. The next level up should do that when it includes the font.
  - Show .xpm files as images we support in import image dlg. We've always supported them, might as well show them.
  - Check the glyph class when deciding what anchor to use.
  - Anshuman Pandey wants to be able to set the glyph's GDEF class. I've never understood why the default behavior wasn't good enough, but it's easy to do.
  - One of the fields in Glyph Info had some garbage initialization.
  - Add a default anchor point type to the AddAnchorPoint scripting command. FF will try to guess an appropriate value.
  - Add some standard window sizes to the fontview window. I'm tired of having the windows sized to other people's standards whenever I review a bug.
  - There was a path through expand stroke where a control point was marked as non-e xistant by mistake.
  - Expand Stroke would leave contours with the reversed orientation if it had to do a remove overlap internally.
  - Oops. The routine to save the encoding prefs file could not handle an encoding plug-in.
  - KANOU points out that the origin pulldown list in the transform dlg was not being translated.
  - In the preference dlg all of the [...] file browsers had the title "Call Script" which isn't appropriate for most of them.
  - Typing .* and pressing [Filter] did not show hidden files in the file chooser.
  - the code to check for intersections failed to check if there were a crossover in the last tiny section of a spline before its end.
  - Was generating ofm files when creating bdf fonts. Seems unnecessary.
  - Was producing a EBLC table with bad first/last values for first glyphs.
  - Hmm. Not all systems have tzset. Add a configuration option for it.
  - In scripting, a return within a loop sent ff into an infinite loop.
  - Kanou's patch for adding a new flag to scripting Import, to clear out the layer first.
  - Patch from KANOU to add SetGlyphChanged scripting function.
  - If an implied point became real, this fact was not reflected on the display until the user forced a point renumbering.
  - A mouse click in an empty metrics view references garbage memory -- And crashed Kanou's session.
  - Loading a large bitmap font left bits of the backmap of the encoding map uninitialized.
  - Loading a pcf font caused a crash.
  - Moving the control points of an implied point should move the implied point. And we should indicate which points are implied so this behavior doesn't surprise.
  - Michal Nowakowski points out that renumbering points in a glyph should turn off point matching in references.
  - Add support for bitmaps with vertical metrics.
  - Wasn't storing the vendor id in the OS/2 table properly.
  - Rounding error present on PPC which was absent on *86 machines.
  - Werner would like pixel size info to show on the title of a charview when debugging.
  - Added a new menu command "Point->Center Between Control Points" for truetype.
  - When manipulating menus with keys (rather than mouse) Werner found a crash.
- 5-Dec-2005
  - Creating the first bitmap view might cause a crash -- depending on how the linker organized memory.
  - Loading an sfd file now checks to see if there are any glyphs with splines in them, and if there are not turns on the onlybitmaps flag. Someone pointed out that if you inadvertantly edit in the outline view -- even if it is nothing significant, then the font is forever after marked as outline. This isn't a perfect fix, but it will prevent the worst from happening.
- 1-Dec-2005
  - Use GNU gettext rather than my nomen routines to handle translation of the UI..
  - Add support for plugins.
  - I added a check in parsing tfm files to make sure I didn't read outside the bounds of the kern table. But the table size was expressed in ints (32 bit units), and my index was in bytes, so I frequently exceded it.
  - If we used Get Info on a reference in a ttf font, and that reference did NOT do point matching we would generate an inappropriate error.
  - My support for using endchar as seac in type2 fonts only worked in bare cff fonts, it did not work if the cff were inside an sfnt wrapper (opentype).
  - I have decided that I will now store all postscript strings in utf8 (copyright, weight, familyname, etc.) They SHOULD all be ascii. But the occasional copyright mark would sneak in. We went into an infinite loop on one such because that was an illegal utf8 string. So fix a number of problems related to this.
  - Switch from using an internal routine to using freetype to rasterize b&w bitmaps when debugging ttf instructions.
  - Make the gridfit/debug settings sticky across invocations (store in prefs).
  - Add popup info showing the level of greyness in a truetype font being debugged in anti-alias mode.
  - Werner suggests altering the dynamic range of anti-aliased rasters in the charview so that the outlines remain visible behind them.
  - Make the background color of the debugger raster window configurable by the user
  - If a curved point had no control point in one direction, then ff thought it had no direction and felt free to change it. It should inherit the direction from the other side of the point. This was even more confusing if the point went through a two step process, first simplifying one side into a line (losing the cp) then simplifying the line away (losing the direction).
  - Use a better algorithm to indicate changed pixels. (in debug window)
  - Screwed up View->Show Grid Fit... in Mono mode.
  - Werner wants to be able to see grey scale rasters while debugging truetype. He also points out that if the instruction before the end of instructions changes pixels, ff would leave them marked "changed" even after finishing the instructions.
  - We were getting multiple error windows.
  - Don't allow users to add instructions to a glyph containing both a reference and contours. Or a glyph where a reference is scaled more than 200%. (tt doesn't allow these combinations so the references need to be copied inline)
  - Typo in remove overlap caused bad bug in feta26. Error introduced 15 Sept.
  - Further work on what makes a spline linear.
  - The utf7 output routine in sfd did not convert from utf8 properly.
  - Panov has found yet another error in simplify. Be really exuberant about turning splines that trace out lines into lines.
  - Panov finds another bug:
    - If we change the unicode value of a glyph, then we also need to change
    - the unicode value of any references to that glyph.
  - Panov presents four more bugs:
    - If an sfd file contains an unencoded glyph, it will crash
    - Force Encoding->Original will crash if there's a bdf font missing some characters (ie. the piecemeal display font)
    - Goto Dlg tried to free an uninit value
    - Goto Dlg contained a string initialized by latin1 rather than utf8.
  - Hmm. the changedsincelasthinted flag doesn't apply to truetype. The equivalent thing (I guess) is not having any instructions on a glyph with splines.
  - Panov wants a way to build up arrays using easier syntax than: create array, assign each element.
  - Sometimes we would get both an EUC-CN and a GB2312packed entry in the Encoding menu.
  - Create a plugin for GB12345, and treat it (in sfnt tables) as GB2312.
  - Add a new scripting funtion: NearlyLines to convert almost linear splines to linear.
  - Tweak AddExtrema so that it doesn't create Extrema points which are too close to the endpoints.
  - Didn't terminate an array of answer strings to a question dialog.
  - Fixed a crash in stem database.
- 28-Oct-2005
  - More work on the mac install procdure.
  - Redo the install documentation on the website & in the readmes
  - Add a hack to the directory browser so that on cygwin getting a directory listing of "/" will include the magic (fake) directory /cygdrive (which gives access to the rest of the PC)
  - Add a new scripting funtion: NearlyLines to convert almost linear splines to linear.
  - Tweak AddExtrema so that it doesn't create Extrema points which are too close to the endpoints.
  - I was dumping all opentype ligatures into an ofm(tfm) file. But I should probably only add 'liga' and 'rlig' ligatures.
  - Omega has a bug where it thinks 0 width glyphs do not exist. Which means it thinks none of the combining accents, etc. exist. So force the width of any zero width glyphs to be the smallest positive width.
  - When reading ttf/otf fonts, FF gave alternate substitutions (and multiple subs?) a tag of 0.
  - Add two scripting routines to allow people to read & write strings from and to files. One string per file.
  - The ClearTable scripting command parsed the table's tag incorrectly.
- 23-Oct-2005
  - Try to make the Mac install a bit more mac-like by adding an entry to the X11 Applications menu rather than expecting users to start fontforge from the command line.
  - David Binderman points out an out of bounds array reference in cvexport which has been there for years. Gleep.
  - Add scripting commands for manipulating ttf instructions.

    I added the following new scripting functions:

    - SetMaxpValue("item-name", value)
    - GetMaxpValue("item-name")
    - ClearInstrs()
    - ClearTable(tag)
    - AddInstrs(thingamy,replace,instrs)
    - FindOrAddCvtIndex(value[,sign-matters])
    - ReplaceCvtAt(index,value)
    - GetCvtAt(index)
    - PrivateToCvt()
  - Daniel Gillmor points out there is no way to set the OS/2 Width field from a script. He then provided a patch with two new functions which does this. I realize there is no way to set any of the OS/2 values (except panose), and there should be (and to retrieve them too).

    I added the following new scripting functions:

    - SetOS2Value("item-name", value)
    - GetOS2Value("item-name")
    - SetPrivateValue("item-key","item-value")
    - GetPrivateValue("item-key")
    - HasPrivateValue("item-key")
    - RemovePrivateValue("item-key")
  - A number of fixes for ofm files.
  - When outputting mark-to-base lookups with multiple anchor classes, ff would put a base glyph in the coverage table several times if it was used by several mark classes. Bad.
- 18-Oct-2005
  - KANOU points out that I was using too strict a rule for parsing svg polygons.
  - OFM output was not working in fonts with lots of kerning combinations.
- 16-Oct-2005
  - A number of fixes for ofm files.
  - Add default 'nukt' "ligature" substitutions to appropriate Devanagari characters
- 15-Oct-2005
  - The patch to the routine determining what glyphs got output broke bitmap only fonts.
  - Ofm files didn't contain ligatures.
  - The ofm patch broke tfm output.
- 12-Oct-2005
  - Add support for generating & parsing ofm files (I hope)
  - If I tried to generate a font from an absolutely empty fontdb (ie. a new one) then I'd get a stupid error about how .notdef was at encoding -1 and this was a bad idea.
  - Add 4 new information types to scripting GlyphInfo
    * LayerCount
      Number of layers in glyph (usually 2)
    * RefCount
      Number of refs in glyph
    * RefNames
      Returns an array of all reference names (may be 0 length)
    * RefTransform
      Returns an array of all reference transforms
  - Don't mark glyphs with widths other than 1em as being worth outputting (require widthset). Used to use both (because in the early days, before pfaedit moved to sourceforge even, the widthset bit didn't exist). Now there are too many cases w here glyphs are created with a width other than 1em (marks, glyphs in monospace fonts (where the space is anything but 1em)).
  - When printing a type3 pdf font, give it a name. Not required, but so what.
  - Patch from Michal Nowakowski. When editing truetype instructions using my prefix notation for numbers, there was a crash if a number needed a word (rather than a byte).
  - Add some support for reading fonts out of a pdf file.
    - Limitted support for pdf type3 (no images)
    - Only support (Hex, 85, Flate, RLE)Decode filters (no support for lzw, fax, JBIG, DCT)
  - The routine to build the stem database (autohint) would set up a point database and then call a routine to convert all splines into a set of monotonics. But that routine could remove 0 length splines (and the points attached), which would mean our point db would be wrong.
  - Stefan Wanger suggests some patches to fix memory leaks.
  - Stefan Wanger gave me a type2 font which used type1 flex conventions (calling othersubrs, etc.) There is no othersubrs operator in type2, nor any place to store othersubrs subroutines. But it is easy enough to support, so why not. Warn that it's an illegal font, of course.
  - Stefan Wanger gave me a font containing the utf8 byte order mark in a fontname ( in a CFF Name Index). PostScript says FontNames are printable ASCII. But it's easy enough to skip over it.
  - Stepan Roh points out that in a monospace font, combining glyphs should default to the mono-width while in a proportional font they should default to 0 width (or perhaps 1 em-unit for compatability with old idiotic windows systems). Use the panose field to determine if a font is monospace.

    Actually ALL glyphs in a monospace font should default to the mono-space width rather than 1em.

  - New dialog: Hints->Edit 'maxp'... Gives user access to number of functions defined, the stack depth, storage usage, number of twilight points, which ff can't figure out for you.
  - Figured out how to make transparent images work on cygwin
  - Michal Nowakowski points out that negative values are duplicated in cvt.
  - Patch from Michal Nowakowski fixing crash when setting size of cvt table to 0.
- 29-Sept-2005
  - Add utf8 entry points for many (ucs2) routines. Minimal ability to draw non-BMP glyphs now with bdf fonts with encodings: *-UnicodePlane-1 (for plane 1), *-UnicodePlane-2 (for plane 2), etc.
  - Add a menu command to add values from the private dict into the cvt table (BlueValues, StemSnaps).
  - The Edit cvt window usually failed to draw anything in itself when it popped up (subsequent refreshes were ok).
  - Patch from Michal Nowakowski to improve memory usage in auto instr.
  - Printing sample text was broken in fonts with no kerning classes.
  - cygwin does very weird things with shared libaries, and we didn't support them at all.
  - FontForge did not support the depreciated usage of endchar to mean (almost) seac in type2 charstrings. It should now.
  - os2 typo linegap was not read out of sfd files.
  - Display 'gai' files in the open dlg.
  - I got some mnemonics wrong. Fix 'em up.
  - bdftopcf will use the glyph encoded at 0 as the default glyph if there is no explicit DEFAULT_CHAR. It seems happy with a DEFAULT_CHAR of -1 to mean no default, so use that if we don't want glyph 0 to be the default.
  - when outputting bdf, fnt or pt3 bitmap fonts with no outline font generated, we'd get filenames like foo-*-13.bdf. Get rid of the "-*".
  - Support point numbering of composites even when not debugging.
  - Michal Nowakowski points out that the cvt editor crashed if we changed the length of the table.
  - Provide two new scripting functions:
    - MoveReference(xoff,yoff,[ref-name/ref-unicode]+)
    - PositionReference(x,y,[ref-name/ref-unicode]+)

    These search all selected glyphs, looking for any references in those glyphs with the given name/unicode value, and then translating the reference by (xoff,yoff) or positioning the reference absolutely at (x,y).

  - ff failed to read horizontal metrics properly from a type2 CFF CID font. In most cases this would be masked by the fact that ff would correct the bad width values by reading the hmtx table. But if one had a bare CFF font, or a 'gai' font where there is no external source of widths, ff would get things wrong.
  - Alexej Kryukov points out that most entries in the private dict should be scaled when we do a ScaleToEm.
  - Fix a couple of problems with cid font display that "gai" fonts expose.
  - Michal Nowakowski points out that I generated truetype instructions --- and then forgot to attach them to the glyph. Whoops.
  - Loading extensible glyph information from a tfm file was broken by the encoding change.
- 19-Sept-2005
  - ff did not read AAT classes (kerning classes, etc) properly. It read one extra element which could cause problems
  - Cleanup svg output for kerning classes with no members.
  - Out of bounds array reference in OS2FigureCodePages caused a crash on the mac.
  - When loading a type1 font we failed to set the unicode encoding on seac references. This probably broke lots of things, it certainly broke replace with reference.
  - Add a DefaultRoundToGrid scripting function to set the Round-to-Grid truetype reference bit (basically set it whenever we have a reference which isn't point matched).
  - Add support for truetype point matching in references and anchor points
  - Improve the debugging heuristic that notices when we've jumpped to a new routine to work better with composites
  - If I attempted to debug a glyph with no instructions there was a race condition and if the race was won one way, ff would hang.
  - We weren't numbering points in a composite. This was only obvious when we did a View->Show Grid Fit on a composite glyph.
  - When debugging a composite glyph, ff forgot that some references are translated (or scaled or rotated), and failed to display this.
  - FF failed to keep track of the truetype "RoundToGrid" bit which applies to references.
  - In the Points window of truetype debugging, if the penultimate point of a contour was interpolated, then the contour boundary was drawn in the wrong place.
  - Use to store debugging dpi/pointsize in the charview. Werner suggests that it be global (so different glyphs will all share the same defaults).
  - Some Unicode code blocks have moved (probably those which only in the pipeline or some such), and some others have been added to the pipeline.
- 15-Sept-2005
  - Can't use a subroutine to refer to a translated glyph which contains flex hints in type1 output.
  - Hide another problem with rounding errors in remove overlap.
  - Don't produce multiple warnings about the local encoding.
  - In quadratic fonts the Remove Overlap menu item is disabled, but if you use the hotkey the command is invoked (with disasterous results).
  - Typo in point info code to determine whether a hint mask contains conflicts (matched vertical hints against horizontal ones)
- 12-Sept-2005
  - Added a scripting command DefaultUseMyMetrics() to set the use_my_metrics bit in old fonts.
- 11-Sept-2005
  - When ff pastes refs from one font to another it tries to figure out the width of a glyph containing references from the width of what appears to be the base glyph. (because if you paste Aacute from one font to another, the size of the "A" glyph may be quite different in the new font. Using the width of the glyph in the original font would be wrong).

    There are two problems with this:

    1. It didn't take forward references into account, and would use the original width rather than the modified width of the reference.
    2. It would (probably) be confused by an Alphatonos where the width of Alphatonos is not the same as that of Alpha.

    instead figure widths out after all pastes have completed, looking at the use_my_metrics bit to get things right.

  - Handle forward references to glyphs which will be pasted into by the current command (used to work, broken by the encoding change)
  - Various fixes for pasting references from a font which has since been closed.
  - Support the ttf "_USE_MY_METRICS" bit on composite glyphs. This entails:
    - Retaining it when reading a truetype font
    - Setting properly when generating one
    - Storing it in sfd files
    - Giving the user a way to set it with the Element->GetInfo command
- 9-Sept-2005
  - ff crashed when given a bdf font with multiple glyphs with the same name
  - Try to avoid generating bdf fonts with multiple glyphs with the same name. This happened when a single glyph was mapped to several encodings, a concept bdf doesn't support. Now when it looks like this will happen we rename the glyph.
  - Uninitialized variable in dependant sub-menu (broken by encoding change)
  - Pasting a reference into a font which did not contain the referred glyph did not give you the option of copying the original outlines any more. (broken by the encoding change)
  - Merging fonts where glyphs had multiple encodings caused crashes.
  - I'm very old fashioned. I like having error messages on stderr. But far too many people don't see them there. I guess they invoke fontforge directly from X with stderr directed to some invisible console window. Well create a little window to contain warning messages about font errors (for instance when reading an otf font we might complain about glyphs out of bounds, etc.)
  - Add support for postscript bitmap fonts. This means:
    - Ability to parse (simple forms of) the imagemask ps operator
    - Code to detect that a type3 is a ps bitmap, and convert it into a normal bitmap font that people can edit.
    - Bitmap output as a ps type3 font (using imagemask)
    - Fixing a bug in my output routines which worked fine for images in eps files, but failed horribly if that same code was stuffed into a charproc and executed on demand.
  - ff could not handle an encoding specified as a simple array. (Not allowed in typ e1 spec, but obvious for a type3)
  - And ff's handling of any type3s was broken by the encoding patch.
  - If a font contained fewer than 256 glyphs, then ff failed to load a format0 cmap subtable properly.
- 4-Sept-2005
  - In fontinfo, changed the tab "TTF Values" to be "OS/2", consolidated the Panose tab underneath it. Added many more fields, almost all of OS/2.
  - Fixed a number of uninitialized variables, at the instigation of Pavel Roskin.
  - Applied several patches from Pavel Roskin.
  - The scripting WorthOutputting command insisted on an argument, even when it should not have.
  - Scripting SetCharCnt command has been broken since the encoding change.

Earlier Changes
Changes to PfaEdit (predecessor to FontForge)