# Changes (Enhancements & Bug Fixes)

- 29-Oct-2003
  - When removing an ATT feature from a glyph using a script, PfaEdit would screw up memory. Leading to unpredictable results.
- 28-Oct-2003
  - PfaEdit would crash when converting from cubic to quadratic splines in a script
  - PfaEdit would leave a dangling pointer when converting from cubic to quadratic. This did not affect ttf generation, but would affect most other opperations.
- 27-Oct-2003
  - PfaEdit would crash when changing the encoding of a font with a .notdef character to a user defined encoding.
  - If one had multiple ligatures for the same glyph with the same tag and script, PfaEdit would eat all but one of them.
  - When generating most kinds of font, of a font which had ligatures containing glyph names that were not in the font, then PfaEdit would often screw up memory and eventually crash.
- 26-Oct-2003
  - Simplify sometimes removed points at extrema even when it should not have
  - If one had a ttf font (with instructions) and merged in a postscript font and then generated a ttf font, PfaEdit would complain about an internal error, but go on to produce a valid font. It should no longer complain.
  - When generating fonts from a script, if the font were in compacted format the generated font would have a compact encoding (instead of the desired encoding).
  - Kanou provided a patch to speed up importing bitmap fonts.
- 23-Oct-2003
  - The change on the 20th to make custom encoding support 32bit unicode was incomplete and made custom encodings crash instead.
  - The File->Display dialog ignored the left-sidebearing of a glyph causing output of some fonts to look awful.
  - Was getting the AdobeStandardEncoding a bit wrong (after the 5-Oct change to the new unicode glyph list which does not contain "fi" nor "fl")
  - I used to set the "widthset" bit on .notdef characters, but there's really no point to that.
  - Maxim Iorsh tells me that U+fb4f should be a historic ligature.
  - On some displays right scrolling the Histogram dlg would leave black lines on the window.
  - AutoHint removed too many stems from consideration as hints on some very bold fonts
  - Make FontBBox of Type1 fonts be executable. Adobe says it doesn't have to be, but dvips expects it to be.
- 20-Oct-2003
  - Windows XP & 2000 insist on having (what cygwin describes as) the execute bit of the file set. So PfaEdit now sets execute permissions on ttf, otf and pfb fonts on the cygwin platform.
  - If a menu was so big that it had to be positioned over the menubar (instead of above or below it), and the user clicked on the menubar to invoke it, then the mouse release would go to the new menu and invoke whatever item happened to be under the cursor. Not good.
  - Oops. The Effects sub-menu should have been disabled for quadratic (truetype) fonts.
  - Added a new configuration option --with-regular-link to disable my dlopening of libraries. I dislike this. I don't think it is anywhere near as flexible as the dlopen method. It makes it much harder to ship something that will work with freetype (detecting whether the bytecode interpreter is present must be done at link time rather than run time and that is a severe disadvantage. But I have been asked for it.
  - Change internal format so that custom encodings can handle 32 bit unicode.
- 16-Oct-2003
  - PfaEdit was still outputting a disordered name table.
  - The source tarball on the website included many files twice and some files that it should not have included at all. I should now be less than half the size it used to be.
- 15-Oct-2003
  - PfaEdit did not bother to open files in binary mode. If cygwin was configured with DOS linebreaks, then pfaedit failed to generate valid font files on cygwin.

  - Added some more warnings to the default build list and fixed the problems they indicated.
- 12-Oct-2003
  - Several bad bugs in last night's build (name table was (usually) all screwed up, conversion from PS to TTF got incorrect Internal Error msgs)
  - Order tables in truetype output

  - My 5-Oct-2003 libpng fix broke it completely. Should now be refixed.
- 11-Oct-2003
  - Another patch from Kanou to recognize encodings better in bdf files.
  - Various memory fixes found by valgrind
  - The Element->Find Problems->ATT->Missing glyph names fixup dlg had some formatting problems and failed to skip properly.
  - Draw an "x" through encodings which do not map to glyphs
  - If the user is in a compacted encoding and asks to print a font, then revert to the uncompacted encoding for the duration of the printing.
  - View->Show ATT would show ligatures (and substitutions) even if some of the glyphs in the glyph list were missing.
  - Fix a number of bugs found by the MS Font Validator
    - I misunderstood (and the spec incorrectly documented) the behavior of the maxp table
    - I had a typo in figuring out the OS/2 table
  - I had one more case where I was computing the point count of a glyph incorrectly.
  - Make the width line snap to zero when the user drags near it.
- 6-Oct-2003
  - Give the Metrics View a vertical mode in which it does vertical kerning, etc.
  - Add a hack to allow PfaEdit to parse a wierd pfb file.
- 6-Oct-2003
  - Fixed a number of bugs in the new kerning class dlg including:
    - Vertical kerning classes were displayed horizontally
    - When adding a new class the new offsets were garbage
  - The routine to convert a horizontal kerning class to the equivalent vertical kerning class (of the vertical varients of the glyphs in the horizontal class) didn't work.
  - In Back and Lookup Classes of a contextual chaining substitution by class, the [New] button was never enabled. (it was disabled if []SameAs was on, and then never enabled).
  - My new 94x94 encodings were actually 93x93. Patch by kanou.
- 5-Oct-2003
  - Got rid of GreekFixup and added Interpretations of encodings to FontInfo
  - PfaEdit failed to output ligature substitutions nested under a context/chain sub
  - If a font had more than about 5 nested ligatures, pfaedit would screw up its memory and (likely) crash
  - Fixed various problems pertaining to adding a kerning class to an empty font
  - Add a runtime check for the case where the user's system has a dynamic libpng installed without libz
  - If a character had ligature carets then PfaEdit could crash when determining its script
  - PfaEdit was reading mac 'kern' format 3 incorrectly.
  - Rewrote the Kerning class creation dialog. I hope it is clearer now.
- 2-Oct-2003
  - got rid of my strange 94x94 encodings for JIS/KSC/GB (based on the kuten array) and used instead the much more obvious encoding that everyone else uses.
  - BDF files were output with the wrong encoding name for JISX0208 (I was outputting "JISX208" instead-- missing a "0").
  - Autotrace failed to read potrace output properly if there were more than one contour in a given glyph.
  - Upgraded psunicodenames to the current Adobe Glyph List for New Fonts.
  - Simplify now works for quadratic splines. If one uses the []Allow Slopes to Change checkbox then results are not good. I need a better algorithem.
  - If asked to generate a type0 postscript font for a font encoded with an extended 1byte encoding (ie. one that had about 300 characters) PfaEdit would probably crash.
- 29-Sept-2003
  - When a path was both stroked and filled (in a postscript/eps file), pfaedit would ignore the stroke.
  - I forgot that the stroke linewidth needs to be transformed by the current transformation matrix. This meant that when a path should have been stroked by an ellipse (when reading a ps/eps file) pfaedit would blithely stroke it with a circle.
  - Added some support for reading the /Metrics array.
  - If there were a sharp corner (where the "radius of curvature" of the corner was less than the radius of the pen used to stroke the path) then PfaEdit would generate an incorrect path.
  - Round line joins were not a good approximation to circular arcs.
  - When filling the outline character view, rounding errors caused the fill bitmap to stray from the outline.
  - Extend the functionality of the magnifying (or minifying) tool so that if the user drags out a rectangle with it then the view will be shifted and scaled so that rectangle fits in the window.
  - PfaEdit will no longer auto-generate hints on non-integral boundries. In Type1 fonts such hints become meaningless and just confuse things.
  - PfaEdit will now draw a halo around points which will be part of a flex hint. See the UpdateFlex preference item.
  - PfaEdit now has as set of commands for manipulating typographic features in large lumps rather than one at a time.
    - Copy features from one font to another
    - Remove certain features
    - Give features a new tag
  - I have greatly rewritten the code for dealing with AAT fonts
    - PfaEdit now supports mac feature/setting values to be used as feature tags as well as opentype 4 letter tags
    - PfaEdit will now read any feature in even if it doesn't map to an opentype tag
    - PfaEdit understands the most of the state machines in the morx/mort tables (it does not understand ligature state machines, it parses these for all unconditional ligatures, but it will miss any condtional ones).
    - PfaEdit now lets you edit apple state machines
    - PfaEdit lets you specify feature/setting names in the font to override the default values specified in preferences
  - Added support for reading Apple's format 3 kern sub-table format (another way of storing a kerning class)
  - Oops. SVG didn't read relative movetos properly in a path option. Patch by Kengo Ichiki.
  - Simplify had a bug when passed a path which consisted of a single point with a zero length spline connecting it to itself
  - Simplify was not greyed out properly in quadratic fonts
  - Some of the low-level error routines consumed massive amounts of cpu time while waiting for events
  - The PostScript parsing routines would sometimes think that "noaccess" was part of the value of something in the private dictionary.
  - Several other patches to importing images by templates from scripts. By Kengo Ichiki
  - Importing pcf bitmaps into the background had some problems.
- 4-Sept-2003
  - the 17-Aug addition of context/chaining broke anchor classes. Should be fixed now.
  - Károly László has added Hungarian translations for the style codes to Font Info->TTF Names
  - If a font had comments, an svg file generated from it had syntax errors.
  - Add support for generating multilingual strings (in 'name') for the apple platform.
  - Add support for the packed gb2312 which mac and windows seem to use.
  - Make a UniqueID of -1 in Font Info mean that the font has no UniqueID.
- 31-Aug-2003
  - Add problems for maximum number of hints (96) and maximum number of subroutine nests (references) ~10.
  - I looked at AppleChancery again and figured out why I was having trouble parsing its 'mort' ligature tables, and put in code to make it easy to parse tables of this type.
  - After figuring that out, I realized there was a bug in my own table generation. Suppose we have two ligatures "f l => fl" and "s t => st", and are given "fst". Then my table would fail to find the "st" ligature. The state of 'read "f" waiting for "l"' would see that it didn't get an "l" and revert back to the initial state. It should instead have checked to see if "s" could start a ligature in its own right, and if so jump to the 'got "s" waiting for "t"' state.
  - The same fix needs to be done for contextual glyph substitution.
- 29-Aug-2003
  - PfaEdit failed to display the morx table if all it contained were simple substitutions.
  - PfaEdit generated incorrect simple substitution (AAT) tables if it found a substitution with no valid elements
  - New problem for find problems. Check for characters with more than 1500 points in them.
  - PfaEdit will now draw selected points in a different color (currently yellow), and draws them bolder. This makes them stand out better for Find Problems (but also makes it harder to distinguish between corner and curved points).
  - Redid the way PfaEdit handled arabic forms in AAT. Old method was cleaner but depended on behavior which is unspecified in Apple's docs.
- 27-Aug-2003
  - The preference dlg has been broken since about 12 July. Anything on the Preference->Font Info tab is probably wrong.
  - PfaEdit wasn't always getting the script/lang right when filling in the fields of the New Substitution dlg.
  - The newly generated apple state machines for context/chaining were quite wrong. I hope I've got them right now.
  - The []PSNames checkbox (in Generate Font, Options dlg) did the opposite of what it was documented to do. Behavior has been changed to conform to the documentation (and expectations).
  - PfaEdit would crash when loading some sfd files from a few months ago.
- 26-Aug-2003
  - When I added metadata to svg fonts (20-Aug) I inadvertantly put in two closing metadata tags. Which broke the font.
  - Fixed a bug conversion of context/chain coverage sub-table into a morx subtable.
  - Figured out in what cases I could generate a morx subtable from context/chain glyph or class format subtables.
  - Fixed problems reading required features from ttf files.
  - Updated French UI
- 25-Aug-2003
  - View->Show ATT didn't show contextual/chaining tables even if they would be put in the 'morx' table
  - View->Show ATT had problems showing anything in 'morx'
  - Make it possible to edit contextual/chaining lookups that are formated by class
  - parsing/generating ttf files with class format context/chaining had problems
  - loading a class format context/chaining lookup caused memory problems when closing the file.
  - PfaEdit would sometimes lose track of script/languages of lookups when reading from a ttf file
  - Added a conversion routine from glyph to class format context/chain
  - Kanou points out that not all encodings available in Font Info->Encoding are present in the scripting interface, and fixes that.
- 22-Aug-2003
  - Fix simplify again
  - Patch from Andrey V. Panov to improve bluevalues
  - KDE refused to make the find problems explanation window visible, so now I shan't make it invisible in the first place.
  - Generate mac family crashed instead (introduced 2-July)
- 20-Aug-2003
  - Support for potrace
  - Fix some bugs with simplify more
  - Mac build was badly configured and linked with a shared library it should not have.
  - When compiled with -O2 pfaedit had rounding errors which resulted in a bad bezier order3=>order2 conversion (PS->TTF)
  - SetPanose sometimes didn't
  - Patch from KANOU to set ulUnicodeRange for version 4
- 18-Aug-2003
  - PfaEdit did not interpret SVG relative paths properly, and did not generate correct SVG output because of this. PfaEdit was mistakenly assuming things should be interpreted as in the Type1 rrcurveto operator (where each point is relative to the previous point in the operator) rather than the rcurveto operator (where each point is relative to the initial point).
  - If PfaEdit opened a Bold font stored in OTF CFF format, then when it closed that font it would either crash, or screw up memory so that a crash would happen later.
- 17-Aug-2003
  - Support for contextual, chaining contextual and reverse chaining contextual sub-tables of GPOS/GSUB.
    - Will generate an Apple contextual glyph substitution table if:
      1. There is an apple feature which matches the otf tag
      2. The sub-table is in coverage format
      3. The sub-table contains either exactly one nested single glyph replacement substitution, or
         it contains exactly two single glyph replacements and one of them refers to the last glyph matched (and the other does not)
  - KANOU points out that on screens with high dpi PfaEdit would sometimes draw splines 2 pixels wide and sometimes 1 pixel wide (122dpi had this effect)
  - KANOU provided another patch for reading bitmaps one part covered a memory leak the other fixed a bug reading ttc files.
  - Added a LoadEncodingFile scripting command
  - New french ui.
  - PfaEdit was using the wrong definition of ascent & descent to set those fields in the 'hhea' table. This confused some mac programs (perhaps others).
  - Added a "BBox" item to CharInfo scripting.
  - Added a FontsInFile scripting command to return an array containing the fontnames of all fonts in a file. If an error occurs, a zero length array is returned.
  - Change so that when opening a file containing multiple fonts the font's filename contains the fontname (so it is possible to open other fonts from the same file).
  - Kanou provides a patch for compressing bitmaps with more than 8 bits of white space to their left.
  - Markus Schwarzenberg provides a patch to make pfaedit recognize $cidfamilyname as it should have done.
  - Add the ability to generate fonts which contain both OpenType and Apple Advanced Typography tables (ie. a font that should work everywhere).
  - Added Utf8(int), Chr(int), Ord(int) to interconvert between strings and their encodings.
  - Add two problems to Find problems
    - Search for substitutions, contexts, kerning classes, etc. which refer to a name which does not match any glyph in the font
    - Search for contexts, chains, etc. which refer to a nested lookup which does not exist
  - Add a new command line argument "-last" which will load the last sfd file closed.

  - PfaEdit would crash when importing bitmap fonts
  - PfaEdit would crash when trying to do an Element->Default ATT->Suffix to Tag command
- 3-Aug-2003
  - I still wasn't getting r2l kerns correct
  - Add support for vertical kerning
    - In 'GPOS', 'kern' tables of Open/TrueType
    - In SVG fonts
    - menu commands
      - Remove VKern
      - Vertical Kern By Classes
      - VKern From HKern
    - scripting
      - RemoveVKern
      - SetVKern
      - VKernFromHKern
      - Add a "VKern" item to CharInfo
      - Type argument to SelectByATT has changed!!!
  - Add support for other Pairwise positioning features.
  - Add a $panose command to return an array of panose values (scripting)
  - Add a SetPanose command allowing scripts to change panose values
  - PfaEdit was not rotating .vert glyphs properly
- 31-Jul-2003
  - Installed KANOU's fix for a buffer overrun
  - Installed KANOU's fix for compacted cid-keyed fonts
  - Fixed another bug with compacted cid-keyed fonts
  - Mathias Wollin points out that my pfm files don't have the correct kerning table format
  - Handles the case where a font has both a 'glyf' and a 'CFF ' table by asking user which to use
  - Various improvements to the goto dialog from James Crippen.
  - If the ttf "Apple" box got checked then it remained checked in subsequent Generate Fonts even though the [Options] dialog did not show it checked.
  - PfaEdit would crash if given an Anchor class with no marks.
  - Hmm... I notice that volt only uses format 2 coverage tables. I wonder if windows fails to handle format 1 tables...
- 30-Jul-2003
  - Add support for svg fonts (and add dependency on libxml2 for reading them in)
  - Add support for importing/exporting svg files (again libxml2 needed for import)
  - Add support for required features.
  - In quadratic fonts the ellipse tool did not draw ellipses
  - Add support for rectangles/ellipses drawn center out rather than just within the bounding box
  - Preserve the rect/ellipse tool settings across invocations
  - Put a license entry into the help menu
- 20-Jul-2003
  - made the default linux browser be mozilla rather than netscape.
  - If the metrics view were displaying an anchored pair (mark-base), and a character were typed into the text field at top before the anchored pair, then the display got very strange.
  - PfaEdit got confused when merging a font which contained multiple encodings for the same glyph
  - PfaEdit got confused if there were an lparen in a directory name (thought this meant a font collection).
- 15-Jul-2003
  - We weren't parsing any type3 fonts properly any more
  - Extend our ps interpreter to understand some of METAPOST's idioms better.
  - I used to call all characters which weren't in the encoding ".notdef" this could cause problems if a user forgot to name them. I now give them unique names starting with "NameMe". I still leave characters <256 called ".notdef" if the encoding calls for it, this may be a mistake...
  - Fix on 14-July to simplify was incomplete.
  - More fiddling with autohint
  - Added support for the new X11 opentype bitmap format.
- 14-Jul-2003 (Bastille Day!)
  - There are still cases where I'm getting the truetype point count wrong. If a truetype file had a control point that lay under an end point, then I would treat that as a "no control point" mark, and ignore the cp. But if I do that blindly I mess up the point count, so during font generation I must be prepared to put the cp back.
  - Kanou provided a patch to fix a bug in the underlying graphics library.
  - Add a popup menu to Show Att to allow those data to be saved (as utf8 text)
  - Fixed (I hope) right to left kerning
  - Added 'ccmp' entries by default for Hebrew
  - Fixed a couple of bugs with the new simplify more options
  - pfaedit didn't compile on solaris. It now does.
- 12-Jul-2003
  - Remove weirdness in scripting interface to TeX font parameters
  - Kanou points out that the code for reading format 4 embedded (ttf) bitmaps was ambiguous and would behave incorrectly sometimes. He provided a patch.
  - PfaEdit used not to create ghost hints for curved splines. It does now.
  - PfaEdit did not find some of the hints needed for n021004l.pfb
  - New French UI
  - PfaEdit would sometimes crash when autotracing characters
  - Don't snap to points when moving control points
  - Directory browsing didn't work if the local encoding wasn't latin1 and the directory name contain non-ascii characters.
  - Add an entry to find problems to look for 'GSUB' entries to non-existant characters.
  - Expanded the simplify more command
  - The GPOS output routines got very unhappy if a duplicate glyph happened to have GPOS data. Fixed on both ends I hope.
  - The pcf reader was unhappy if
    - the glyph bb width was a multiple of 8 (we read an extra byte per line which made the result appear as garbage)
    - several glyphs had the same name.
  - the FontInfo dlg failed to parse the merge_with field of Anchor Classes properly, meaning that each time [OK] was pressed in fontinfo each anchor class name got a number prepended to it.
  - Change the way the merge_with field of anchor classes is handled by the UI so that it makes more sense. We used to display a number, now display the name of another anchor class with which it can be merged.
  - Added an arabic text sample, courtesy of Thomas Milo.
  - Upgraded to Unicode 4.0 (Note: libuninameslist has also been upgraded)
  - Added a new preference item CharCenterHighest to assist in accent placement.

  - Oh. This isn't documented, but each langsys table can only point to one (1) feature with a given tag. So if I have multiple 'mark' lookups, I can't have multiple 'mark' features, I must have one 'mark' feature with pointers to many lookups.
  - PfaEdit could crash when generating a tfm file from a CID keyed font
  - Change GDEF output so that the class def table isn't generated when it isn't needed (we used to generate a 0 length one, which would confuse the freetype-1 opentype code, and perhaps others).
  - Fixed a bug in autohint caused by negative stem widths.
- 4-July-2003
  - Added a page to the font info dlg which allows users to set TeX font parameters
  - Added a mechanism for specifying TeX charlists and extension characters
  - Added a mechanism for specifying TeX Italic Correction
  - Revamped support for reading tfm files so that it sets all these new things correctly.
- 2-July-2003
  - Add an Options dialog to the Generate Font window, and remove the check boxes from it.
    - Add a UI for the 'PfEd' table
    - Add a UI to turn off PostScript hinting
  - PfaEdit can now generate a tfm and enc file (for TeX)
- Earlier Changes