- Improve the way glyphs are centered in the outline char view. At least I hope it's an improvement.
Oh. It is perfectly legal to have a context chain rule with no substitutions. This can be used to avoid matches in complex cases so:
[a-z] a b => does nothing a b [a-z] => does nothing a b => substitutes
will only substitute of "ab" is a word all to itself.
If the metrics view were displaying text containing non UNICODE characters then some edits in the text field which displays glyphs would leave us with the replacement character showing instead.
- Werner wants to know whether storage locations are uninitialized or not, and to get warnings when reading an uninit value.
- Werner wants to see IF statements indented in truetype instruction display.
- FF wasn't telling freetype to set the mono bit when loading a glyph, which meant that GETINFO would return the wrong value for mono rasterization.
- If there are too many numbers after an NPUSH[BW] instruction, FF silently ignores them.
- Anti-Aliased rasters still weren't aligned properly with the outlines in the debug window.
- When debugging I provided popup information for anti-aliased rasters. But I didn't for mono rasters.
- ff would crash when asked to debug fpgm/prep (because my rasterization routine didn't work if there were no contours).
- Werner wants to turn off auto goto in the charview when debugging is going on.
- The gloss information for delta point (and cvt) was wrong if the magnitude selector was 7. I claimed it moved (changed) by 0, when it should have been by -1.
- Werner wants to be able to set memory watch points on storage and cvt locations. Set these through the cvt/storage windows by clicking on the appropriate locations. Modify the points window so the user can set watch points by clicking on it too.
- The Points window would sometimes scroll in unexpected ways.
- Werner wants to see the raw value of a "WS" instruction in the gloss.
- merge fonts would get the script lang index of merged kern pairs wrong.
- Correct some of icc's warnings
- Apostolos points out that NAME_MAX isn't defined on solaris, but _POSIX_NAME_MAX is. But _POSIX_NAME_MAX doesn't seem to be defined on linux.
- Display fonts would crash if you tried to change the font. But introduced in last release.
- Patch from Mike FABIAN. Rasterizing by freetype only initialized a variable if CONFIG_TYPE3 (multilayer) was set.
- StrSplit & StrJoin scripting functions.
- Patch by RÃ¼diger Oertel. Strncat could overflow a buffer.
- Make simplify do point catagorization, and not just of points changed.
- Curved stems are also limited by geometry. Can't just assume control points work.
- Why are pdf files listed as a source of bitmap fonts?
- When examining a bitmap font, metrics view would crash when asked to look at a non-existant glyph.
- The list of verbs for indic glyph rearrangement didn't display.
- Converting from the mac korean encoding didn't work.
- Images imported into a bdf character did not set the character used bit.
- Add a CopyAnchors command.
- Patch from Raph Levien. FF mishandled seac if the accent were not translated.
26-Oct-2006
- If a large group of glyphs were autohinted at once, and one of those glyphs contained a reference to a glyph that appeared after it in the font, then that glyph would still end up with the dirty hint mark set.
- It was impossible to set preferences on the Accents pane. They would either always be 0 (or false), or make spurious complaints.
- Add a Ucs4 scripting command (reverses Utf8).
- when creating an array with [...] notation (in scripting) I forgot to dereference lvalues.
Add scripting commands
- Revert
- RevertToBackup
Make the "+" operator concatenate arrays
[1,2] + [3,4] == [1,2,3,4] [1,2] + 3 == [1,2,3]
Add a scripting command, FontImage, which generates a font thumbnail.
- Make it possible to save the Font Display dlg as an image.
- Clean up the Display dialog a bit. The concept of "unhinted" truetype is obsolete. Remove it.
- At Andrey V. Panov's request I have added a scripting command "CopyUnlinked" which behaves like Copy except that any references will be unlinked (turned into splines) as they are placed in the clipboard.
- I believe OpenType would prefer if formed arabic glyphs didn't use their unicode encodings, but used simple substitutions instead. Accept both for svg output (previously we only accepted unicode encodings).
- Patch from debian (bug392688) from Wojciech Mu*a and K*stutis Bili*nas
19-Oct-2006
- Patch from Mike FABIAN, array overflow in creating PS Private dialog
- The instructions out of date flag was only getting reset if the user made a change in the edit instrs dialog. If s/he just pressed [OK] it would remain on.
- Make libintl be another library we'll try to dlopen. This is complicated because on linux libintl is part of libc so there we must link directly. Further complicated because fink install script has a bug and doesn't put /sw/lib in DYLD_LIBRARY_PATH so we have to look there ourselves.
- Locale strings aren't required to contain an encoding (which the locale docs incorrectly call a charset). Michal Nowakowski points me to nl_langinfo which will give me the encoding even if not specified in the locale.
- Add pdf files to the standard format list for openfontdlg
14-Oct-2006
- New translations: Greek, Simplified Chinese, German, Polish.
- Using the help command would generally crash fontforge on cygwin.
- Adobe uses the American spelling of diaeresis (that is dieresis), but some fonts contain glyph names with the European spelling. So add that as an alternate.
- If a bdf font contained an unencoded .notdef glyph, then we crashed.
- Adding Greek translations for font styles. (Thanks to Apostolos)
- If we aren't dealing with a TeX math font, then the "Sub/super"script positioning fields of Glyph Info->TeX aren't meaningful. So grey them out.
- Remove internal/external did the wrong thing in expand stroke if we also removed overlap and had counter-clockwise splines.
- Alexej Kryukov points out that reverting a glyph with anchors lost the anchors.
- Add simplified Chinese style names to our built-in lists.
- Problem reading autotraced input.
- The encoding change of last summer broke tfm output with glyph lists or extension characters.
- If add extrema added a point too close to a start/end point expand stroke could generate NaNs.
- FF could crash when adding extrema to an open contour.
- Add Polish styles to the translation list.
- Add a scripting function to set the gasp table.
- Add support for the 'gasp' table.
- Alexej Kryukov wants format 6 cmap tables.
- After editing instructions the debugger would incorrectly complain that instructions were out of date.
- Michal Nowakowski complains that "Instructions are out of date" warning appears too many times when doing a global transformation. Make it only pop up as a dlg once and thereafter occur as a LogError.
- If a font contained only space glyphs it could still be marked onlybitmaps and not allow outline generation.
- Show ATT did not translate scripts & languages.
- Parsing an empty list of ttf instructions crashed Michael Zedler's machine.
- Make type1 generation use (essentially) the same subroutine mechanism as type2.
- Local subroutines were being freed twice in cff cid-keyed font generation.
- Removing an alternate unicode encoding (Detach Glyphs) was broken in some cases.
- FF failed to perform some simplifications on the last spline of a closed contour.
- Various fixes for Michal N.
- Add scripting interfaces to many of the ctype functions.
- Add a scripting interface to the 'size' feature, now that Adobe has finally decided what to do about 'size'.
- Had the wrong title for kerning state machine dlgs.
- Redo the preference dlg.
The two preference items, AlwaysGenApple, and AlwaysGenOpenType, were a bad choice on my part and have lead to considerable confusion. I mentioned some time ago that I would remove them if there were no objection.
There was no objection.
I have now removed them.
I also made the SetPrefs scripting function sort of work if the user tries to set one of these (it will set the appropriate flags in the default option set used by generate).
The defaults of these flags were different on the Mac from everywhere else. This meant that a script could do different things on the Mac and on linux. That seems like a bad idea. I have changed things so that the default options setting for generate is always OpenType.
THIS IS AN INCOMPATIBLE CHANGE AND SCRIPTS ON THE MAC COULD NOW BEHAVE DIFFERENTLY.
Patch from Michal Nowakowski to have ff number points after conversion to quadratic.
- Try to provide disambiguation for all strings "New" so that in languages where "New" must agree in gender with the thing being created translators will be happier.
- Remove the po/Makefile.in and redo the configure script to build it (so that I don't have to modify it each time I get a new language).
- Extend the knife tool so that if Meta (Alt) is held down it will move any spline it intersects (rather than cutting the spline).
- FF would crash if $HOME (the directory that is, not the environment variable) did not exist.
- I guess it makes sense that if ff read in a compressed sfd file then using a simple File->Save command (not Save As) should produce another compressed sfd file.
- When scaling a reference in otf output we had problems if the reference had more than one contour.
- If we deleted many glyphs from a font we are sometimes left with kern pairs pointing to things not worth outputting. Make sure we don't generate kerning info for them.
- Ligature carets were not being scaled by scale to em.
- Patch from mfabian at suse.
- If a user has a font with a glyph that is bigger than 16*em-size (in many dimensions) and that user generates a tfm file, then warn him that the glyph can't be expressed in a tfm file and truncate the size to the biggest legal value.
- Attempt to mitigate the effects of X claiming to have a font when it doesn't.
- Saving CID keyed fonts would look at garbage memory for its encoding data if not saved from the biggest subfont.
- Add support for version 4 of the OS/2 table.
- If Interpretation was set in a font then when generating a 8/16 type cmap fontforge always went down the traditional chinese (big5) branch.
- MS has changed their indic shaping engine. It still uses the same features but they are applied differently. To disambiguate this change they have created a parallel set of script tags for the indic writing system. FontForge should recognize these and use them when appropriate.
When Adobe first released fonts with a 'size' feature they did not follow the opentype specification. In August of 2006 they announced an incompatible change to bring fonts produced after that date in line with the specification. Unfortunately there are programs which depend on the old, broken format.
Legacy programs will not work when given a font in the correct format. New programs should be able to handle either correct or broken 'size' features.
A few of Adobe's programs make use of the 'size' feature, and XeTeX does. I know of no others (besides font editors). Both intend to upgrade their programs... So this may be less of an issue than I initially feared.
FontForge should now be able to read in a size feature in either format and gives the user the option of producing 'size' features in either format on output.
For Japanese fonts we tried to use cp932 (a variant of sjis) but then halfway through didn't know what to do with it.
- Another fix for saving sub-opentype fonts from a cid font.
- From a script, if a user asks to generate a ttf outline font with ttf bitmaps from a database with no outlines then technically this isn't supposed to work. But it used to and it's easy enough to tweak so that it works again.
- Update to Unicode 5.0
- Again when adding accents to the left of a glyph we should shift the glyph over to give it a reasonable lbearing.
- When building an accented glyph, we generally want use_my_metrics set on the reference. But if we add an accent to right (horn) or left (psili/varia on cap greeks) we want to turn it off. We did turn it off on the right side, but not on the left.
- Philipp Poll points out that ScaleToEm doesn't scale the OS/2 metrics (and some other stuff). Actually it does, but font info did the scaling BEFORE setting the values. So the metrics get scaled, and then reset to the values in fontinfo (which usually means they don't get changed).
- Fix some memory leaks.
- Some fixes for pcf loading.
- Various fixes to CID keyed fonts.
- Even the pretty ttf approximation routines need to worry about diametrically opposed control points.
- When generating multiple type1 fonts, output the bounding box of each as that of the full font. This will make it vaguely likely that applications will get the same line spacing.
- Oops. The vertical metrics bit wasn't preserved when flattening a cid font.
- Ack! Window titles and such were being interpreted in Latin1 and not in UTF-8.
- Interpretation of PostScript arc operator failed if the two angles were 360 degrees apart. Normalization made them both the same.
- Try to clean up bitmap only sfnt generation.
- pcf wasn't in the Open Font dialog format list (nor was pmf, nor pdf) Add a filter for TeX bitmap fonts.
- Provide a mechanism (if a preference item is set) for picking a cmap when loading a font.
22-Aug-2006
- 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 debugger.
- 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 (when loading a font).
- 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 of sizeof(pointer) then just round it up.
- lookup ordering within GSUB has been totally broken at least since I added the code 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 subrs 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
_
_ ... 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-
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 changed 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.

- 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.

- 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.
- Limited 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:
- It didn't take forward references into account, and would use the original width rather than the modified width of the reference.
- 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.
31-August-2005
- The mac fix for 25-Aug wasn't quite enough.
- I used to maintain a hidden value of the os2 linegap. This didn't change when users set linegap with font info, leaving users annoyed.
- It used to be that both the Hint->Add Hint and Hint->Create Hint commands would destroy all hint masks. Now we update those hint masks appropriately.
- The "Original" encoding was broken, and reencoding to it gaves us 256 blank glyphs before glyph0. Sigh.
The CodeRange bit for symbol doesn't mean the font contains any standard set of "symbol" glyphs, but rather either that it has a 3,0 cmap sub-table, or that there are glyphs mapped to 0xf000-0xf0ff in the 3,1 (unicode) sub-table.
Setting this bit should give you a symbol encoding as well as all the other encodings you've set bits for. It doesn't work under windows. It doesn't work. TrueType fonts do not provide a symbol encoding, while 'CFF ' fonts only provide a symbol encoding. But hey, let's support it anyway!
change View->Goto to know about this range as MS Symbol.
Importing an eps file (or pasting the x clipboard) made use of an uninitialized variable. (introduced 7-Aug)
- Cleanup pasting references from one font to another (gave some very strange results when pasting refs with no unicode encodings).
25-August-2005
- Recode the mac resource fork routines so that they no longer use the FSSpec structure. 10.4 complains about it.
- Bug in mm font charstring generation.
- If a font contained mac feature setting names, then when ff generated it, ff would produce duplicate entries in the 'name' table for these guys. One for the name in the font itself, and one for the name ff thought that feature setting should have.
- Nobody else puts apple unicode names into the 'name' table so I probably should not either. Adobe says one should not. Apple's website implies one should -- but Apple doesn't and its ttf website is not very accurate.
- When ff generated a ttf/otf font with applemode set and opentype off then the font would have version 'true'. Which means windows would reject it. That's probably not a good idea given that this situation is default on the mac -- even if we don't have a GSUB/GPOS table we should at least let the glyphs show on windows. On the other hand some people might want to make fonts that only work on macs. So add a configure flag.
- ff couldn't undo changing the lig carets (if it weren't compiled for multilayer)
- Copying a pairwise positioning left memory in a bad state.
- Coalesce all lookups with the same feature & script lang. This makes ATM happy about kerning on windows.
- When rasterizing a multilayer font we would sometimes get warnings from the stroker about how the stroke self-intersected. Get rid of those warnings.
- Pasting from a multilayered font into a normal one crashed
- If an order2 font were turned into a PS font, then characters with hint conflicts got no hints.
- Makers of fonts on the mac often use out of bound GIDs as flags in contextual su bstitutions. What I have seen is that one sub-table will insert such a "glyph" w hen a match is found, and then the next sub table will remove the flag, and perf orm subsequent transformations. This is important on the mac because there is a limited number of substitutions that can happen once a match is found, but if a match is found at the start (ie. the match being some magic marker glyph) then u nlimited substitutions are available. When ff first stumbled on these fonts it crashed, then it treated a gid>glyph_cn t as an error (and so it ignored the substitution). I've just put in code that c reates dummy glyphs for all these bizarre GIDs so (I hope) the font will work af ter passing through ff (only there will be some real blank glyphs at the end of the font rather than vaper-ware glyphs).
- The Active Hints pane (of Point Info) didn't always work if a glyph had more than one contour.
- Be more canny in the use of subroutines for references in type1/2 output.
- When generating contextual lookups, ff did not set the lookup count between gpos and gsub. So if a font had both contextual gpos & gsub elements ff got confused.
- The code for cff encodings (ie. in bare cff non-cid fonts) didn't handle multiply encoded glyphs
- Change the default color of the prev control point (so it's easier for me to see)
11-August-2005
- The configure script did not find libfreetype when it lived (solely) in /usr/X11R6/libs
- On the Mac, menus incorrectly suggested using Cmd rather than Ctl. (Cmd used to work on earlier versions of the X server, but now it is snagged by the X11 menubar itself.)
- ff uses the Alt/Meta key to alter the behavior of some tools (magnify, ruler, pointer, pencil, etc.) in the editing windows. This doesn't work well on the mac. First there is no real Alt/Meta key. If we contemplate using Option or Command it will generally already be used to turn the single button mouse into a three button mouse (Option - mouse => button 2, Command - mouse => button 3). So instead use the CapsLock key.
9-August-2005
- The big5 encoding stopped at 64000, which confused routines which expected unencoded glyphs to start at 65536.
- We would crash when reencoding a font with enough unencoded alternate unicode code points.
- The code for creating an 8/16 cmap subtable didn't work.
- ff would crash if it had two windows open on the same font and one got reencoded
- Didn't set the length of the format4 'cmap' sub-table, so the offset to the format12 (32bit unicode) table was wrong.
- ttfcopyfile can complain about a ttf table offset being wrong. Give it the info so that it will now tell us which table has the wrong offset.
- Uninitialized variable in metricsview when creating a popup window.
- Redo the ttfnames pane of the font info dlg. Now show the names as an editable list.
- Histogram dlg still used wrong encodings for selected glyphs when historgrams invoked from Hints menu.
7-August-2005
- SelectIf failed when passed an encoding which was out of bounds
- Added a new scripting command: ToString
- Using the X clipboard to paste a glyph into a glyph that contained stuff caused a crash.
- Using the X clipboard to paste a glyph with references or with multilayer did no t work.
- None of ttf, otf nor svg got multiply encoded glyphs output properly.
- FF screwed up memory when creating ligatures from an svg font.
- Merge fonts was writing to bad memory.
- FF was confused by a strange MM font
- FindExistingSlot should understand altuni.
- Font View didn't display current unicode of multiply encoded glyphs. (same for popups).
- Still having problems generating type1 code for complicated reference glyphs.
- Retain knowlege of multiple unicode encodings for some glyphs. Used when a glyph has multiple encodings and is reencoded.
- Add back an option to compact an encoding. It's not the same as the old compact which kept track of the former encoding. This just compacts, user must explicitly reencode.
- Force encoding didn't work if the new encoding had more slots than the old.
- FF also failed to parse glyph based contextual lookups properly
3-August-2005
- FF failed to parse class based contextual lookups properly (contextual chaining lookups were ok)
2-August-2005
- The OS/2 ulCodeRanges field has been broken for a long time, and has failed to mark the presence of any latin code pages.
- The ulCodeRanges field never set Vietnamese, TradChinese, Mac nor PC OEM
- FF did not support EUC-CN, ISO-2022-CN, ISO=2022-KR iconv encodings properly.
- Work around a bug in iconv's support for CP1258
- Put some code in to warn users about unknown language/locales in the ttf 'name' table.
- Enter some new language/locale codes for ms.
- Crash when moving the end of an open path in an order2 font.
- If one loaded an encoding specified by codepoint and then cancelled the dlg which asked for a name for that encoding, then ff would crash.
- Don't use Adobe's glyphnames when they are obviously wrong (use uni???? instead)
- Add (better) support for the new dotlessj
- Put a check into the context chain dlg to make sure that people don't add sequence/lookup pairs where the sequence number is too big.
- Make class be the default format for contextual/chaining substitutions rather than coverage tables.
- The format of the LineBreak.txt file changed with Unicode 4.1, so all the line break info is wrong (essentially lines never broke in text fields).
- Reference to bad memory when creating a popup in combinations list.
- Still problems in the 'name' table when Mac & Mac Unicode strings don't match.
- Use of the X clipboard for transfering glyphs resulted in a crash
- When generating an old-style 'kern' table (either OpenType nor Apple modes set) decompose all kerning classes into kern pairs as we do for AFM files.
- Scripting didn't have a way to generate a font with neither Apple nor OpenType tables. Add one.
- Oops. wrong default extension for otb fonts from scripts.
- Fix some potential crashes where loading font types left a new field unset.
28-July-2005
- Redesigned the way encodings are handled. From the user's perspective Encodings are no longer controlled by FontInfo, but via an encoding menu.
- If we create a bitmap strike in an empty font then change the fontview to look at the strike.
- The SetWidth command of FontView produced garbage defaults for empty fonts
- Don't set the hinting needed bit on: bitmap only fonts, multilayered fonts, stroked fonts nor quadratic fonts.
- Fix some problems with the generated names in File->Generate multiple
- The Save command failed to reset the font window's title (so it still looked modified)
- The enabled state of Encoding->Detach Glyphs was wrong
- FF still didn't allow two ligatures to be created for the same glyph (ie. it complained if you tried to make both "f + f + i => ffi" and "ff + i => ffi"
- Added a TypeOf command to scripting
- Added a GetPosSub command to scripting.
- Werner says negative widths and depths be set to 0 in tfm files.
- FontForge was generating an incorrect warning message. If a 'name' table contains a duplicate entry for a given platform/specific/language/id that's an error in the font. But ff conflated mac names with window names and so was only checking language/id. So if the mac windows names were different (which is probably a bad design idea, but not an error) ff said it was wrong. It can also be caused by using a character in the string which is not in the Mac Encoding for that language.
- Don't set "Hinting needed" flag in bitmap only fonts.
- AutoHint had a crash if there were open contours in a glyph being hinted.
- Add a couple of browsers to the list to check by default.
- Using the kerning pair closeup dlg to create a new kerning pair caused a crash (eventually).
- When saving a block of ttf bitmap glyphs all with about the same metrics,
- Kern pairs were not scaled to emsize when loading from an afm file.
Add a series of new selection commands, to the font view and to scripting:
- SelectChangedGlyphs
- SelectHintingNeeded
(just to scripting)
- SelectSingletons
- SelectMoreSingletons
- SelectFewerSingletons
Revert Glyph didn't work. One bug caused by multilayer, one caused by encoding changes, and one really old one.
- GetFontNames returned an uninitialized value on bad ttf files.
- Add some new scripting commands to access the TeX per-glyph fields.
- Werner suggested some improvements to tfm output.
- Cleanup behavior of generating ttf bitmaps in a script.
- I was attaching script/langs to lookups when parsing GPOS/GSUB. That wasn't good enough. Each sub-table and have it's own set, so attach script/langs to subtables as well. Still a flaw in that sub-tables could be referenced through severel extension sub-tables or directly and I don't unravel that complexity until too late.
- ATM which handles some kerning for otf fonts for Word, does not handle 'kern' features where the feature contains more than one lookup. So whenever we have a feature with multiple lookups try to compress them into one lookup with multiple sub-tables.
- Transform (in fontview) and Scale To Em do not scale the vertical advance.
- We didn't test the right thing when deciding where a subroutine containing refs began.
- Remove Undoes was broken by the encoding changes.
- When saving multiple, make sure we don't get extraneous kerns. (to glyphs not in the current sub-font).
- Make sure the blue lines (marking hints needing to be updated) get cleared properly.
- Some display problems in the SameGlyphAs command.
- The Apply Substitutions code did not consider the possibility of loops: a->b->c->d->a
- Werner suggests indicating multi-layer in the version string.
- Mark to Mark anchor classes should allow each mark glyph also to contain a base mark entry.
- Give unicode name data (in grey) for dotted names. (ie for A.super give unicode name data for "A", but in grey so it stands out as modified).
- Add scripting routines to detach glyphs from the encoding and to remove them from the font.
- FF produced some very strange 'gasp' tables... depending on the bitmap fonts in the sfd and not on the bitmaps in the output ttf for one thing.
- Werner wants an Invert Selection command.
- The position of Coptic and Glagolithic has been shifted in Unicode 4.1 (shifted from some earlier proposal).
- Patch by KANOU, ttc files were broken.
- Some english language strings in the ttfnames pane of fontinfo where sort of bound to equivalent fields in the names pane. Make this clearer, and consistent.
- Werner thinks my error messages for scripts should be improved.
- Add a check in case sfd files contain unreasonable values for pixelsize, etc.
- Werner suggests a --dry
argument which does syntax checking without actually executing the script. I think it is trivial. - Werner points out that the DSC Version comment has a very
specific syntax:
%%Version:
is a real, is a uint. So we can't use the font's version string here (which might be anything). Instead we now generate a version comment %Version: rather than a DSC Comment. - We used to assign a unicode value to ".notdef"s when reading ps encoding file, if the encoding was in the region of control chars (so location 1 would get uni0001, while location 65 would get -1). Seems inconsistent.
- Oops. I failed to provide a mechanism to add other iconv encoding names into my menu.
- Code to support group display.
- Was not reading ps encoding files properly.
- Remove encoding should always be available.
19-July-2005
- Extend to Unicode 4.1
- Change to configuration system to allow relative pathspecs for --with-freetype-src didn't work.
- Context chain dlg had problems with empty patterns (no terminal NUL in empty string used to represent them)
- The [EditData] button in contextual fontinfo pane was disabled due to reasons which are no longer valid..

- Add move up/down buttons to the kerning class dlg (class lists area) Use the selection from the class lists to highlight offsets.
- Print sample did not handle kerning by classes.
- When we had: a glyph which contained refs where that glyph was itself used as a reference in another glyph and all glyphs (except the last) lived in subroutines then we got multiple declarations of hints and the middle glyph was translated from where it should have been.
- When changing lists they should not scroll back to the beginning.
- Various fixes regarding hints: changing hints should set the char changed flag changing a glyph should mark all glyphs that refer to it as having out of date hints display out of date hints in font view. hints weren't being preserved (and should have been) in charview in Paste and transform.
- Apply Substitutions was badly broken when ff compiled with multilayer.
- Kern Pair dlg looked at garbage memory when it closed (and crashed sometimes).
- ff decides whether to add a 'gasp' table to a font based on whether the font has instructions or not. ff's own ttf fonts contain instructions in .notdef but nowhere else, so ignore .notdef when making this check.
- One more attempt to rule out absurd results in simplify().
- if the lsb/rsb dlg was given a negative value it complained about negative widths. (whether the width would have been negative or not).
- $italicangle has been broken since I added reals to scripting.
- The kernclass dialog did not handle deleted classes properly.
- Add ability to undo hints.
- Once again starting a browser on windows is broken.
- We didn't do a bounds check when indexing into the names array of an encoding (when building a character from scratch). If the index was huge the result was garbage, generally leading to a crash sometime thereafter.
- An open path consisting of a single point caused replace with reference to crash.
- Generating a postscript resource font on the mac from a script did not work.
- Werner points out that afm files generated by FontForge still claim to have been made by pfaedit. Oops.
- Didn't parse user defined encodings properly and often omitted the first glyph.
24-June-2005
- Improvements in the way type42 fonts where handled in printing.
- Fix a crash when parsing mangled cff files
Marvelous triple bug:
- Adobe's Tech Note 5176 (cff format) says that a private dict is required. They mean it's required in a type1 font.
- Because of this I put a null private dict entry into my cid cff fonts.
- ghostview finds the null private dict entry and tries to read data from it even though it is of 0 length.
Add postscript code necessary for loading a cff font to my cff font output.
- Fix some uninitialized variables in the display dlg.
- We didn't get DSC pages properly when printing a CID keyed font.
- The default (notdef) glyph generated by my palm output routines was a little wonky.
- The rle image reader in my sfd routines had an off by one error causing it to reject some images.
- We used to munch memory when loading empty glyphs from mac NFNT resources.
- It used to be that we didn't set the default background until the first font view window was opened. This meant that if we loaded a grey scale bitmap before opening a window (ie. from the command line) then that bitmap's clut would be relative to white rather than the appropriate background.
- Add some code to protect against badly generated bitmap strikes in sfnts.
- vhea & vmtx tables were generally wrong in otf fonts (unless the last full vmetric happened to be the last full hmetric). Also fix problems with cid hmtx output.
- The sfd reader looked in the wrong place for sli information in cid keyed fonts.
- Damn. Default output (for stdout) encoding never gets initialized when in a script.
- I realized a few months ago that there is a difference between encodings based on names and encoding based on unicode codepoints. Unfortunately I was only saving encodings as though they were based on names (generating default names if necessary). This patch retains the distinction even when encodings are saved to the preferences folder.
- AddAccent behaved differently when passed a glyphname and a unicode code point. In the first case it used the glyph specified. In the second it performed an arcane search which would not always use the specified glyph (left over from the days when it was important to use a glyph in Adobe Standard so you could do a seac).
- When debugging composite glyphs ff failed to notice when we switched from one glyph to another and so failed to reset the instruction list to those of the new glyph.
- Problem with cubic to quadratic spline approximation. Fixed by a more careful comparison between original and resulting spline.
- Kerning (and Anchor positioning) didn't work when printing to pdf.
- Won-kyu Park points out that ff's internal utf7 parser (deep in the guts of sfd.c) only parses utf7 strings as produced by ff. He took a utf7 string produced by python and inserted it and ff could not read it. He provides a patch to fix the problem.
- If we got an invalid second order spline, let's fix it up into some vaguely reasonable form, so the poor user doesn't keep getting errors.
- Extra "-" in type42 header removed.
- The anchor dialog was all screwed up.
- The test in show att that all components of a substitution existed failed to handle a trailing space.
- Make page Up/Down work in Show ATT
- Sometimes the simplify algorithem fails to converge.
- When generating a tfm file the width (height, depth, ic) table was being scaled twice.
- Remove a NaN that occurred when moving quadratic splines.
- Oops. The unicode code point of a glyph was restricted to BMP by Glyph Info dlg.
- Werner gave me a font where the glyphs were not properly ordered. So you can't tell the length of a glyph by loca[i+1]-loca[i]. The data appear valid in spite of that. So put in a warning for this particular case (we were generating a warning, but it wasn't as meaningful as it might be.)
- Make View->Show ATT aware of the mark attachment class info so it can show the classes.
- When interpolating to quadratic fonts where the two designs didn't match then the various possible errors gave us bad splines: Different numbers of points on the paths meant that the control points at the end (after we reached the end of the contour in one design but not the other) didn't match. Different designs meant that interpolating a line (with no control points) to a curved spline again produced nasties.
- Drag and drop was broken.
- Extend lookup flags support to include mark attachment classes (as defined in GDEF).
- Bad argument type checking on the AddAccent scripting command.
- Infinite loop in a rare case involving a flex hint at the start of a contour.
- The merge fonts command would crash.
- Problems parsing some bare cff fonts.
2-May-2005
Add support for Mark Classes.
- New pane in Font Info to create them
- New field in the feature tag dlg to use them
- Input/Output routines
Drag and drop was broken
- Infinite loop in some bizarre cases when generating a hinted opentype font.
- The Merge Fonts command was broken
- The scripting command: AddAccent checked for the wrong argument type
- ff generated an error when loading some bare cff fonts.
- Store desired fontview sizes in prefs file
- Add a tweak to make the mac's dynamic loader look for fink libraries
- Problems parsing bare cff cid-keyed fonts
- recognize that code page 932 is a variant of SJIS
- The feature tag 'nutf' is an obsolete name for 'afrc'
Add a couple of new scripting functions
- Int() which casts its real/int/unicode argument to int
- UCodePoint() which casts its real/int/unicode argument to unicode
scripting CharInfo no longer creates the glyph it is asked about
- WorthOutputting/DrawsSomething can now be applied to the current selection
- When using the freetype rasterizer don't do an automatic close of open paths.
- For SCWorthOutputting I used to check both that !widthset and width==em-size. Remove the em-size check, should be redundant and somethimes (marks) is wrong.
- The various FindBounds routines didn't pad stroked fonts appropriately
- Discrepency in docs and code on spelling of scripting Auto[tT]race command. Accept both variants
- A debug statement was left in the ps interpreter
- Make the help command look for japanese docs in the ja locale
- Add a select fewer scripting command
- Fix some problems with custom encodings
- Support ' ' and ' ' as line-endings for backslash continuation
- New version of Japanese UI
- The kerning pair dlg would sometimes fail to display a pair when searching on the second char of the pair.
- Danish translation of some style names, courtesy of Anders Lund
- Fix some problems with SJIS encoding
- The point info dlg was quite unusable if you typed in somethng which wasn't a number
- When in debug mode display pointer position in pixels
- Point Info had problems with order2 splines
- The instruction pane of the debug window was interpretting keystrokes it should not have
- Peter Selinger has changed the way potrace is built so it no longer uses cygwin (it uses MinGW instead). This means ff can't pass it the name of a temp file as '/tmp/foo' because (on windows) /tmp is a cygwin fiction. So continue to put the file on cygwin's /tmp, but cd to that directory and then pass the bare filename.
- Add some more greek PUA small caps
- Add scroll bars to debug windows which lacked them
- Add a gloss window which explains what a ttf instruction is going to use and what it is going to do.
- Was using the wrong accent to build cyrillic breves.
- Remove the adobe private use defs from libgunicode and put them in fontforge.
- ff had problems reading pfm files containing kerning pairs using non-existant chars
- Add pixels per em in register view.
- No contours in twilight zone
- When generating tt fonts we did not set bit 8 in 'head'.Flags. This gives bad results when ppem is not an integer
- When reencoding to adobe standard (or any encoding where glyph names are more important than code points) make sure we use glyph names rather than code points (so "f_i" is not in AdobeStd while "fi" is. But they map to the same code point).
- When creating a debug window in a glyph with no instructions (or in which 'gasp' has turned off hinting) we used not to rasterize it.
- Script/lang count was wrong in a number of places
- Oops, the transform dlg and menu both used the "round to int" string. Then I changed what it looked like in the menu, a change which is not appropriate for the transform dlg. Add a new string just for the dlg.
- Tavmjong Bah added something to the "ypogegrammeni" list.
- Fix problems with multiple text fields in the same window all wanting input contexts (for input methods).
- We generated ligature code in morx for ligatures that were not worth outputting.
- Pierre Hanser points out that a recent change to SetWidth broke the scritping SetWidth command.
- Yet more effort to remove rounding errors from remove overlap. If a control point causes a slight overshoot we get an unexpected extremum very close to one of the endpoints. If it's close enough this can cause problems. Tweak cps so this does not happen
- Solaris stores isnan & friends in ieeefp.h not in math.h
- Add scripting access to standard math functions (trig, exp log)
- Unary minus didn't work on reals
- The recalculate bitmaps button in bitmap view was getting munched when we updated the cursor position.
- CharInfo("BBox") returned gibberish
9-Mar-2005
- Deleting a glyph class within a kerning by classes object caused a crash
- Added some support for palm bitmap fonts
- Replace with reference only replaced the first instance.
- The Options dlg behaved oddly with respect to Apple & OpenType modes
- When given a glyph with conflicting hints for which the first contour contained no hints, then in type2 output the glyph was drawn at a strange offset from its correct position.
- When generating an opentype font from a script, and specifying flags, the round coordinates flag was ignored
- When generating a font from a script using the default flag setting, we would always generate afm/tfm/pfm files
- KANOU pointed out that the stroked font import glyph command only worked if multilayer set.
- Added a preview bitmap to eps files.
- In a bitmap only font the font metrics menu items behaved in unexpected ways (as if they referred to a postscript font rather than the bitmap fonts)
- Various fixes to make importing stroked eps files into stroked fonts work better.
- KANOU requests a preference item to turn off use of freetype in font view.
- Fix more rounding errors in remove overlap.
- Fix some problems in the routine which finds roots of an arbetrary quartic.
- The remove bump option of simplify could screw up memory.
- Remove overlap got unhappy about control points which caused a very tiny overlap between adjacent splines
- Redo from the fontview usually caused a crash.
- KANOU provides a MakeLine scripting command
- If TYPE3 (multilayer) was not enabled, there was a flow of control through a function which did not return anything.
- Recovery files did not contain multilayer marks which lead to strange behavior and crashes
- Converting a font to multilayer caused a crash if there were outline glyph windows open.
- Make the encoding for scripts be utf8 consistently
- Allow the scripting Export command to take a format spec
- Add support for reals to the scripting language
- NearlyHv{Cps,Lines} scripting commands erroneously complained about too many args
- ff had a bug when outputting otf contextual ligatures
- Fix various crashes and infinite loops involved in parsing bad font files.
- ff had problems with user defined encodings.
- Made ff work if the psuedo-type "real" was defined to be a double.
- the string += concattonation operator in scripting screwed up memory
- Problems with -c
syntax - The font type detector could fail to notice an svg file as such if it began with a byte order character.
- Ord didn't do proper type checking on its second argument
9-Feb-2005
- Use freetype's FT_Outline_Get_Bitmap to make freetype rasterize from our internal data structures. Use freetype by default for the fontview and metricsview (except in some cases).
- The bitmap dlg didn't work for multilayered fonts when told to use freetype to rasterize.
- If we had a contour nested inside another, and did an Overlap Exclude with the nested contour selected, then that contour was not excluded.
- The []Correct Direction check box when importing PostScript, didn't do anything. (or rather it did, but got overrulled later)
- In bitmap only fonts, bitmaps created without moving the width line would get lost.
- Added a scripting command "SelectByColor"
- Don't apply transformations to glyphs which aren't worth outputting
- Moving control points with the get point info command had problems in quadratic splines.
- When adding type42 support I broke multiple master support.
- Werner provided a patch to add a trailing newline to my type1 fonts.
- Support for PaintType==2 and stroked fonts.
- Various problems with the clustering command
- Oops, somehow a patch reverted and things didn't work on systems without iconv
- worked on a couple of other configuration problems for the mac
- Some people install libraries without headers. Be prepared.
- Uniscribe (MS unicode text layout routines) may ignore either the GPOS or the GSUB table depending on the script, and may even refuse to use the font at all if it doesn't have the right stuff in GPOS/GSUB. A Hebrew font must have both a GPOS and a GSUB. If it doesn't the font is not used. A latin font need not have either, but if it doesn't have GSUB then GPOS won't be used. So the script sub-table of both GPOS/GSUB should contain all scripts used in either (rather than just the scripts used in the current one).
- The AddATT scripting command didn't understand Nested.
- Add a cli argument "-c" to introduce a scripting command in an argument.
- Someone ran ff on a solaris box without iconv. (Odd because iconv is there by default). FF ran fine (Odder, why didn't it demand the library?), but crashed when it tried to use a conversion which didn't exist.
- There's another ASCII map in Unicode (0xe0000-0xe007f).
- Allow user to supply their own OtherSubrs routines (Some people object to Adobe's copyright).
- Codes to handle identifying a loaded font by relative filespec didn't work.
Change Add Extrema so that it only adds extrema if
- The spline length is >= em_size/32
- The extremum is an extremum of the entire contour containing the spline.
(Behavior in the outline view when there is a selection remains the same. So if the endpoints of a spline are both selected then all local extrema will be added to that spline, no matter how long it may be).
- Patch by Ralf Stubner. Fonts without UniqueID had a bad syntax.
17-Jan-2005
- CapsLock now makes the arrow keys scroll in the outline view
- We lost count of hints when generating type2 fonts in glyphs
with references to something containing hints which did not
overlap. If we were unlucky,
/8 was different than /8 and we ended up with garbage in the charstring. - Add a TeX table to contain TeX metrics.
- TFM output was wrong. the TFtoPL doc says "
- reencoding with original encoding could create a glyph table one too small resulting in writing/reading garbage and an eventual crash.
- KANOU fixed a couple of problems in reading glyph names from bdf fonts.
- KANOU needed to disambiguate between "Point" a unit of measurement and "Point" a geometric object.
16-Jan-2005
- Added support for OpenType Device Tables (These allow you to add small corrections to things like kerning at a given point size. Often at small point sizes kerning and advance widths will round in such a way as to produce unpleasing results. Device tables allow you to correct for that).
- Add dialogs for kerning pairs and anchors to allow users to set device tables. Extend dlg for kerning classes for this.
- Neil Parker suggested a patch for panose values that didn't apply to latin fonts
- Doing a Get Info on a single point caused a crash on the mac
- Further attempts to improve spline approximation, underlying Merge & Simplify commands
- Relaxed simplify's definition of parallel so it will merge a few more straight lines.
- Make the behavior of Simplify More consistant across font/outline view. Simplify More can now set the default behavior for future simplify commands.
- Provide a menu command to round to hundredths of a em-unit
- Add a new facility to cluster coordinates to the same value. Useful as a prepass to Remove Overlap.
- Bug reading ligature data from a tfm file
- Add support for GPOS 'size' feature. Create a 'size' pane of the fontinfo dlg
- Replace with Reference had an interesting flaw. Consider the open and closed bullet characters. If the (single) contour in closed bullet matched the outer contour in open bullet then it would replace it with a reference. But this is incorrect as the two contours of open bullet need to be treated as a unit.
- Could get a bad memory reference in the font view if the mouse were to extend the selection outside of the window.
- Add a scripting function to return whether a file exists.
- In a Type1 font, if a glyph had no conflicting hints (and no flex hints) and got put in a subroutine, then we'd get no hints at all.
- Be more willing to generate format12 cmap subtables (unicode, non-bmp tables)
6-Jan-2005
- New Copyright message, etc. Get rid of pfaedit message.
- Simplify produced strange results on quadratic splines.
- Simplify had problems with tangent points
- Changing a point's type from a tangent to a curve usually had unexpected results.
- Add a warning message in remove overlap when user passes us two intersecting contours which are oriented in oposite directions. Unfortunately it also complains about some other things.
- The 18 Dec changes to remove overlap introduced an infinite loop in some rare cases. (When there is a gradient of 0 in distance function between two splines).
- In a conditional operator (like && or ||) in scripting where the second operand was not evaluated and the second operand contained a procedure call, then ff would crash
- Tweaked the point info dialog to show small offsets better
- Tweaked the merge command to behave better when merging tiny spline segments (where the length of the spline segment is so small that it should just be treated as a zero length spline and its slope ignored).
- Added an "Invert selection" command to the outline view, from Yoshiki Hayashi
- Pasting from the font view did not clear a glyph's instructions.
- New version of AutoHint. I've removed Diagonal Stem hints and mimum distance hints for now.
31-Dec-2004
- Ah, windows pfm files expect the metrics to be output in win latin encoding order, not in the encoding defined by the pfb file. (Actually there are other posibilities for encoding, but as none is documented, I must ignore them).
- ReplaceWithReference broke at some point
- Add an argument-pair to the ReplaceWithReference() scripting command to allow the user to specify the amount of error that will be accepted.
- When generating a Type1 font, if a glyph had a single reference to a glyph not in adobe encoding, and that glyph itself had a single reference (in adobe enc) and some splines, then ff would make a reference to the ref in adobe enc and ignore the splines.
- Upgrade to Adobe-Japan1-6
Various fixes to svg output
- export glyph to svg didn't work
- multilayered generation had problems
Ghost hints could get outside a glyphs bounding box in a type2 font.
- The generated truetype unique id string had an off by one error in the month
- Add support for dashed lines in multilayered mode
- In Full Page Glyph printing, the glyph was offset slightly from where it should have been.
- Pasting a reference into a multi-layered font produced a very odd layer
- ff didn't update the metrics view if the user pasted the selection with the middle mouse button.
- if a character were not in the current encoding then ff would not display it in the metrics view (even if it were in the font)
- Make the behavior of control points at the ends of open paths more reasonable.
- The Point->Curve command did not adust control points correctly.
- The View->Display Substitutions had numerous problems.
- Fix several problems from unicode unification of accents. Many characters which are said to be based on cedilla actually use a comma, other characters said to be carons also use comma. Make the n-with-apostrophe character be treated as an accented letter.
- Werner points out that straight lines should generally not be simplified (as they will no longer be straight afterwards). Add this knowledge to the simplify command.
18-Dec-2004
- Added a raster debugger wndow
- Each time debugger starts, remember what debug windows were open last time it was used.
- Constraining the pen tool did not do what I expected
- If a glyph was encoded twice (or more) in a font, and an opentype font (or perhaps a bitmap only sfnt) were generated, then any glyphs after the second encoding would have the wrong width (ie. there would be an extra entry in the horizontal metrics table corresponding to a (non-existant) copy of the doubly encoded glyph)
- If a type1 font never defined .notdef but used it at least twice it the Encoding vector, then ff would crash.
- Updated Japanese UI (by KANOU)
- Werner found some crashes related to calling isalnum (etc.) using an index outside of bmp.
- More changes (I hope improvements) to remove overlap
13-Dec-2004
- Some fixes to the raster display of the debug window
- Conversion of cubic to quadratic had a rounding error introduced by -O2. Made it a bit more forgiving about rounding errors.
- Added two new buttons to the point info dialog to allow the user to walk around the current contour (Normally the Next button skips to the start of the next contour if you are at the end of the current one, the "Next On Contour" button returns to the first point on the contour)
- improve interpretation of some type3 fonts (including those produced by fontographer 4)
- patch by Yoshki Hayashi to fix mnemonic crash in layers palette
- Added a rand() scripting command
- Support backslash newline to break up lines in a scrpt
- The internal adobe standard encoding thought it was unicode causing strange effects
- Type3 fonts that set colour/grey didn't work
- Printing at 140pt tried printing 4 glyphs across although there was only room for 3
- At install tell pkg-config the verson of fontforge
3-Dec-2004
- If a cff file contained unencoded glyphs then ff would crash when loading it.
- When converting from cubic to quadratic splines, ff would sometimes produce a line when it should have found a spline
- During debugging of a ttf glyph, show what rasterization would produce if the current splines were used (highlight pixels which change)
- The debugger windows didn't always say "
" when they should have. - The debugger would often crash the second time we closed its window
- Asking for the script (as latin, greek, cyrillic...) of ".notdef" caused us to look at unallocated memory.
- We weren't labelling control points in the debugger
- debugger and grid fitter for tt fonts showed curved splines as lines
- Kerning pairs did not get scaled when changing em-size
- Add a preference for turning off automatic gotos as the user types in the glyph window
- Add a command to the glyph window to toggle between the two most recent glyphs used in that window (a mini history)
Improved the points debugger window to show
- implied points
- whether a point is on or off the curve (normal or control)
- added a scroll bar
Provide info on debugging points as mouse moves over them.
- Fix (an innocuous) reference to unallocated memory
- Added ability to insert an uninterpreted table into an SFNT
- New preference item: PreserveTables which lists a comma separated set of table tags which are to be loaded from SFNT files without interpretation (Note if ff thinks it understands a table it will parse it rather than preserving it)
- Scripting command LoadTableFromFile("tag ","filename")
- Scripting command SaveTableToFile("tag ","filename")
- Scripting command RemovePreservedTable("tag ")
- Scripting command HasPreservedTable("tag ")
22-Nov-2004
- Kevin Schoedel suggests a new scripting command DrawsSomething()
- Kevin Schoedel requests that PrintFont be able to print a string sample (as opposed to a sample file)
- Kevin Schoedel points out that type1 fonts stuffed into mac resource forks are to be read in resource order rather than file order (often the two are the same) and provides a patch to fix this.
- Change the way the default language/locale is picked in fontinfo->TTF Names
- Remember (across invocations) whether palettes should be hidden or not.
- Ignore NUL chars when reading PostScript strings (PS supports NULs in strings, I'm not going to bother, but I don't want to parse incorrectly because of them).
- ff lost the ability to Select("U+xxxx") or Select("=") from a script.
- Oops, the routine to read PostScript FontNames from a ttf file was broken by the encoding change.
- If a ttf file contained an erroneous composite glyph with flags indicating more components after the glyph had run out of data, then ff might attempt to read instructions also and have problems.
- If a font contains multiple ttf names for a given string in a language then allow the user to pick which one s/he likes best.
- Another case where a bad otf table crashes fontforge
- If a ttf/otf font does not contain a postscript FontName string in the name table, then ff's attempt to synthesize one out of fullname/familyname did not check for a valid name.
15-Nov-2004
- If ff started without a prefs file, then creating a new font would crash
- If a copyright string contained a newline then ff would generate bad postscript
- If user added a comment to an empty glyph then the comment wasn't saved in the sfd file.
- If ff saved a utf7 string to an sfd file (ttf names, etc.) and that string contained a hyphen that followed immediately after something that needed to be encoded in base64, then the hyphen would be lost.
- new french UI
ff was (usually) setting the ascent/descent fields of the 'hhea' table to 0. When the font was drawn on the mac it was clipped to nothing. Caveat: Old sfd files are still broken and there is no UI for fixing them. Instead you must edit them manually, and change:
HheadAOffset: 0 HheadDOffset: 0
to be:
HheadAOffset: 1 HheadDOffset: 1
12-Nov-2004
- ff would crash on postscript fonts where the encoding included a glyph name not defined in CharStrings (probably broken on 12-Oct)
- More remove overlap work
- In the glyph window, when the scaled distance between the top and bottom of the window is less than 1 em-unit, then the vertical ruler was drawn with the top and bottom labels reversed.
- sfd files used to have a limit of 1023 characters in ttf 'name' table strings.
6-Nov-2004
- Encoding change broke prefs dialog
5-Nov-2004
- Encoding change didn't work on libiconv systems
4-Nov-2004
- Added a new scripting command: AddAccent() to add an arbetrary accent to an arbetrary glyph.
3-Nov-2004
- KANOU has a Japanese version of this reference manual under construction.
- In MultiLayered mode, the "New Layer" menu item left a dangling pointer which caused a crash if anyone looked at the background layer.
- In MultiLayered mode, if one clicked beyond the last layer in the Layers palette, ff would crash.
- KANOU provided a patch to fix another crash in the layers palette.
- KANOU has provided a new Japanese UI.
- Made an addition to CharInfo() scripting command so user can determine the horizontal extrema of a glyph at a given vertical position. Similar addition for vertical extrema at horizontal pos.
- Add a scripting command (PasteWithOffset) to allow user to apply an offset when pasting. For building accented letters by hand.
- KANOU provides a patch to fix a problem in the new encoding stuff.
- Select(".notdef") usually didn't work.
28-Oct-2004
- Kanou noticed that ISO 15924 has been updated and provide a patch including new scripts.
- I have redone the way ff handles encodings internally. We used to depend on the encodings builtin to gdraw/gunicode. Now we use iconv() (if there is no iconv, then ff will use a dummy iconv which understands the encodings of gdraw/gunicode). Encodings are identified by name rather than by number now.
- Further fixes to the extremum detector
- Further fixes to remove overlap
- Added an extra argument to scripting RoundToInt, so that you can have control over what it rounds to (ie. round to hundredths, tenths, etc.)
- Added two new scripting commands NearlyHvCps() and NearlyHvLines() which look for control points or lines that are nearly horizontal or vertical and force them to be horizontal or vertical.
- Kanou provided a patch so that the GRadio.Font resource controls the font in the layers palette of the glyph view.
23-Oct-2004
- Remove overlap had problems with splines which made abrupt turns (ie. tiny splines after we found extrema points and divided the spline into bits between extrema)
- Remove overlap could munch memory
- The ruler tool showed all tiny splines as having a length of 0
- Autorecovery had problems with glyphs containing features (would complain about sli)
- KANOU wants to be able to scale greymap fonts
- removed routines from fvcomposit.c, metricsview.c that were duplicates of fvfonts.c
- Oops, the default mac filesystem isn't case concious either, extend the windows export patch to the mac.
- Simplify didn't have a very good extremum detector and would sometimes delete extrema.
14-Oct-2004
- Remove overlap had problems with tiny splines.
13-Oct-2004
- I notice (in Fontes & Codages) that the labels in the metrics view aren't translatable
- Fontes & Codages suggests that it would be nice if the glyph labels in the fontview could be something other than an image of the glyph (glyph name, unicode code point, encoding, etc.)
- Change the word "Character" to "Glyph" where appropriate.
- Move the Open Outline/Bitmap/Metrics commands to the Window menu, and change "Open" to "New".
12-Oct-2004
- We have a Spanish UI now, courtesy of Walter Echarri. Yeah!
- Support for loading type3 fonts (that ff produced) was broken. Note: ff is still unable to load many type3 fonts (any that are filtered, or that use images for example), but it should be able to read its own fonts.
- (I hope) minor change to the way .notdef is handled when reading postscript files.
- Added support for printing to pdf file
- (fixed a bug in pdf generation from the export command)
- Fixed various problems from turning off the multilayer bit in fontinfo
- KANOU needs a couple more strings disambiguated.
- Add support for generating type42 and type 11 (type42 cid) fonts, add support for loading type42 (but I'm not bothering with type11s) and use these guys when printing order2 fonts.
- Check to make sure the PostScript Fontname is valid when reading in a truetype (or svg) font (syntax doesn't enforce this), and if not warn the user and fix it up.
- Add some new scripting commands for handling MM fonts since someone seems to want them.
- Used to complain if there were more than one Unique Font ID in the truetype 'name' table. (because the OpenType list said there should only be one, else it would not be unique). But both Apple and MS ship with fonts containing multiple Unique Font IDs. God knows what that means, or when you pick one over the other... Anyway I changed my error into a warning.
30-Sept-2004
- I have rewritten Remove Overlap from scratch. I seems less likely to crash, but I'm not sure that in any other respect it is improved.
- In the character view the Remove Overlap (and Intersect and Find Intersections) now only work on selected contours, or, if no contours are selected then on all contours. This change makes these commands consistant with most other commands in the character view, but it is a change from past behavior.
- The Import scripting command has been extended to give the user control over the stroking flags (correct direction, remove overlap, handle erasers). And the background flag has been extended a bit to apply to other things than bitmaps.
- ff had a pointer dangling to a freed block after loading a font containing multiple versions of some greek letters.
- U+1D400-U+1D7FF are stylized variants of the latin and greek alphabets as used in Mathematics. The font view will now display (in the glyph header) the proper variant of the glyph (assuming it can find a font with that style).
- The AMS (American Mathematical Society) has their own interpretation of the public use area. FF now understands their glyph names as alternates for those glyphs, and has an AMS interpretation (under FontInfo->Encoding) that will make ff use those names in new fonts.
- Many of code points in the AMS PUA are reencodings of other glyphs. FontForge will automatically generate these reencodings for you.
- The AMS also describes how some TeX glyph names map to unicode. So include those names in our alternate list too (so we can map them correctly, not as a way of encouraging people to use them).
- Both the AMS defn. of the PUA and the Big5 defn. map characters which are properly in other unicode planes into the BMP. FF now understands this, and converting between a BMP encoding and a full unicode encoding will move things from the PUA to their proper unicode slot in higher planes.
- Find Problems thought that adjacent splines intersected at their common end-point. I suppose they do, but it isn't useful information
- In the char view, I used to blank out the status line when the mouse moved outside the window. But some of that info is still valid. So only blank out the meaningless bits.
- Kanou requests a disambiguation between two strings with the same label in English but different meanings in Japanese. (Vertical/VerticalWriting)
- The Point->Make Line command would crash if either of the two points was missing a previous or next spline.
- Pierre HANSER provides a patch to problems.c (it would crash when dealing with fonts with an encoding with < 32 code points.
- Pierre HANSER provides a patch to merge fonts (it would crash when merging bitmap fonts.
- Closing a charview window with a docked palette could cause a crash if the cursor was moved quickly into another charview which needed a new cursor.
- The perspective icon had the wrong background
- Piska keeps complaining about the way ff handles 0 width strokes. He wants it to have zero width (disappear, I guess), but PS says it should be stroked as the thinnest line possible (not clear what this should mean in ff, I interpret it as a 1em-unit stroke). But METAPOST uses a 0 width stroke in cases where it wants no stroking (with a fill) so in the special case of a fill with a 0 width stroke, turn off stroking.
- Use a different approach to approximating a set of points with fixed slopes at the end points. Used to do least squares (fixup slopes), least squares again (fixup slopes). Now I do least squares (fixup slopes), perturb the lengths of the slope vectors until we find the best fit.
- I was generating flex hints when I should not have done so. Add a heuristic so that ff doesn't add flexes to small circles.
- Failed to read long format pk bitmaps.
- Patch by Mchael Ghrken to make the Skew scripting command take a numerator/denominator style argument.
24-Aug-2004
- Oops, didn't get the expand stroke scripting patch quite right
Changed the way preferences are handled in scripts
- By default preferences are no longer loaded when starting a script.
- Preferences are not saved in a script unless explicitly requested.
- Added 2 new scripting functions LoadPrefs() and SavePrefs()
- Added an environment variable FONTFORGE_LOADPREFS to give the user control over loading of preferences.
Used to have a preference item DumpGlyphMap. Now we have an equivalent flag in the Generate Fonts [Options] dialog.
- The SetPanose scripting command didn't work. MURAOKA Taro provides a patch
- It was not possible to get or set NewCharset preference item with GetPref/SetPref scripting commands. Now GetPref returns a magic number, which may be used in SetPref. SetPref will accept either a number or one of the encodings accepted by Reencode().
- If you copied a glyph feature from a glyph that didn't have that feature, and then did a paste ff would crash.
- Added two new tools to the outline character view. One allows you to rotated your glyph through 3dimensions (and project it back on the xy plane), the other allows you to do a perspective transformation.
- Extended the Transformation dialog to handle 3D rotation+projection. After all it's just: cos(y-axis-rotation) 0 0 cos(x-axis-rotation)
- Add a Point of View dialog to do real perspective projections
- Remove the FONTFORGE_CONFIG_NONLINEAR flag, and enable the nonlinear dlg perminantly. I need some of its routines to do the perspective projections.
- There was a path through LoadEncodingFile (in a script) where it would silently fail.
- LoadEncodingFile would save default encodings even though it hadn't loaded them. It no longer does this, but now SavePrefs does it instead.
- Added the ability to see (and create) simple substitutions in the font view.
- The embossed box around the fontinfo dlg wasn't always in the right place
8-Aug-2004
Zhang Lin-bo reports two bugs (which were really three)
- Expand Stroke failed when given a path consisting of a single point had a zero length spline returning to itself.
- AddExtrema falls into an infinite loop if the initial spline of a path needs an extremum added to it.
- Expand Stroke generates garbage output in some very obscure conditions.
- AutoHint crashes when given garbage input.
Michael Gährken points out that ExpandStroke scripting command doesn't work for caligraphic stroking, provides a patch and an extension.
- KANOU provides a patch for BDFMakeChar in CID keyed fonts.
- Change the Shades palette in the bitmap view so that it shows what grey level is underneath the cursor.
- When the width is huge, then moving it causes it to wrap into negative values. It should probably stick at SHRT_MAX instead.
- If one moves to a negative width and releases the mouse, an error message pops up warning of this. If you move the cursor around the width continued to change.
- If one moves to a negative width, and in response to the width warning says [No] then the width reverted to the wrong value.
- ff would crash on a postscript sequence containing "{}" if that was the first function defined.
- I got the locale wrong for Hong Kong
- If nothing was selected in the import dlg (or any of the file open dlgs) and the user pressed [OK], then the directory would be returned.
- Improved error message for Import dlg.
- In spanish various dlgs had buttons that were too close together (and similar problems)
01-Aug-2004
- ff did not generate amfm files correctly
Changed the Merge Kern Infor (menu item and scripting command) to
- support pfm files
- detect file type from the file header rather than from the extension
Added InterpolateFonts as a scripting command
- Added GetEnv as a scripting command
- The scripting $fontversion and $copyright psuedo variables broke when I added the fond name changes.