Skip to content

Instantly share code, notes, and snippets.

@davelab6
Created July 20, 2012 11:28
Show Gist options
  • Save davelab6/3150257 to your computer and use it in GitHub Desktop.
Save davelab6/3150257 to your computer and use it in GitHub Desktop.
FontForge Feature List
[IN PROGRESS - J HANNA] Mac Feature: Make transparent PNG icons in menus not crash FontForge
Mac Feature: Apply all fixes in https://github.com/ummels/homebrew/commit/a68fd6b241306d563c3600403e6e7eb56abe0921 to the git master.
HUGE Feature: Make the Python object environment compatible with RoboFab.
Huge feature: add an automatic bug reporting tool that gets source code line number traces from a crash and submits them to a crash mailing list automatically
Big feature: Make key bindings interactive, so when the user clicks and holds on a menu item and the presses a key chord, that key chord is bound to that menu item, and stored in the current theme file
Big UI Feature: Make the key bindings re-set by a theme file.
[IN PROGRESS - BEN MARTIN] Big Feature: Make the Undo system last forever, while being memory efficient. Currently the Undo system is rudimentary; FF has a Preference which sets how many undo actions to store - my prefs file has UndoDepth: 12! - and this is obviously a bogus undo system and computer science has figured out how to make 'infinite undo' work without massive memory overhead. Related to this is checking if the Undo system's state is saved as part of FontForge crash protection, and if it isn't, to make that so; so that when FF inevitably crashes, the undo state isn't lost. (FF's crash restoration is pretty impressive for me, when I designed Cantarell and it would crash often, I'd just tap up-enter in terminal and get right back where I left off.)
[IN PROGRESS - BEN MARTIN] Some feature: Add a preference to save the undo state in the SFD file (and a SFNT file in the PfaEd table) so that the entirely history of the font is contained in the SFD.
Big Feature: Add a window with the undo stack so you can see the whole thing. I'm not sure that each undo action has a description to go with it. If not, add that first (and have the descriptions appear on the Edit, Undo/Redo menu as text that is truncated with a ... and the full text in the tooltip.)
Big Feature: Make the Undo system work on atomic lookup edits (ie, any changes made to the lookups in a single use of a lookup/subtable dialog.)
Big Feature: Make the Undo system work on ALL actions
Big feature: Create test scripts in ${SOURCE}/test/ for test scenarios and validation on created SFD files, to prevent regressions and/or help detect attempts to produce broken SFD files. Ben Martin made two functions to test the ut_state a bit, one that makes a undo object and another that verifies a loaded undo to see that all the variables are set again (refs etc), but it is very basic and by no means automated. This should be improved to be robust.
[NEARLY DONE - J HANNA] Big UI Feature: Improve the measure tool to match the one in Inkscape's HEAD (see videos of Inkscape Measure tool on understandingfonts.com)
Real UI Feature: Glyph edit window and Metrics window, drag the sidebearing measure up and down, and right click and menu item to reset it to 'closest point'
Big UI feature: ability to optionally preview 'neighbor characters' in preview mode. Here's a very quick start: https://gist.github.com/3197488 - There should be 2 separate default arrays of groupings; 'common groupings' and 'similar glyphs'. These would be accessed separately. Groupings of 'similar glyphs' are e.g. m-n-h, b-p-d-q, A-W-V, m-u-h, etc. The perfect font editor would allow the user to change these groupings on the fly. // A text box that allows typing a new character and a button that pops up a character palette below each position; a pop up menu with a list of loaded glyph groupings in the middle, with the ability to load a text file with a different set of preset groupings, something like that.
Some UI Feature: Unify Scripting by moving the 'File, Execute Script' menu item to the top of the Tools menu, followed by a menu separation line, and then the scripts current listed in the 'File, Script Menu' submenu, followed by any menu items registered to the Tools menu Python scripts.
[NEARLY DONE - BEN MARTIN] Some UI Feature: Make a 'preview' toggle mode bound to the '`' key that removes all outlines and sets the ground and filled glyph image to theme specified colors
Some UI featuer: Make images on the canvas REALLY FAST because today they are REALLY SLOW
Some UI Feature: Make Bezier lines and handles user themeable
Some UI Feature: When Character Palette has Encoding, Custom, Glyph Order, make the glyph order rearrangable with drag and drop.
[NEARLY DONE - DONG YANG] Some UI Feature: Each glyph can have a color (Glyph Info, Comment). Make the Character Palette display this color as the background.
Some UI Feature: Metrics window, make 'Prefernces, Editing, Snap To Int' apply to the metrics window, and then add a menu items in the Metrics window Metrics menu for 'Always use integer values'
Some UI Feature: Metrics window, add a View menu item, "Line Wrap" that stops horizontal scrolling and presents the preview test as a paragraph. This should add a 3rd item to "set point size" in the middle of the existing 2, 'Leading:', so you can set eg Point Size 16pt, Leading 20pt, DPI 72, and then paragraphs will be shown like that.
[IN PROGRESS - BEN MARTIN] Some UI Feature: Metrics window, Allow typing glyph names into the metrics window, delimited by a prefixed forward slash and postfixed by a space, and double slash to input a single slash and a double space to input a space if the preceding char was a glyphname. Eg /A/V///T/oacute/x yzab cdef --this matches Fontlab behaviour which many users are familiar with.
Some UI feature: Metrics window, after the above, add autocompletion for typing glyph names (already implemented in eg View, Go To)
Some UI: Metrics window, add a menu item to turn the automatic preview resizing off/on, and add UI buttons to the toolbar for the manual magnification for the Zoom and Bigger/Smaller Point Size options that are in the View Menu.
Some UI: Metrics window, You can resize your metrics view content 1) by scrolling your mouse wheel while Ctrl is pressed; 2) with "Zoom In/Zoom Out" menu items, which also have corresponding key combinations; 3) by setting the point size and resolution directly (View -> Set Point Size). Make those settings remembered when you open metrics view the next time.
Some UI: Metrics window, add key bindings to increasing/decreasing side-bearing and kerning values by using the up, down , left, right arrow keys and alt and shift etc combinations. EG, User selects LBearing for a char in the metrics window table. Arrow up increases, arrow down decreases side bearing by 1 unit. Shift+arrow increases by 10 units. Shift + alt + arrow increases by 5 units. Alt+up selects table field above, Alt+down selects field below, Alt+left selects value in table for the char to the left, Alt+right selects value in table for the char to the right. The shift and shift-alt unit scales are set in Prefernces, Editing. (Fontforge opens a dialogue when a user changes any class based kerning value, that should be supressed so that changing the value in the metrics UI changes the class kerning value directly.)
Some UI Feature: Click glyph label to open Glyph Info window
Some feature: Make constructor functions for all the object types so it is clear how to make them properly.
Some UI feature: http://old.nabble.com/Request%3A-%22Arrow%22-double-click-options-td34252799.html
Some UI Feature: http://old.nabble.com/Request%3A-Layers-palette%2C-a-color-for-each-layer.-td34252791.html
[IN PROGRESS - B MARTIN] Minor UI feature: Add an option to the hinting menu to enable/disable autohinting automatically - this is already a preference (in Generate) but it would be good to have it as a menu option too
[IN PROGRESS] Some UI Feature: Do not show cells if there is no glyph slot. (Currently an 'empty' glyph slot you can click is only distinguishable by its red "?" label)
[DONE - J HANNA] Easy UI Feature: Relative directory location for icons to themes. /usr/share/fontforge/pixmaps exists today, but a theme stored in eg ~/.FontForge/name/name.theme with replacement icons as eg ~/.FontForge/name/icon.png must use a full path (/home/username/.FontForge/name/icon.png) which isn't ideal because it changes per user.
Easy UI Feature: On Mac OS X Lion, when I run FontForge from ~/Applications/FontForge.app, the theme is not fully loaded, but when I start it from Terminal, it is.
Easy UI Feature: Generate, default filename to be PSName
[NEARLY DONE - J HANNA] Easy UI Feature: Change it so that pressing and holding down the space bar activates the hand tool for while the space bar is pressed, so that scrolling around the Glyph Edit canvas is intuitive for designers. (Most design applications since the early MacOS days have done this, I believe.)
[IN PROGRESS - Jason Vas Dias] Easy UI feature: Make the Listbox toggle items without requiring a shift click
Some UI Feature: Add a check (perhaps in configure or at runtime) for if ttfautohint is available on $PATH and if so, add a 'ttfautohint' option to the hinting menu, which opens a dialog that is a clone of the QT gui, and runs ttfautohint on the font data in memory, so that the metrics/print-preview windows render the font using the hints from ttfautohint
(Python plugin) Some UI feature: Element, Font Info, FONTLOG: Add an 'Add FontLog' button that opens a wizard that asks a set of questions to create a FONTLOG based on the GWF template
(Python Plugin) Some UI feature: Element, Font Info, TTF Names: Alter the OFL button to open a wizard that asks your URL and email, and store these in ~/.FontForge/prefs, and allow you to specify a list of RFNs, and have a tickbox for Full OFL or Short OFL; and as a 2nd task, Remove "Add" from the label and have this feature parse the OFL information in the License Description field so it can be used to alter the OFL. 3rd task, have the open and generate dialogs check for OFL in the fonts and alert the user if an RFN is specified.
(Python Plugin) Some UI feature: Duplicate character
(Python Plugin) Big UI Feature: Implement Spacing System - http://www.impallari.com/projects/overview/spacing-macro (http://typedrawers.com/discussion/52/spacing-macro discussion) - perhaps with http://fontforge.sourceforge.net/autowidth.html
Blue Sky Idea: Make the menu system user configurable (perhaps as part of the themes system?). So for example unifying Scripting by moving the two File, Script menu options to the Tools menu, can be done by a theme configuration file.
Minor code cleanup: http://old.nabble.com/The-Case-of-the-X-Class-Name-Property-is-Incorrect-td33586555.html
Website: Add a link to https://sourceforge.net/projects/ttf2ttc/
BUILD BOT: Set up a build service for FontForge to produce binary packages easily (SUSE has one?)
Website: To get the website totally remade and reintegrated into the application, the F1 URLs should be easily user configurable such as in a text file in ${PREFIX}/share/fontforge/helpurls.txt which has lines like 'windowName: path/subpath/filename.html'
[IN PROGRESS - DONG YANG] Command line: Make --help call what is currently --usage and --docs call what is currently --help.
- - - -
ES Font forge wish list - so far; DC to clean up
- The keys for zooming in & out should be simple because you so it so much - & =? or z & x? Because FF let's you hit a key to open a glyph this won't work but I would MUCH prefer to open a glyph from the glyph window if it meant having simple zoom keys. Failing that what about "command -" & "command =" ?
- The way the tool icons indicate they are on is not obvious enough at all. There are many many ways of doing this that would be better. I would be happy to make new bitmaps or suggest visual alternatives.
- The icons themselves look MUCH too alike. More extreme differences would make it faster to choose the one you want.
- It would be nice if you could let the "merge" behavior be the default when you delete a point rather than leaving a gap in the path. Merge is the better default result.
- The symbols used the pulldown menus are not obvious. English would be better so rather than an up arrow 'control'
- Make it so that you can use command rather than control when using the program on a mac. It is hard to unlearn using the command key.
- When the Element/information/ window opens the default should be big enough to see all the options for grid fitting.
- Can some of the text in menus be anti-aliased? The existing all-bitmap style is too old fashioned.
- The numbers and text that indicate the various lkinds of status status under the pulldown menu and under the tabs for the glyphs are way to small. When monitors were super tiny this made sense. Now, not so much.
- The tick lines on the rulers overlap with the numbers on the top and left. This isn't necessary and obscures the numbers regularly. This should be fixed.
- When you click on a guide it should indicate it has been selected in some way.
- It should be possible to color a guide to help you recognize what it is but also so that it becomes possible to distinguish between similar guides more quickly.
It should be possible to make the tools go horizontal and to re-order the tools of you want to.
- WTF is this stuff under the tools?
It looks like stuff left over from programming the tool. It doesn't tell me anything as a user I don't think. Can it go away?
- Why when I click on tools is there nothing? If it doesn't do anything it should go away. If it does something special later then let it appear then. In the meantime it is getting in the way.
-Layers come up in their own little box. This seems silly. It seems like layers should be a part of the UI of the Glyph window itself because as it is you can loose the thing far to easily.
- The status of the gyph window e.g. "the guild layer is active " or "The Back layer is active" should be apparent in the glyph window Making the outlines green when you are in guide mode is not enough. What is "Back" for? What is the glyph later called "Fore". That seems like a mistake. It should probably be Glyph, Guide, and Back in that order. It is cool that you can add layers. Text saying ON and OFF would be better than the eyeball icon.
Some Feature: Make it possible to tell FF to load images used as backgrounds from an external file instead of copying them into the SFD, and therefore support the UFO format's <image> tag in GLIFs. Ref: http://old.nabble.com/Background-images%3A-possible-to-point-to-external-file-instead-of-embedding-the-image-data-into-the-SFD--td34297937.html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment