From: George W. <gw...@si...> - 2007-07-24 02:39:11
|
23-July-2007 * I have merged (and substantially rewritten) the Print and Display Dialogs. There is now only one menu item (Print) which (vaguely) the old Display dlg except that it can now be printed. The text area widget now supports OpenType features just as the metrics view does. It also supports ligature carets. The dialog is no longer modal, however it does not get updated with each change to the font (that would make moving a point around in the outline view far too sluggish), instead there is a [Refresh] button the user can press to force an update. * It occurred to me that fontforge's current mechanism for setting ligature carets requires that there be a ligature substitution is the exact number of components used to make the glyph. But in indic fonts ligatures are often made up out of other ligatures (I think) which means that there won't be enough caret positions. So I've added a Ligature Caret count to the Element->Glyph Info dialog to give the user control over it when necessary. * Add minimal support for applying apple state machine lookups in metrics view. Support is minimal because: * Apple seems to figure line breaks before doing substitution process but I do it afterward so I don't know where the line breaks are and I can't enter either the line start or line end state. * When I delete a glyph I delete it. Apple inserts a deleted glyph mark and then removes that later. State machines can respond to deleted glyphs, but I can't. * I don't try to figure out which feature,settings should be on by default. So the user must pick them out manually. * Add popup graphics to the Glyph Info and Lookup subtable dialogs to show substitutions (that is if there is an entry like 'smcp' a => a.sc then create a popup window showing the "a" glyph and the "a.sc" so the user can see what happens. * Another futile attempt at an embolden command. Element->Embolden * Add shortcuts to the anchor control dlg (Page Up/Page Down) to move to the next/previous glyph. * Michal Nowakowski has improved the truetype autoinstructor. He warns that it probably still has bugs (as what does not?) so I am leaving the old code available for now. He says it works best in "a clean (uninstructed) font with well defined blue zones and stems". * If we have a glyph with multiple encodings, and the secondary encodings occur after the primary ones, then the backmap will probably contain a secondary encoding, which means that when we go to load the font in we will probably notice the secondary encoding twice and forget the primary. * I used not to distinguish between ligature anchors and normal mark to base anchors. Unfortunately when I moved to lookups (from features) I had to introduce that distinction. But I didn't work through all the implications and have fixed a number of bugs related to that. * Barry SCHWARTZ complains that font info says "fontnames must" but that the cited adobe tech note only says "should". So change "must" to "should". * When processing class-based contextual lookups fontforge could not handle class 0 (the class containing "all glyphs not in another class") add code to do that. * If the user did not select a Gasp Version (note: active selection was needed, just seeing that it was correct and leaving it didn't work) then [OK] would leave the font with an invalid version and on some systems caused a crash. * View->Insert Glyph After didn't work well on a ligature glyph. It would insert the glyph after the first component of the ligature, not after the last -- which would make more sense. * Misnamed some private dict entries when loading from otf. * Make entry of ghost hints better. * Add the ability to determine whether a point is selected or not from python. * Add a mechanism so the user can ask fontforge to check for the existance of optional libraries. * Add range checks to some library routines which blindly referenced some BMP arrays with codepoints outside bmp. Broken by UCS2->UCS4 change. * Werner wants GotoChar to be able to switch sub-fonts in a cid keyed font. This may introduce bugs... * Revert glyph still wasn't working. * Someone complained that using a negative stroke took a very long time but produced correct results. Um. Ok. It's easy always to use the absolute value. * Oops. The mac uses UCS2 for filenames, so when I moved to UCS4 I should have changed the mac resource file interface. * When creating a mac resource file we only set the type/creator fields and failed to initialize the finderFlags. * Fixed crash bug in generating a cursive connection anchor sub-table. * In TrueType composite glyphs with the USE_MY_METRICS bit set the lock icon wasn't scrolled properly. * The change from UCS2 to UCS4 broke text copy/paste. We failed to add a terminating NUL of the right size in all cases We continued to use charset=UCS-2 when it should have been UCS-4 * FF crashed when trying to View->Show ATT on a font that appears to me to contain an invalid 'kern' sub-table. I have removed the proximate cause of the crash. I have provided a warning that the kern table appears invalid. And I have cleaned up my internals after detecting the bad sub-table (I had a lookup with a feature but no script and this caused problems). * Multiple substitutions in the metrics view did not properly update the count of glyphs to be displayed. * If nothing changed in the metrics input field and the output contained a ligature (or a mult subs I suspect). FF would complain. * in python, font.generate() didn't work. The PyArg_ParseTupleAndKeywords behaves in a way I did not expect. * [Bottom] and [Down] still didn't work for lookup subtables. * Try to force the text field in the metricsview to a fixed size. In some fonts it seems to be initialized to a huge value. * Add ability to display italic side bearings in the char view. * The lines drawn for italic fonts to show the italic origin and width were at slightly the wrong angle (I used a sine when I should have used a tangent). * If a font did not have any horizontal metrics then ff would not set the em-size. * Show Att trampled on memory when displaying apple contextual substitution state machines. * Wasn't parsing apple's 'lcar' table properly. * if a font contained a 'post' table but didn't name all names (or something like that), then the attempt to name the glyph based on the encoding was broken after the encoding change. * FF did not recognize that a bdf file was greymaped. Broken by the bdf properties work a year ago or so. * The import lookups button in fontinfo forgot about the subtables (sort of). * The metricsview used the wrong count field to determine whether things changed. It used the glyph count, not the char count (which meant that when we had a ligature and the number of chars was greater than the number of glyphs, things got confused.) * In the metrics view, anchored attachments only worked if the base glyph were itself unmoved (that is the mark was placed relative to the unmoved location, not the actual location). * The search dialog should provide user with control over the error bound. The rotate checkbox didn't work if the flip checkbox wasn't checked. * If a replace contour added a control point to a point that did not have one (went from a line to a curve) then that control point would get lost. If a search matched across the start point of a contour then search/replace could go into an infinite loop if the search and replace paths were the same. * Find/Replace (replace) didn't work on quadratic splines. * Add two python methods: * Layer.interpolateNewLayer(other-layer,amount) * Font.createInterpolatedGlyph(glyph1,glyph2,amount) The first creates a new layer by interpolating between the current layer and the layer in the first argument. The second creates a new glyph in the font by interpolating between the first two arguments. The glyph's unicodecode point and name will be copied from the first argument (the font must not already contain this glyph). If amount is 0 the result will look like the first glyph, if 1 then like the second. * When recovering from a crash, FF would sometimes complain about a mismatched version number. Don't. * Problems parsing 'mort' tables could cause a crash. * When building a contextual lookup, don't list that lookup as something that it could invoke (ie. list all lookups in this table (GPOS/GSUB) except for ourselves). Don't want to encourage users to create infinite lookup loops. * Point matching didn't work when there were references to references and multiple references within a glyph. * FF was having problems with extension lookups with multiple sub tables. * We were trying to print a trailing NUL in some strings from the fontview. * Kerning by classes got broken in metricsview by the addition of support for device tables. * A GPOS contextual lookup only listed GSUB lookups in the lookup/sequence dlg Pressing [OK] in the lookup/sequence dlg caused a crash if no lookup selected. * Openfontdlg was looking at the filter listbutton rather than the rename namelist listbutton. * mf2pt1 now uses "glyph_dimensions" rather than "bbox" * The metrics view should now handle device tables. * Goto could crash when used on small encodings. * -lang wasn't permitted before -c. * Use numeric text fields for anchor positioning. * Graham Asher points out that the meanings of underline position in the 'post' table and the FontInfo dictionary are different. One refers to the top of the underline rectangle and one to the center of it. * Align point would crash if the selected point were the end point of a contour (or if the two points around it were in the same place). * The baseline was not properly located when displaying it in the fontview. * The scripting command BitmapsAvail would generally cause FF to crash if done when there was a UI.. * We seem to be misimplementing my obsolete (sfd file) convention for having duplicate encodings point to the same glyph. Result was that occasionally a glyph would be removed and a pointer to something it refered to would be put in its place. * Change the name of activeFontInUI to activeFont Add an activeGlyph method. Add the ability to call a python script from a outline view. * Hmmm. If a textfield is shifted right, and then resized so there's now room for all the text, the unshift it. * Werner suggests that it would be useful to be able to specify wildcards in the goto dlg. * Michael Zedler tells me that glyphs output by mf2pt1 contain a line: % MF2PT1: bbox 0 90 834 422 where the third (so called) bounding box entry is actually the glyph's advance width. I was reluctant to use this at first, because that clearly isn't something that belongs in a bounding box... * Werner tells me that lilypond uses a slightly different syntax for the MF2PT1 bbox comment, so make our parsing slightly more generous. * When creating a new lookup subtable for an anchored lookup, it did not get marked as having anchor classes and feature file output failed because of that. * When outputing single lookups, the feature, script and language tags all had ^A where they should have had the second letter of the tag. * Remove the code to produce the old, broken, 'size' feature. |