RoboFont 4.5

  • UNIVERSAL BUILD!!!!
  • python 3.12!!!!
  • New Extension bundle api !!!
  • Force download of cloud storage files while opening, fixing lots of Dropbox/GoogleDrive reading bugs.
  • Add support for compile filters.
  • User Interface
    • Add support for Test Install All when ⌥ down.
    • Fix the order of layer up/down in single window mode.
    • Fixing dark mode on older macOS’s.
    • Improve set short cuts for multiple alternate menu items.
    • Improve filebrowser short keys text color.
  • Glyph Editor
    • Improve selection update with off curves only.
    • Improve constrain for horizontal and vertical shift drags.
    • Fix missing identifiers while joining contours.
    • Improve displaying point labels with many points.
    • Update glyph editor when italicSlantOffset has changed.
    • Fix point reordering while selecting overlapping points.
    • Set background of clip view to the preview background color.
    • Improve drawing glyph metrics for glyphs without bounds.
    • Force set the cursor in a glyph editor.
    • Use italic offset while transforming glyph when no origin is selected.
    • Outlines
      • Improve support for off curves and shift dragging over the italic angle.
      • Fix issue when a deleted point gets snapped to the oncurve handle.
      • Fix bug when removing very tiny segments.
      • Improve point smoothness while editing the contour.
      • Improve smoothness while deleting points.
      • Improve preserve curves for tiny changes.
      • Unsmooth both points while joining contour.
      • Improve line straightness’ indicator.
      • Improve support for shift draggin offcurve points.
      • Fix point identifiers when breaking contours.
      • Only add new off curves while dragging a newly selected contour.
      • Improve preserving smooth flag while transforming.
      • Improve drawing single stroke lines.
      • Join single move to contours to a single line.
      • Fix convert to curve with open contours.
    • Components
      • Add support for overlapping components in the outline errors indicator.
    • Guidelines
      • Use guideline color to draw intersections.
      • Use the guideline name attribute to set that name in the deprecated addGuide.
    • Anchors
      • If an anchor has no name, set it to None.
      • Anchor name cannot be an empty string.
    • Images
      • Improve image scale sheet.
  • Inspector
    • Reverse export button in glyph inspector.
    • Improve inspector glyph unicodes input.
    • Add support for ⌥ down to inverse skew and rotate buttons in the Inspector transform pane.
    • Only toggle the inspector when there is a main window and when in single window mode.
    • Improve contours, anchors and components list.
    • Allow floats strating with a . to become floats.
    • Improve point inspector pane when contours are added or removed.
  • Space Center
    • Fix bug in space center input matrix.
    • Update space center after a glyph is deleted.
    • Convert hard returns to \n in space center.
    • Decrease Spacecenter window minimum height.
    • Convert soft return and line separator to new lines in a space center input.
  • Font Overview
    • Fix bug while removing a empty glyph from a layer.
    • Add support for glyph.markColor being a color name from the preferences.
    • Apply defaultBackgroundLayerColor also on public.background layer names.
    • Support mark color list None.
    • Improve setting new default layer when deleting the default layer.
    • Using color luminance of an RGB color to pick a contrasted black or white color for the glyph name.
    • Improve text color for glyph cells.
    • Draw glyphs with markColor always in light appearance.
  • Scripting Window
    • Improve syntax highlighting by updating the view after highlighting is done.
  • Preferences
    • Add globalSyncGlyphlayersSettings to the preferences.
    • Fix issue while closing the preference editor.
    • Adding glyphViewSnaptoFontInfoMetrics preference to set a magnetic distance to snap to font metrics.
    • Ignore extension root folder while exporting preferences.
    • Improve preference window changed notifications.
    • Remove trailing commas in preference editor json.
    • Disable sorting for color lists.
    • Add support for animated zoom, glyphViewAnimatedZoom: hold ⇧ for speed zoom.
    • Adding zoom factors to the defaults: scrollZoomOutFactor, scrollZoomInFactor , ZoomOutFactor and ZoomInFactor.
    • Improve traceback message while reading glyph order with duplicated glyphNames.
    • Always set update preferences when the appearance changed.
    • Add support to change display settings for all glyph editors by holding command down.
    • Add support to search preferences appearances and hotkeys.
  • Extensions
    • Adding documentationURL to the extension spec.
    • Upgrade Extension Builder to the new open source Extension Bundle.
    • Improve loading extension when the extension is not valid.
    • Fixing missing imports on older macOS.
    • Test if an extension has a download count number before installing and warn the user.
    • Support extension addToMenu menu separators.
  • Generate Binaries
    • Improve support for generating compatible OTF binaries.
    • Add -nS when turnOnSubroutinization is False.
    • Add support for compile filters.
  • APIs
    • Update merz and ezui.
    • Add RoboFont control PathPopUp as ezui item.
    • Fix MenuBuilder: a title should not be required.
    • Improve documentation for MenuBuilder.
    • Add destroyRepresentation and destroyAllRepresentations to RoboFont fontParts objects.
    • Test while calling RFont if the object is not already an RFont.
    • Improve testing if a RFont has already an interface.
    • Fix bug in RFont when the path is not the absolute path.
    • Test if the glyph is not None before trying to get layer and font attributes.
    • Improve SpaceCenter api tracking and line height with the corresponding menu sliders.
    • Fix renameGlyph and restore the glyph order correctly.
    • Change default for renameInLayers to True while renaming glyphs.
    • While renaming glyph check if the old and new name is not the same.
    • Use bash -c command to install and write RoboFont shell script to disk.
    • Add ScriptRunner to mojo.tools.
    • Add readSmartSets in mojo.smartSet.
    • Fix modal windows blocking pip tools.
    • Add addAdditionalVisualBounds support for additional visual bounds, in a glyph editor.
    • Adding tool.getGlyphEditor().
    • fix typo: leftMarginIntersection with “t”.
    • Add fallback margin intersection with beam for orphan glyphs.
    • Add glyphEditor.activateGlyphEditorAtIndex(index).
    • Improve support for OpenInspectorWindow and add CloseInspectorWindow in mojo.UI.
    • Improve document changes in UI-less font objects.
    • Adding rgbaToString to mojo.tools.
    • Fix smart set menu callbacks.
    • Subscriber
      • When a subscription is registered after Subscribers have been instantiated, active the new subscriptions when needed.
      • Adding scriptingWindowWillOpen, scriptingWindowDidOpen and scriptingWindowWillClose to subscriber.
      • The subscriber object could be None after closing the window.
      • Continue looping over all subscribed callbacks for both adjuct as for glyph editor subscribers.
      • Add support to extract the current event directly with extractNSEvent().
    • Extension Bundle
      • Print out the message that a banner is showing, just in case banners can be off system wide for RoboFont.
      • Fix warning text while saving extension bundles.
      • Add loadBundle() to the extension bundle.
    • Embedded Packages
      • Update ufoOperator.
      • Update GNFUL list.

RoboFont 4.4

  • Jump to python3.9! Be aware, some extensions might not work, check for updates.

  • User Interface
    • Set SF Mono or a fixed pitch in input text editors
      • Add Glyph sheet
      • Add Smart Set glyph names
      • Inspector Glyph note
      • Character Set in the application preferences
    • Add support for “Save All UFO’s” alternate menu item.
    • Improve font toolbar Mark and Layers buttons.
    • Improve changing unicode dialog text.
    • Fix alert text when installing existing extensions.
    • Improve user interface to maximize compatibility with Ventura.
    • Reuse the fixed width font when a default font is used to typeset a string (like an emoji) in the Output window.
    • Improve toolbar items with menu presentations when the FontOverview or GlyphEditor windows are resized.
    • Add support for multi group name selection in a group sheet.
  • Glyph Editor
    • Improve dragging lines by making their location more accurate on screen.
    • Move dragging lines while in Transform mode.
    • Use anchorTextColor for the name of the anchor if no color is set in anchor.color.
    • Anchor names cannot be empty but None.
    • Improve images visualization in different layers by not drawing the image info.
    • Fix glyph view stored italicAngle, it cannot be None.
    • Outlines
      • Improve snapping and rounding of points in the glyph editor.
      • Fix reselection of contour after a break.
      • Improve coloring of quadratic off curves points.
      • Support alt delete for multiple off curve points to snap to their on curve point.
      • Fix a bug when converting an off-curve only quadratic curve to bezier curves.
      • Improve start point while joining contour with the drawing tool.
      • Do not flag the glyph as loading while normalizing incoming data, otherwise trailing off curves are lost.
      • Don’t allow circular (components) references and send warning when trying todo so (even when renaming).
      • Preserve selection on setStartPoint.
      • Unsmooth on curve point while deleting off curve.
      • Improve deleting of glyphs used as components to avoid ghost references persist on disk.
      • Fix a ghost point bug on undo with a slice tool.
      • Skip check for trailing points in an empty contour.
      • Fix update margins after font info changed (italic angle).
      • When a left margin is set from python code, the selected paths will move accordingly.
      • Improve copy/paste of outlines data from other applications (Illustrator & Figma) into the glyph editor.
      • Set the default stroke color for tangent point the same as smooth stroke color.
    • Guidelines
      • If guideline angle is None get it from the xy combo.
      • Rename guideline menu items to Local and Global.
      • Make guidelines longer, a hypothetical length of 100000 (left & right) should be enough. A huge board might be used for logo drawing.
      • Improve guideline layer caching.
      • Send guidelines Changed notifications during undo/redo.
      • Enable show guidelines when adding a guideline.
      • Show guidelines in all layers only when Show Guidelines display option is enabled.
      • Add support for single guideline.locked.
    • Images
      • Set the default image sharpeness to 0.
      • Improve pasting image over existing image in glyph view.
      • Store image scale settings in the defaults.
      • Add glyph image bounds to the artboard edge calculations.
      • Improve image filters to avoid blurred images.
      • Unlock image after pasting image over glyph view
      • Display Image in glyph editor Diplay Options menu is enabled when image is dropped or pasted in the glyph view.
  • Inspector
    • Improve speed of refreshing points inspector list.
    • Uncheck transformPane checkbox when a transformation is edited in the glyph editor.
  • Space Center
    • Use the full suffix to populate the space center suffix menu.
    • Fix missing image factory used in spaceCenter.
    • Send spaceCenter key up when there is no glyph selection.
    • Improve MultiLine view when font info attributes are set to zero.
  • Font Overview
    • Add warning when setting the default layer when ‘public.default’ is present.a
    • Set glyphOrder after layer.renameGlyph to update the CollectionView.
    • Fix removing layers when the layer is the active one.
    • Change order for sorting options.
    • Fix None mark color.
    • Add sort reset and support single sort option in the sort sheet.
    • In Single Window Mode, check if there is a glyph before handling layer set changes.
  • Preferences
    • Add short cuts for default tools.
    • Improve help button for Extension tab in Preferences Window.
    • Rename glyphViewOncurvePointsSize to glyphViewOnCurvePointsSize (cap C).
    • Add force appearance support (follow the system light/dark color).
    • Improve updates on GlyphView appearance options.
    • Add preference defaultLayerName for new documents.
    • Add double click preference: glyphViewAllowDoubleClickToSwitchLayers.
    • Improve preferences Extension Sort Tools.
    • Add extensions directory attribute to the preference export.
  • Smart Sets
    • Check if the smart list selection has a query to reset on font changed.
    • Improve storing smart sets with multiple documents are open.
    • Improve query reloads for smart sets.
    • Fix loading smart sets issue.
  • Scripting Window
    • Fix major lag in using a CodeEditor in any window.
    • Improve line number view in CodeEditor.
    • Remove cmd+. cancel short cut as it crashes the app.
    • Fix storing “keep Visible” in the defaults for the output window.
    • Add API access to scripting window:
      • CurrentScriptingWindow()
      • AllScriptingWindows()
      • scriptingWindow.insertText(text)
      • scriptingWindow.setSelection((location, length))
  • Extensions
    • Fix bug in installing extensions with start up scripts.
    • Fix bug in resolving extension version requirements.
  • Generate Binaries
    • Improve autohint (ps and ttf) when fontmake is set as compiler.
    • Improve calculating hmtx table after a curve conversion.
    • Use otRound everywhere while compiling binaries.
    • Fix wrong attribute name in font compiler.
  • APIs
    • Improve debugging information in log file.
    • Start an external changes observer when a font is loaded with no interface (shallow document)
    • Improve mojo.compile.stemhist
    • Include all the modules from the Python standard library.
    • Remove capital on stemhist.
    • Add support for inspectorTransformPaneAllowExternalTransformation.
    • Change Can Hide to Keep Visible in the output window.
    • Add RoboFont specific views as ezui objects, welcome mojo.ezuiViews! You’ll find:
      • GlyphSequence
      • GlyphPreview
      • CodeEditor
      • GlyphLineView
    • Send extra arguments to build in a windowController to maximize compatibility with ezui.
    • Adopt AppleScript for remote scripting and improve command line interface. Faster, more reliable.
    • Add support for tooltips in the script header.
    • Improve permission while installing the shell script.
    • Add readSmartSets in mojo.smartSet
    • Add support for glyph.copyToPasteboard and font/layer.copyGlyphsToPasteboard.
    • Log error when the extension defaults are unable to write to disk.
    • Remove deprecated glyph.index.
    • Add eventTool.shouldSendNotifications to hold notifications for other observers.
    • Add Timer, timerDecorator, timerFunction, profile, profileDecorator debug tools to mojo.tools.
    • Add support for setGlyphRecords and getGlyphRecords in a mojo.UI.MultiLineView.
    • Add support for mojo.UI.OpenInspectorWindow.
    • Add support for shouldAddSeparatorItem while building a menu with MenuBuilder.
    • Improve commandline install success message.
    • Add htmlView.getWKWebView() to get the webkit webview.
    • Add tiff2png to mojo.tools.
    • Add mojo.pipTools.
    • Raise the time out limit for the pip installer.
    • Fallback to font.asDefcon().dirty for font.hasChanged() when no document is set.
    • Add context manager support for mojo.UI.ProgressBar
    • Improve documentation in several mojo packages.
    • Shell command reports back to the external caller.
    • Improve copyToPasteboard doc string.
    • Subscriber
      • Improve subscribing to adjunct objects.
      • Improve subscriber coalescer when notification comes in very fast.
      • Fix serious bug in subscriber when the notification is sent from a continuous trigger like a slider
      • Improve fontInfoDidChangeValue subscriber info object.
      • Add support for glyphEditorDidChangeDisplaySettings.
      • Improve compatibility of subscriber instances with ezui and windowcontroller
      • Improve subscriber error message when overwriting a subscriber event.
    • Embedded Packages
      • Remove deprecated packages dialogKit and feaTools2.
      • Remove numpy as embedded package. Users will need to install it autonomously with pip installer.
      • Embed the charset_normalizer package.
      • Add fontFeatures as dependency.
  • Appearence (Dark Mode)
    • Remove shadow in statusbar warning (improves dark mode).
    • Add notification + subscriber support when the application appearance changed.
    • Implement dark mode colors and auto switching.
    • Add appearanceColorKey to mojo.UI.
    • Change defaults for cell metrics color in dark mode.
  • Update embedded packages.
  • Update GNFUL list.

RoboFont 4.3

  • Move to 10.12 as minimum requirement.
  • Remove local FDK support.
  • FontTools has moved to DesignSpaceDocument v5. Tools like Batch and Skateboard work with the new format, but they do not support discrete axes.
  • Update internal GNFUL list.
  • Keep unsaved glyphs into account while testing external changes. It avoids loosing data not saved on disk when reverting.
  • Use the latest py2app. Add support for dark mode and new toolbars on macOS 11 and 12.
  • Remove warning when the app file path contains a space.
  • Fix About Window bug when AFDKO is not the compiler tool.
  • Do not try to read glyphs from disk in closed file system if a font is not saved yet.
  • Improve mojo.NumberEditText by converting the int/float to a string without thousands separator (locale dependant).
  • Add support for ctrl ⌃ + alt ⌥ + delete to completely remove a glyph from a UFO (including layers, kerning and groups).
  • Improve removing default layer.
  • Force file type extension on filename when switching format in “Generate Font” sheet.

  • Glyph Editor
    • Improve transform pane in Single Window Mode.
    • Improve opening empty glyphs with a very large units per em.
    • Improve pasting of PDF data.
    • Improve transform pane with selection when the glyph editor is not the first responder.
    • Improve joining contours two points with handles by un-smoothing the joined on curve point.
    • Improve “jump to glyph” dialog by splitting the search by all possible glyph name separators.
    • Fix converting selected on-curve-less quad curves.
    • Improve pasting glyph with images.
    • If the a component was selected and the base glyph is removed, the component selection does not linger in the glyph editor
    • Add glyphViewIgnoreFirstMouseDown key to Preferences Editor for Single Window Mode to ignore the first click in the glyph view.
    • Support shift + alt + click for converting a line to a quadratic segment.
    • Improve menu title: ‘Convert to Cubic’ without ‘Contour’.
    • Move down the selection CALayer in the glyph editor layers hierarchy. As a consequence, transform mode will be drawn on top of a selection.
    • Apply snapping to anchors and components when edited from the transform pane.
    • When an on-curve point part of a larger curve is deleted, RoboFont fits the curve and rounds the remaining handles based on the “Snap points to” value in the preferences.
    • Fix Transform Again in Single Window Mode.
    • Disable dragging margins outside the body of the glyph.
    • Adding a guideline with shift + g + click with an italic angle will apply the angle to the new guideline.
    • Display dragging lines with the italic angle if “Slant Point Coordinates” is on in the Preferences.
    • Add anchor popover accept slanted coordinates, again, if “Slant Point Coordinates” is on in the Preferences.
    • Point coordinates are typeset in italic if “Slant Point Coordinates” is on in the Preferences.
    • Display dragging lines with the italic angle.
    • Add a dragging constrain on the italic angle.
    • Close a glyph window on a removeGlyph event (either user interface or API) only when it shows the removed glyph.
    • Preserve first points while curve converting segments/contours.
    • While removing the last point of an open contour also remove all offcurves in a quadratic curve and unsmooth the last oncurve.
    • Dont add a quadratic off curve point when ⌘ command key is down
    • Register an undo change when adding a quadratic off curve
    • Improve snapping coordinates which are already whole numbers but represented as a float.
    • Break contour at the point when selection discontinues.
    • Don’t look for a layer or font with an orphan glyph to set the glyph window title.
  • Font Overview
    • Improve smart set cell user interface.
    • Remove duplicates when creating a query based on glyph names.
    • Disable release mode checkbox when “Generate Features with fontTools” is on.
    • Don’t try to recover a glyph from disk with a KeyError (glyph does not exists).
  • Space Center
    • Add Reset Beam to space center settings menu.
    • Add tickmarks and negative values for tracking and line height in a space center menu.
    • Set a space center edit text as first responder when opening a space center.
    • Improve display of non-existing glyphs.
  • APIs
    • Update mojo.UI.GlyphWindowToPDF to support CALayers through merz.
    • Add ufoz as supported file type with mojo.UI.OpenFont.
    • Add OpenFonts into mojo.roboFont.
    • Add support for glyphEditorWillShowPreview and glyphEditorWillHidePreview in mojo.subscriber.
    • Improve mojo.UI.OpenScriptWindow to open new documents.
    • Warn when incorrect display settings are set with mojo.UI.setGlyphViewDisplaySettings.
    • Improve robofont shell command: print out an error message when the app is not found.
    • Add support for RFont.fontWindow() returning the font window.
    • Fix checking layer.getDisplayOption() for all
    • Raise a traceback when a script tries to remove the default layer.[STILL OPEN ISSUE: https://gitlab.com/typemytype/robofont/-/issues/452]
    • Improve fontParts info, groups, features and kerning getting the parent font object.
    • When calling the fdk tools seperatly use the EmbeddedFDK tools.
    • FDK and fontMake are always embedded, no need to validate the generate menu item.
    • Fix ttfautohint in fontMake by providing a string with options.
    • Add getGlyphViewScale in Single Window Mode.
    • In a tab view unselected views have no view.window().
  • Docs
    • Massive reorganization of the subscriber docs. Easier to share single methods with HTML anchors.
    • General improvement on the mojo.UI docs page: deeper hierarchy, categories, overall review of docstrings
    • When RoboFont fails completely the error message points to a page on RoboFont documentation.
  • Inspector
    • Increase text box size for auto naming sheet to display long glyph names.
    • Persist the collapsed state of the inspector contour list.
  • Scripting Window
    • Reload operation in scripting window are now undoable.
    • Improve closing empty Python script documents. No prompt if the scripting window is empty.
    • Disallow opening scripts in tabs when opening from scripting menu.
  • Preferences
    • Improve shell help text inside a preference window.
    • Improve setting shortcut with alternate menu items.
    • Fix toggling on/off blue values with a preference shortcut. It was shadowing the guidelines display option.
    • Add Jump To Layer with preference hot key.
  • Font Info
    • Add Omit Mac Names in RoboFont tab in the font info sheet. The setting is accessible in the font.lib["com.typemytype.robofont.generateOmitMacNames"]. The lib expects a bool

RoboFont 4.2

  • Raise the minimum required OS version to 10.11.
  • Move to layer manager to a popover, and remove layer from the Inspector.
  • Add option to sync glyph layers width, markColor and unicode.
  • UI adjustments on Monterey
  • Check file structure before sending it to ufonormalizer, do not validate ufoz.
  • Store the size of the preference editor window.
  • Save test installed fonts to a folder inside the application folder.
  • Font Overview
    • Delete all selected smart item with the action menu.
    • Disable undo when setting markcolor for a lot of glyphs, pref key markColorUndoMaxGlyphCount.
    • Add match as option to filter component and anchor names.
  • Glyph Editor
    • Anchors validation should only remove control characters.
    • Allow triple click to jump to a component with alt down.
    • Enable the correct blue zone layer according the display settings.
    • Measurement info the tab indents must be relative to the point size.
    • Fix cuttoff pdf pastboard data.
    • Improve switching with preview key down.
    • Add support for preview key in single window mode while selecting in a font overview.
    • Fix bug when moving and closed single point contour.
    • Fix bug while removing the last segment.
    • Fix bug when ß is uppered to SS in jump to glyph.
    • Rename BezierDrawingTools to DrawingTools
    • Use the “glyphViewCanZoomWhileDragging” preference setting.
    • Highlight show offcurve on top of oncurves.
    • Add “middleground” public layer.
    • Snap guideline angle with shift to a multiple of 45°.
    • Show first point differently from the contour direction symbol.
    • Improve displaying curve length with italic angle and slanted coordinates.
  • Space Center
    • Improve space center input has changed with the field editor.
    • Add support for /?@background.
    • Live updating space center with new pref keys: spaceCenterMaxGlyphCountForSendingEvents for events and spaceCenterMaxGlyphCountForLiveUpdating for editing.
    • Add slider for line space and tracking in space center menu + alt to round these values.
  • Preferences
    • Improve validating preferences input controls.
  • APIs
    • Add glyph key in subscriber contextual menu notification info.
    • Add glyph key in right mouse down in font overview contextual notification info.
    • Add disableSubscriberEvents with statement to disable all subscribers.
    • Fix subscriber missing event names.
    • Add ExtensionBundle.currentBundle() to retreive the extension bundle.
    • openInterface should create a new document when the font is set to None.
    • Add mojo.subscriber.listRegisteredSubscribers.
    • Adding glyph.readingErrors().

RoboFont 4.1

  • Improvements on Subscriber docs.
  • Text editors now use performTextFinderAction instead of performFindPanelAction. Text search with cmd+f, cmd+g and cmd+e improved
  • Improve Preference Editor error messages
  • Improve toolbar style for a font window on Big Sur and Monterey
  • Font Overview
    • Change toggling fontOverview short cut: alt cmd e in single window mode
    • Remove focus ring in favor of secondary selection color when the view is not the first responder
  • Glyph Editor
    • Tons of small display fixes
    • Glyph editor “Measurement Info” display option improved
    • Point coordinates displayed with italic values when the italic slant is active
    • Added glyphViewMetricsHeightInfoAttribute key in the preferences editor. You can now control the height of the white board in a glyph editor
    • Adding support for the indexesShouldFollowContour preference. If True, point indices of new contours in a glyph will not start from 0. Useful for hinting, it could be helpful for interpolation too
    • Join selection: it allows additional selected points which are not start and end points
    • The guideline angle knob now rotates in the same direction as the guide it edits
    • General improvements on quadratic curves (interaction and visualization)
    • Draw guidelines in the background layers
    • Improve cmd keep handle-in-the-same-direction dragging
    • Delete point on shift down reverse to preserve curve preference settings
  • Space Center
    • “xHeight cut” display option in Space Center renamed “Cut Off“, now editable with cmd down when no glyph is selected
    • Improve suffix contextual menu when glyphs are added
    • Adding support for space center underline selection, see preference editor: spaceCenterSelectionStyle
  • APIs
    • Adding support for glyph.autoContourOrder()
    • Adding support for setting sort descriptors in a collection view
    • Load all glyph before using font.holdChanges with statement
    • mojo.setDefault will validate the incoming value for a key if there is a validator

RoboFont 4.0

  • Using layers to drawing!!
  • Adding merz!!
  • Adding Subscriber!!
  • Font Overview
    • Since full quadractics are supported don’t check and convert quadractic curves anymore.
    • Use esc or cmd + . to reset the font overview query.
    • Copy glyph width only when destination glyph is a template glyph.
    • Improved the UI for creating smart sets.
  • Glyph Editor
    • Support for full quadractic curves.
    • Improved add extreme points.
    • Improved zoom to mouse position.
    • Fixed bug in selection.
    • Selects automatically images when dropped on the canvas.
    • Does not draw drag lines when in transform mode.
    • Improved glyph editor scroll.
    • Improved rounding while slicing.
    • Reset selection path after undo.
    • Improved drawing while converting line to curve.
    • Add support for 45° contraint with the measurement tool.
    • Improve outline errors and remove some errors in favor of Glyph Nanny.
    • Add a pdf copy paste boardboard for improved interaction with other external drawing tools.
  • Space Center
    • Use the embedded defconFont.kerning.find() instead of flat kerning.
  • Preferences
    • Improved italic angle support.
    • Adding colors for slice.
    • Add “add guideline” hot key preference.
    • Disable old style drawing with glyphViewDisableDrawNotifications, as default this is False.
  • APIs
    • Set a run callback optionally in a CodeEditor.
    • Disable pip installer search until it gets resolved.
    • Update embedded packages.
    • Adding identifiers (i.e., com.developerName.toolName) to addGlyphEditorSubview.
    • Fixed glyph editor subscription bug.
    • Adds glyphViewDisableDrawNotifications in the preferences editor.
    • Add .asFontParts() and .asDefcon() to all font objects for convienient switching.
    • Don’t add QTKit anymore.
    • Adds selection and measurement notifications in the glyph.
    • Added documentation for registerSubscriberEvent.
    • selection.hasSelection() forced to be a bool
    • Add Doodle.ImageSize factory.

RoboFont 3.5b

  • Support for Big Sur Warning: super slow. Only available as beta, read more.
  • Font Overview
    • Improve arrow up and down in Smart Set lists.
    • Allow empty selection in a Smart Set list – used when selection and query don’t match.
    • Use the notification to catch selection changes in a Smart Set list.
  • Glyph Editor
    • Don’t use a composite operation when drawing coordinates.
    • Remove all selected objects when swapping layers.
    • Improved joining contours.
    • Fixed joining same contour jump.
    • Move slice with alt down while slicing.
    • Always call draw preview notifications, even for empty glyphs.
    • Join contours with the Bezier Tool by alt + clicking on a different contour.
    • Rename contextual menu item Reverse to Reverse Contours
  • APIs
    • Remove dummy callback for RGlyph.rasterize().
    • Fixed stamping data with the new auto closing UFOReader.
    • Fixed typo while opening a font with OpenFont.
    • Adding spaceCenter.getOffset() and spaceCenter.setOffset((x, y)).
    • Adding support for font generation with fontmake.
    • Set clear argument in FontParts’ newGlyph to True by default.
    • Use UFOReader.ufoFormatVersionTuple to compare UFO version.
    • Adding cffsubr and notarizing it.
    • Improved support for asyncio.
    • Add arguments to font.testInstall, similar to font.generate.
    • CoreServices.LSGetApplicationForURL is deprecated.
    • Improved glyph.autoUnicodes() by adding support for uniXXXX and uXXXXX names.
    • Draw background color when no font is set in a multilinescrollview.
    • Adding multiline.setShouldDrawGlyph(True/False).
    • Improving font.openInterface.
  • Miscellaneous
    • Set deployment target to macOS 10.10.
    • Use the real path when installing extensions.
    • Rename kern groups to MMK prefixes when converting back to UFO2.
    • Print a traceback when an observer fails.
    • Adding missing hot keys for blue zones and beam in Space Center.
    • Fixed the improved extracting unicode from glyph name.
    • Rename Application Help to RoboFont Help.
    • Fixed generating from layer getting the correct components from the correct layer.
    • Use the new buffer offset for the kerning preview.
    • Reset the glyphset while checking for external changes.
    • formatVersion could be None.
    • Convert number to string before setting it into a control.
    • Reset glyphset after a closing the file system.
    • Fixed bug when saving back to UFO2 and resetting the glyphset object.
    • Update internal test for external changes.
    • Fixed bug when opening the Help Window.
    • Changed link to the end user license.
    • Always use the latest GLIF XML version to display external changes.
    • Improved adding tabs in Font Window, Glyph Window, Single Mode Font Window, Space Center, Feature Window.
    • Ignore tabbing for Extension Builder, Help, Output, Inspector and preferences.
    • Improved retrieval of all extensions.
    • Use the notification to catch selection changes in a Smart Set list.
    • Add option in font info sheet to use fontTools to generate OpenType features.

RoboFont 3.4

  • Preferences
    • Adding new default setting spaceCenterWaterFallSizes.
    • Renaming sections: Character SetFont Overview, MenusShort Keys.
    • Adding new defaults to adjust glyph cell colors in the Font Overview.
    • Adding a search box to the Short Keys section.
    • Input of the Glyph Views’s artbox size should not be continuous.
    • Adding point label colors to the defaults.
    • Adding new defaults: glyphViewContinueDrawingAtPointStrokeColor and glyphViewContinueCloseContourAtPointStrokeColor.
    • Adding UI for spaceCenterMaxGlyphsForLiveUpdate in Preferences > Space Center.
    • Adding glyphViewMininumVisibleZoom to the Preferences Editor.
    • Adding new default setting defaultFontInfoAttributes: a dict of font info values for new fonts.
    • Adding new color defaults for glyph cell indicators: glyphCellLayerIndicatorColor, glyphCellSkipExportIndicatorColor, glyphCellNoteIndicatorColor.
    • Adding new default for background color in Glyph View textboxes: glyphViewDefaultTextBoxBackgroundColor.
    • Changed default glyphViewCanZoomWhileDragging to False.
    • Adding option to remember input history in Preferences > Space Center > Appearance.
  • Font Overview
    • Improved Smart Sets panel with support for font-level sets, drag and drop copying, nested folders, contextual menu, etc.
    • Improved reloading of query-based Smart Sets.
    • Adding glyph cell indicators for glyphs in the skip export list.
    • Improved glyph cell display in Dark Mode using custom colors.
    • Selecting a Smart Set folder combines all child queries with inclusive OR.
    • Adding UI for skip export glyphs in the Font Info sheet.
    • Use the new defconAppKit color subclassing: glyphCollectionGridColor, glyphCollectionBackgroundColor, glyphCollectionInsertionLocationColor, glyphCollectionInsertionLocationShadowColor.
    • Set different priority for toolbar items when resizing the window.
    • Test invalid UFO xml and display glyph cell indicators for invalid glyphs.
  • Extensions
    • Adding pycExclude argument to ExtensionBundle to allow some files as .py when generating .pyc extensions.
    • Show a warning when an extension short key is already taken.
    • Adding syntax highlight colors for code samples in markdown extension docs.
    • Sorting of extensions in the Extensions menu is now case insensitive.
    • Fixed misleading message when uninstalling an extension.
    • Ignore Icon? and .DS_Store files when hashing extensions.
  • Space Center
    • Fixed disappearing letters in Waterfall mode.
    • Fixed selection in right-to-left centered text.
    • Reverse the x mouse metrics when dragging in right-to-left text.
    • Show a ‘needs update’ indicator if the Space Center has more glyphs than defined in spaceCenterMaxGlyphsForLiveUpdate.
    • Adding option to display images in the Space Center.
    • Don’t hold first click when a Space Center control has focus.
    • Move the Space Center’s top line for easier adjustment with a custom script.
    • Recalculate the Multiline view when the external frame changes.
    • Improved Space Center auto-completion with Shift + Enter to insert /n linebreaks.
    • Adding input text history to store used preview strings.
  • Glyph Editor
    • Improved image scaling.
    • Improved reselecting images after undo.
    • Improved rounding of center point while rotating.
    • Allow continuation of bezier drawing at the starting point of a contour.
    • On free scale map with Shift down, scale x and y values to the same value.
    • Fixed bug when converting splines to single off curve cubic contours.
    • Fixed bug which deleted a contour for equal amounts of off curve and on curve points selected.
    • Don’t continue any dragging action when a margin drag is found.
    • Don’t smooth starting point and end point of open contours.
    • Post a glyph width changed notification when the left margin is dragged.
    • Check duplicated hover start point when points are close together.
    • Improved shift dragging scale transformation.
    • Improved crosshair cursor origin position when dragging selected segments.
    • Fixed crash when removing a glyph with a glyph window open.
    • Adding display option to show/hide images.
  • APIs
    • Adding new notifications: fontWindowWillOpen and fontWindowDidOpen.
    • Adding support for public.skipExportGlyphs when generating font files.
    • Adding a callback to completely ignore all events.
    • Fixed bug in glyph metrics math and added tests.
    • Adding savedState to mojo.drawingTools.
    • Adding center argument to transform, rotate, skew and scale in mojo.drawingTools.
    • Fixed setSelection and getSelection in MultiLineView.
    • Make imagePNGData available in mojo.tools.
    • Improved SpaceCenterWindow.setFont.
    • Add font-level Smart Set support to mojo.
    • Move Smart Sets API to mojo.smartSet.
    • Add support for nested folders to the Smart Sets API.
    • Overwriting FontParts selectedContours: contours with a single point selection are also selected.
    • Improved documentation for font.generate.
    • Adding support for generating fonts from layers with font.generate(layerName).
    • Change obj.dirty state for FontParts wrapper decorator – fixes for example dirty states of glyphs in font.round().
    • Adding glyph.selectedBPoints.
    • Component base glyph must always be present.
    • Adding a pip installer to install Python packages from the PyPI database.
    • Updating internal GNFUL list.
    • Improved traceback message when compiling fails at glyph level.
    • Improved cocoaDrawingTools.
    • Adding optional validation when setting defaults: setDefault(key, value, validate=True).
    • Removed deprecated lib.baseObjects.
    • Improved conversion of UFO3 kerning groups to UFO2.
    • Adding support for selecting individual glyph parts in EditingTool subclasses.
    • FontParts templateKeys and templateGlyphs must be tuples.
    • Adding addedUndoItem notification.
    • Adding scriptsMenuChanged notification.
    • Check if double-click callback comes from Space Center before sending it out.
    • Removing woffTools from embedded modules. If you need it, use the pip installer.
    • Improved Cocoa drawing tools’ drawGlyph to handle very shallow glyph objects.
    • Switching to master versions of fontMath and mutatorMath.
    • Adding support for guideline.selected.
    • Check incoming queries in Smart Sets to make sure they are valid.
  • Miscellaneous
    • Hard runtime notarisation and code-signing.
    • Adding notarizing entitlements.
    • Fixed segmented toolbar control.
    • Improved font tests and added new ones.
    • Adding normalization of invalid groups.
    • Check if .ufo files are supported by any other application.
    • Make the unicode rule editor input work on macOS 10.15.
    • Stamp disk data after saving when shouldNormalizeOnSave is on.
    • Improved lib undo.
    • Improved Kern Center: up/down arrow keys select next/previous pair from list.
    • Don’t set a target for a menu item when no callback is given.
    • Wrap building of menu items and short keys in a try/except statement.
    • Fine tuned undo in empty glyphs.
    • Change the separator color in the Accordion View.
    • Change the documentation help URL.
    • Change Accordion View collapsed state default keys.
    • Add isPaneVisible, showPane and togglePane to AccordionView.
    • Fixed bug in dealloc and removing view from superview.
    • Fixed cache bug which prevented nested folders in the Scripts menu from updating.
    • Wrap custom observers in a try / except statement to catch errors.
    • Fixed bug when removing the default layer.
    • Fixed bug when reverting changes to removed layers
    • Fixed bug which caused unwanted changes in a Space Center’s display options when pressing a tick mark (grave).
    • An Inspector window should not have focus on any input field on the first opening.
    • Fixed bug when checking student licenses.
    • Improved reading broken .glif XML (don’t crash but show a nice warning).

RoboFont 3.3

  • Glyph Editor
    • Adding support for individual guideline colors and anchor colors.
    • Snap anchors to on-curve points while dragging.
    • Improved display of anchor coordinates.
    • Move anchors inside empty glyphs when spacing.
    • Keep constraints with Shift down while skewing.
    • Clear the whole glyph when copying as component.
    • Fixed component sheet when adding a component to a layer.
    • Improved display of dashed lines while dragging.
    • Fixed bug when transforming orphan glyphs.
    • After a reselect, restore the current mouse down point.
    • Remove identifier when joining a single contour.
    • Don’t remove the identifiers when joining two contours.
    • Ignore open contours on union (booleanOperations).
    • Improved preserving point smoothness when deleting points.
  • Font Overview
    • Preserve glyph order after removing a glyph without pressing Alt.
    • Press Ctrl + delete to convert to template glyph and remove all layers.
    • Keep the glyph order after external changes.
    • Adding support for creating missing glyphs when sorting by character set.
    • Prevent overwriting glyph names in list mode.
  • Space Center
    • Adding tracking to the Space Center.
    • Improved single line drawing in Space Center.
    • Set correct layer while setting a font in the Space Center.
    • Improved modifying empty glyphs behavior in Space Center.
    • Update the Glyph Line View in a Space Center after setting a font.
    • Improved kern selection in kerning view in RTL.
    • Improved switching between LTR and RTL in the Space Center.
  • Inspector
    • Adding a new Guideline panel to the Inspector.
    • Improved switching between global and local guidelines using the Inspector.
    • Improved color cells in Inspector window.
  • Kern Center
    • Allow using single glyphs when creating kerning pairs in the Kern Center.
    • Prefer group kerning when adding a fresh pair, look up in existing groups.
    • Don’t allow duplicated glyphs in kerning groups.
  • Scripting Window
    • Improved closing empty scripting document.
    • When the Scripting Window is empty, reset the change count.
  • Preferences
    • Adding glyphViewCanZoomWhileDragging preference setting.
    • Fixing typo in PyDEBackgroundColor preference setting.
    • Moving background colors for index labels in the Glyph View (point, segment, contour, anchor, component) to the Preferences.
    • Escape unicode character descriptions in the Preferences Editor.
    • Ignore empty menu shortcuts in the Preferences Editor.
  • Extensions
    • Adding support for expiration date in ExtensionBundle and ExtensionBuilder.
    • Adding support for Markdown files (.md) as source format for extension docs.
    • Adding support for custom style.css when building markdown extension docs.
    • Don’t show a popup when the user cancelled the installation of an extension.
    • Improved extension banners.
    • Improved picking the correct Python version for extensions.
    • Adding folder naming scheme lib.x.y to support different versions of Python in compiled .pyc extensions.
  • APIs
    • Upgrading embedded Python to 3.7. Warning: all binary extensions (MetricsMachine, Prepolator) will become invalid and must be upgraded.
    • Adding support for drag & drop in a Canvas view.
    • Updating embedded AFDKO.
    • Switching to WKWebView as the default HTMLView.
    • Adding support for notification banners in mojo.UI.PostBannerNotification.
    • Adding RGlyph.holdChanges() to hold and release all notifications.
    • Adding showProgress keyword to font.testIntall.
    • Adding centerInView for StatusInteractivePopUpWindow.
    • Improved point labels: tuples, use point.clearLabels() to remove them.
    • Adding allowsMovingMargins for a subclass of the EditingTool.
    • Make dragTransformMatrix available in a subclass of the EditingTool.
    • Fixing ufo2fdk’s glyph name normalizer.
    • Improved fontParts and mojo dialogs.
    • Adding GlyphSequenceEditText and splitText to mojo.UI.
    • Adding docstrings.
    • Removing >>> from docstrings.
    • Improved FontParts glyph name in font logic for template glyphs.
    • Return tuples for font.templateSelectedGlyphNames.
    • Adding support for FontParts’ fileStructure argument.
    • Change applicationDidFinishLaunching_ to applicationWillFinishLaunching_.
    • Switching to experimental vanilla branch with support for auto layout.
    • Embedding markdown module.
    • Improved support for glyphWindow.setGlyph(glyph).
    • Improved FontParts’ hasOverlaps function.
    • Adding tracking areas to Canvas to support mouseEntered and mouseExited events.
    • Embedding fontmake.
    • Adding support for pytest in the Scripting Window.
    • Adding renameGlyph test.
    • Add getQueryResult for SmartSet objects to retrieve the result of a query.
    • Read .py files as utf-8 to parse the menu title name.
    • Removing __future__ and fontTools.Miscellaneouspy23.
    • Removing all PY2 and PY3 variables.
    • Change basestring to str (py3).
    • Change unichr to chr (py3).
    • Adding a helper to trace where a print statement is coming from.
    • Don’t embed standalone ufoLib anymore, as this could lead to errors in extensions.
    • Improved docstrings for getDisplayOption and setDisplayOption.
    • Improved error message when an alias cannot be resolved.
    • Improved and fixed layer.setDisplayOptions(), must be a dict now.
    • Add the FontParts document to the document controller even when no UI is provided, so it ends up in AllFonts and CurrentFont.
    • Switching to FontTools’ otRound to round coordinates.
    • font.glyphOrder changes automatically when a glyph is renamed by notification.
    • font.glyphOrder must return a tuple.
    • Adding glyphs to stemHist callback.
    • GlyphPreview can preview anything that looks like a glyph object and works with a pen.
    • Use glyph objects to check if a collection view contains a glyph.
    • Don’t iterate and change a dict at the same time while renaming in kerning and groups.
    • Raise KeyError when the glyph name is not found.
    • Ignore empty glyphs in font.bounds.
    • Adding allObservers to mojo.events.
    • Adding internalFontClasses to mojo.roboFont.
    • Updating the code editor’s lexer to Python 3.
    • Improved characterToGlyphName with a fallback.
    • Improved wrapping of a defcon.Font in a RFont.
    • Try to convert command line tool arguments to unicode.
    • Renaming UIdocument to shallowDocument in FontParts object.
    • Improved code editor when no lexer is set.
    • Improved generation of kerning features.
  • Bugs
    • Fixing AccordionView display bug in macOs 10.14.
    • Fixing issue with jumping to line number in a code editor.
    • Set the unicode formatter correctly (internal macOS change).
    • Don’t crash hard when something fails while drawing in a multiline scrollview.
    • Canvas now sends the correct pasteboard types.
  • Miscellaneous
    • Improved extracting data from AGL/GNFUL lists.
    • Adding XML glyph diff for External Changes window.
    • Prevent Open script menu items if the shortcut key is already taken.
    • Improved setting mark color swatches in search fields.
    • Allow loading arbitrary external data (for example external help files).
    • Improved preserving identifiers while using undo/redo.
    • Remove identifiers from removed points while inserting a point.
    • Reset selection on transformation of a FontParts object.
    • Adding a friendly warning when deleting a Smart Set.
    • Improved required font.info settings.
    • Improved Revert to Saved dialog.
    • Build template glyphs only if they don’t exist yet.
    • Improved shell script so that the application file can be renamed.
    • No release mode for .ttf export.
    • Switching Accordion View to a flat UI style.
    • Fixed external save inside RF to prevent an External Changes pop-up window when saving from the menu.
    • Fixed layer order when jumping to next layer in Space Center.
    • Set layer color based on the Preferences settings (foreground and background only).
    • Set modification date in internal document when saving programmatically.
    • Don’t use the AppKit localization.
    • Remove guideline lib keys when removing the guide.
    • Improved tests.
    • Move anchors in empty glyphs when spacing.
    • Update the file browser only when it becomes visible (RoboFont becomes active).
    • Set auto save name for HTML window.
    • Renaming ambiguous menu title: New Sets Folder.
    • Fixing conversion of groups with group names identical to UFO2.
    • The application is now notarized as required by Apple for macOS 10.15+.

RoboFont 3.2

  • Font Overview
    • Show layer contents even if a glyph is not present in the default layer.
    • Show all glyphs in all layers, even if they are not listed in the glyph order.
    • Alt+delete a glyph will remove the glyph from all layers.
    • Copy unicodes when pasting a glyph in a glyph cell.
    • font.glyphOrder has precedence over sort descriptors.
    • Don’t update the window header when the saving path could be None.
  • Glyph Editor
    • Improved drawing speed.
    • Improved display of anchors, labels, component info box, outline errors, anchor point coordinates.
    • Improved updating components when the base glyph has changed.
    • Improved measurements on open paths.
    • Move image when dragging side bearings.
    • Adding option to copy metrics in Layer popup window (shortcut key l).
    • Improved copy and swap to layers.
    • Draw layer image before checking if the glyph is empty.
    • Improved setting of default layers and updating related views.
    • While setting glyph.width, flag glyph as changed if it’s a template and if the width is the same.
    • Fixing flipping unicodes when flipping glyph layers.
    • Fixing drawing image from layer with an alpha value.
    • Fixing shift image when changing left margin.
    • Reuse/cache NSAttributedString and NSBezierPath objects.
    • Don’t update ruler views everytime the glyph view is refreshed.
    • Fixing font size issue and drawing of measurements.
    • Improved drawing of guidelines and end points.
  • Space Center
    • Update Space Center input field when toggling beam with a script.
    • Improved Space Center updating and performance.
  • Code editor
    • Improved emoji support.
    • Improved auto completion.
    • Disable auto replacements in a code editor.
    • Check if a file exists when opening the file browser in the Scripting Window.
  • Preferences
    • Adding glyphViewDrawLayerBackgroundColor to disable layer background color.
    • Adding normalizeWriteModTimes default option to normalize UFOs on save.
    • Adding checkExternalChanges as a default setting.
    • Preferences Editor requires fallback for shortcuts like "\" and \\\.
    • Fixing preferences export.
    • Fixing Preferences Editor.
  • Extensions
    • Removing old Mechanic methods from ExtensionBundle.
    • Adding icon for .mechanic files.
    • Improved Extension Bundle validation.
    • Adding support for requirements and specific versions in ExtensionBundle.
    • Load extension before setting keyboard shortcuts.
    • Load exension bundle from the extension object instance.
  • UI & UX
    • Glyph View and Feature Editor now have a status bar instead of placard scrollviews.
    • Improved slider in menus.
    • Improved UI for 10.14.
    • New icons for Dark Mode.
    • Fixing display issues in the AccordionView.
    • Improving steppers.
  • Core
    • Updating internal packages.
    • Improvements for macOS 10.14.
    • Moving ufoLib to fontTools.ufoLib.
    • Switching to psautohint instead of the AFDKO autohint.
    • Removed embedded library designspaceDocument (now included in fontTools).
    • Huge speed bump in generating font binaries!
    • Adding tests.
    • Adding getGlyphViewHotKey and setGlyphViewHotKey methods.
    • Adding spaceCenter.getLineHeight() and spaceCenter.setLineHeight(value).
    • Improved reading of .fea files with non-ascii characters in comments.
    • Adding support for Single File UFOs (UFOz).
    • Removing py2 related code.
    • Adding uharfbuzz as an embedded package.
    • Set objc to verbose, so tracebacks are comming back.
    • Print out the error message when executing tests.
    • Don’t use patterns to make gradients.
    • Don’t cache color gradients, keep a reference to the color instead.
    • Fixing copy of glif XML (lxml uses single quotes instead of double quotes).
    • Also normalize when the font.save(path) is None.
    • Solving deprecated warning and use CoreServices instead of LaunchServices.
  • FontParts
    • Fixing call to super class method in fontParts.
    • Improved RFont.newGlyph() so it tries to keep the same object if the glyph already exists.
    • Adding glyph.selectedPoints and deprecate glyph.selection.
    • Use allFonts as keyword in SelectFont.
    • Update components when renaming glyphs.
    • Improved setting unicode for glyph.
    • Improved subclassing of FontParts objects.
    • Improved contour.removeSegment() on open paths with a trailing off curve.
    • Improved warning when provided unicode is not valid.
    • Adding flatKerning to fontParts.
    • Don’t overwrite setStartSegment.
    • Set file path in fontParts.RFont.save when the path is different.
    • Reset selection after transforming a FontParts object.
  • Observers etc.
    • Set index of active tool when building the toolbar item in the Glyph Window.
    • Send refresh notification when labels are edited.
    • Fixing unwanted change notifications.
    • Adding applicationScreenChanged to base tool.
    • Improved sending notification while holding the preview key.
    • Wrap drawing notification in a try/except statement.
    • Fixing typo in notification: will must be did
  • Bugs
    • Fixing hidden long callback.
    • Fixing error on deleting points.
    • Fixing issues when setting Character Set Preferences.
    • Fixing checkbox selection issue in the Inspector Panel.
    • Fixing error when compiling TrueType fonts.
    • Fixing cursor issues while changing screens with different resolutions.
    • Fixing issue with macOS numbers localization in Space Center.
    • Fixing bug while converting colors to hex notation.
    • Fixing bug with split views in Scripting Window.
    • Fixing autohint bug.
    • Fixing issue while removing glyphs when removing from kerning and groups is enabled.
    • Fixing issue with remove overlap in booleanOperations.
    • Fixing changing shortcut when there is an alternate menu item.
    • Fixing problems with autosaving.
    • Fixing glyphWindow.setGlyphViewScale by force setting the scale value.
    • Fixing crash when dragging the column headers of the list view in Font Overview.
    • Fixing issue when restoring a document.
    • Fixing bug when getting external changes.

RoboFont 3.1

  • Any layer can be the top layer (removed restriction to have foreground at the top).
  • Added new keyboard shortcut Ctrl+Alt+Cmd+O to reveal the log file in Finder.
  • Improved Bezier drawing tool.
  • Copy paste also copies glyph.width, and uses it when the destination glyph is empty.
  • Don’t set image attributes in glyph.lib if there is no image.
  • Scripting
    • Improved support for contour.removePoint.
    • EditingTool is easier to subclass and disable editing while keeping selection.
    • Added support for custom menu items in any contextual menu.
    • Added ufoProcessor (successor of designSpaceDocument) to the embedded packages.
    • Updates to ufoLib to allow fine-grained control over UFO validation.
    • Fixing extractEvent by removing tuple values.
    • Added mojo.tools.roboFontUnitTest to unit test inside RF.
    • Added RFont.hasChanged().
  • Space Center
    • Send out CurrentGlyphChanged notification.
    • Fixing bug in Space Center when using /? and /!
  • Preferences
    • Menu Preferences now shows a warning for duplicated keyboard shortcuts.
    • Added a color preference for echo paths.
    • Added new Preferences settings:
      • spaceCenterMaxGlyphsForLiveUpdate
      • loadFontGlyphLimit
      • defaultGuidelineShowMeasurment
      • defaultGuidelineMagnetic
      • ufoLibReadValidate
      • ufoLibWriteValidate
  • Fixing reading .enc files.
  • Fixing importing binary PS font files with control characters in the name recods.

RoboFont 3.0

  • Uses UFO3 as its native source format.
  • Written entirely in Python 3.
  • Lots of internal rewrites.
  • Opens UFO files with lightning speed.
  • Replaces roboFab with fontParts.
  • Layers are more independent.
  • Components refer to glyphs in the same layer.
  • Validating and converting incoming UFO2 data:
    • Removes duplicates in kern groups.
    • Removes glyphs that occur in too many kern groups.
    • Converts RoboFont 1+ lib keys to UFO3 objects.
  • Glyph View
    • Use Cmd + Shift to add a diagonal constrain for line segments.
    • Use Alt + click on a line segment to convert it to a curve. Click near an on-curve point to select the off-curve point.
  • Space Center
    • Speed improvements.
    • Show guidelines and blues.
    • New input syntax: /<glyphName>@<layerName> to select a glyph from a given layer. For example: /A@background.
  • Scripting
    • Moving fontWillGenerate and fontDidGenerate to a more internal level, so it sends a notification when generating with a script.
    • Speeding up print() statement.
    • Adding Cmd + period to stop a script (like in DrawBot, thanks Just!!!).
    • Autocomplete ([{}]) in the code editor.
    • Adding glyphConstruction as a module!!
    • Renaming sys_path_override to external_packages – a folder to overwrite embedded packages.
    • Moving lots of internal modules to mojo.*.
    • Update of internal packages to UFO3, py3 and much more.
    • Adding RFont.hasInterface().
  • Preferences
    • Use drag-and-drop to sort Miscellaneous Colors.
    • New raw Preferences Editor (press Alt while opening the RoboFont menu item).
    • New Preferences > Menus section, listing all menu items and keyboard shortcuts.

A new license is required for RoboFont 3.

If you purchased a RoboFont 1.8 license after the 08/03/2017, you will get a full discount. Get in touch with your order number for more details.

RoboFont 1.8.4

  • Updating internal packages.

RoboFont 1.8.1

  • Fixing the auto-updater.

RoboFont 1.8

  • Updating internal packages.
  • Use logging for logs, saved to Application Support/RoboFont/robofont.log.
  • Adding spaceCenterSelectionChanged notification.
  • Show a warning when adding glyphs with already existing unicodes.
  • Show an outline error when smooth points aren’t really smooth.
  • Adding support for swipes and other events to mojo.canvas.
  • New Space Center notifications: spaceCenterDrawBackgroundLineView and spaceCenterDrawLineView
  • Ignore Components menu when there are too many items.
  • Adding font and glyph metrics to guides measurements.
  • Improving Inspector transform pane input fields.
  • Ignore autoSavePath on Preferences export.
  • A scripting window can become a floating window.
  • Adding sys_path_override to the RoboFont application support folder, to overwrite embedded packages and modules. Be careful!

RoboFont 1.7

  • Glyph Editor
    • Glyph View should feel a lot faster (almost 4 times faster on 10.10).
    • Optimized behavior between mouse and arrow keys point modifications.
    • Making the guides popup menu a bit wider.
    • Move multiple tangent points selection according to their angle.
    • Fixing background color bug in Preview mode.
    • A glyph note can be None, so don’t copy it.
    • Fixing measurement in layer glyphs.
    • Changing behavior of the arrow keys based on if the cap lock key is down. When cap lock is down, the arrow keys behave like a mouse.
    • Fixing a slicing issue.
    • Fixing disappearing view on small zoom levels.
    • Rename glyph is possible when the glyph already exists as a template glyph.
    • Improving off curve while modifying an open contour.
    • Fixing starting point issue while setting extreme points.
    • Improving undo.
    • Improving drawing tool.
    • Fixing bug when pulling BCP out of two overlapping on-curve points.
    • Improving color overlay for images on 10.11.
    • Prevent circular component references.
    • Support jumping to first and last glyphs with home and end key.
    • Optionally disable snapping of off-curve points.
    • Show contextual guide menu when the guide is locked.
    • Draw end points of open paths differently.
    • Dragging a guide with an italic angle if there is one set.
    • Adding clear guides to contextual menu.
    • Adding skew + scale for scaling italics. Use “shift lock” to enable. An italicAngle must be set.
    • Show transform info while transforming.
    • Improving transform, more focus on the proportional constrain.
  • Font Overview
    • Support for mark colors (as color swatches) in the rule editor.
    • Ignore template flag when importing empty glyphs from a binary font.
    • Improving checks in fonts with quadratic curves.
    • Improving group sheet to make it more flexible.
    • Update glyph cell representation when a layer is removed.
    • The Font Overview’s search query should not change while show/hide the Find bar.
    • Adding support for displaying big unicodes in Space Center and glyph cells.
    • Improving selection in Font Overview.
    • Adding a new notification glyphCollectionDraw, sent when redrawing the ice cube glyph view. Be careful and don’t draw heavy stuff. Cache before!
    • Delay updating of components in the font overview (this should speed up editing a lot!).
    • Small optimizations in the rule editor (aka Search).
    • Store custom unicode → glyph names mapping in the Preferences (only those which aren’t in the GNFUL list).
  • Inspector
    • Show a nice warning when trying to assign a unicode that already exists.
    • Round the center points when transforming a glyph.
    • Snap to grid even when no transformation is set.
    • Store Inspector pane sizes and reuse them when reopening window.
    • When renaming a glyph, also update the glyph order.
    • Improving setting data in Inspector list views. (Anchor.name cannot by None or empty, baseGlyph is required for a component).
    • Set italic angle as skew value (see options).
  • Preferences
    • Adding hot key to toggle measurement info.
    • Adding hot key to toggle upside down.
    • Fixing reordering extensions in the Preferences window.
    • Adding glyph window tool sorting in the Preferences.
    • Check autoSavePath default key and revert the expanded user back to ~/….
    • Adding vertical metrics color to the Preferences.
    • Reset all warning buttons in the Preferences.
  • Space Center
    • Adding support for centered text alignment.
    • Set point size correctly when opening a new Space Center.
    • Adding support for hiding template glyphs.
    • Recalculate beam position when setting it with a script.
    • Fixing spaceCenter.getPointSize().
    • Adding support for display options in Kern Center (same hot keys as in Space Center).
    • Improving performance when a current glyph (aka /?) is not needed.
    • Fixing display of left margin while changing it in a Space Center.
    • Support for /! to display the current glyph selection.
    • Fixing issue when the input box is still active.
    • Disabling drag, use CurrentSpaceCenter().disableDrag(True).
    • Adding notification spaceCenterAdditionContextualMenuItems for additional contextual menu items.
  • Scripting
    • Jump to the github version of fontTools.
    • Open the UI of an existing font that has been created without one.
    • Adding mutatorMath and the *.desingSpace icon.
    • RoboFab kerning can be set to zero for a specific pair (breaking the old robofab API…).
    • Extension developer’s name can be unicode.
    • Extension name must be ascii only.
    • Fixing font.cmp(other).
    • Better support for setting display states in a glyph line view.
    • Send spaceCenterInputChanged notification.
    • Support for some extensions time logging.
    • Adding from mojo.canvas import CanvasGroup (same as Canvas but with no scrollview).
    • Jump to definition (Alt + Cmd + J).
    • Support word wrap in code editors (py, fea, …).
    • Fixing fontTools recalcBounds when there is no extreme point.
    • Adding KernCenter, GroupCenter and SpaceMatrix to mojo.UI.
    • Adding a UI to an existing font object without a UI: font.showUI().
    • Wrap internal defcon objects.
    • Fixing robofab font.kerning.remove(pair) and del font.kerning[pair].
    • Support for custom extension root – use default key: extensionsDir.
    • Adding removeDefault in lib.tools.defaults.
    • Fixing SmartSet object.
    • Support for custom glyphOrderAndAliasDB: store it in the font.lib with the key com.typesupply.ufo2fdk.glyphOrderAndAliasDB.
    • Support for the hdmx table: store it in the font.lib with key com.robofont.robohint.hdmx.
    • Support for the VDMX table: store it in the font.lib with the key com.robofont.robohint.VDMX.
    • Improved font.copy() by also copying layers.
    • Sort the all fonts list: AllFonts("familyName", "styleName", "italicAngle", "isItalic", myCustomFunction, useDefault=True, reverse=False).
    • Adding support for cap lock modifier key in event tools.
    • Adding contextual menu event in font overview with this notification: fontOverviewAdditionContectualMenuItems
    • Send notification when a testInstall is done: didTestInstallFont.
    • Fixing some small mojo.compile.ttfautohint issues.
    • Fixing bug in checking component baseGlyph names for robofab interpolation.
    • Optionally disable event stream use default enableExternalFileCheck (True/False).
    • Enable automatic text replacements in code editors.
    • Adding AllWindows() and CurrentWindow() to mojo.UI.
    • Adding support for getting a CurrentGlyph() from a Space Center selection.
    • Improving mojo.canvas.
    • Adding glyphWindow.addAdditionalView(vanillaView).
    • Adding glyphWindow.getVisibleRect()to a glyph window. This is the actual visible rect without the scrollers and rulers.
    • Adding glyphs should clear the glyph when overwrite is enabled.
    • drag-and-drop should copy the width of the dropped glyphs.
    • Adding vertical metrics color to the Preferences.
    • Adding roundedRect to mojo.drawingTools.
    • Adding glyphWindow.getVisibleRect() to a glyph window. This is the actual visible rectangle without the scrollers and rulers.
    • Support for Data() object in json.
    • Installations of extensions is based on extension in the default folder.
    • Adding find bar to Output window.
    • Improved glyph.setParent(font).
    • Adding local Python lib folder to sys.path.
    • Improving SliderEditStepper with support for floats.
    • Adding MenuBuilder to mojo.
    • Send notification when drawing the background when the view is inactive.
    • Fixing compiling scripts where the file name contains unicode characters.
    • Improving SmartSet support.
    • Adding selectSmartSets(selection) to set a selection in a Smart List (selection is a list of indexes).
    • Adding updateAllSmartSets() to update a Smart Set list in the UI.
    • Support for period + tab → self. in a code editor.
    • Fixing bug when removing a last smooth bPoint in an open contour.
    • Fixing weird Cmd + grave issue.
    • Fixing issue when something wants to set a lib object in a RFont.
    • Keep BPoint anchors smooth when inserting another bPoint.
    • Improved code editor syntax highlighting.
    • Embedding feaPyFoFum. Use the font.lib key com.typesupply.feaPyFoFum.compileFeatures to enable it while generating.
    • Update glyph after move(x, y).
    • Building extensions with .pyc only enabled copies scripts linked to the menu as normal .py files.
    • Adding RFont.templateGlyphOrder.
    • Fixing drag-and-drop issue with files in a code editor.
    • A glyph view has drawTextAtPoint and drawTextInRect to assist you to draw text in the glyph view.
    • Adding magnetic attribute to a guide object.
    • Fixing flipping glyph.
    • Fixing bug in comparing components in the robofabWrapper.
    • Improved regenerating of the scripting menu, prevent loss of hot keys.
    • Remove kerning pair with kerning.eliminate(…).
    • font.templateGlyphs is an attribute, not a method.
    • Send notification when RoboFont will terminate.
    • Improving API on collection view, mainly used externally in the glyphCollectionDraw notification.
    • autoUnicode() uses uni<4-hex> and u<5-hex> glyph names to set the unicode value.
    • Fixing issue while decomposing a selected component.
    • Adding glyph cell notification: glyphCellDraw and glyphCellDrawBackground. Use it wisely.
  • New Icon.
  • Updating the embedded AFDKO.
  • Adding GNFUL, glyphNameFormatter (with a : script separator)
  • Fixing some high unicode input bugs.
  • Small UI improvements in 10.10.
  • Touch .ufo file to update the file modification date.
  • Fixing autosave.
  • Optionally disable event stream – use enableExternalFileCheck (True/False).
  • Remove empty dictionaries in the glyph.lib when saving.
  • Show a warning when a UFO is badly written (but with correct syntax, like 2 moveTo points in the same contour).
  • Improving group sheet and make it more flexible.
  • Solve small bug in setting extreme points.
  • Friendly warning when assigning a unicode that already exists.
  • Extension name must be ascii only.
  • Transform matrixes in components must be tuples.
  • Use the width of the glyph to check if a component can be used with the flag USE_METRICS (only while generating TTF).
  • Improving glyph view updates on 10.9.
  • Adding menu when launching in safe mode (shift down).
  • Update vanilla, compositor and fontTools.
  • Fixing big unicodes issue by updating ufo2fdk.
  • Removing limitation for ttfautohint requiring a lowercase ‘o’.
  • Add GDEF if necessary while building TTF binary.
  • Improving support for cursors on retina displays, when creating a cursor please use CreateCursor(pathOrNsImage, hotspot).
  • Set the text field as first responder, whatever settings are used.
  • Only show Find bar when the font window is the main window.
  • Do not add a unicode value for a template glyph if the unicode already exists.
  • Show a message when font generation has failed.
  • Fixing issue setting maxComponentElements.
  • When no glyph name is given, don’t analyze while pasting.
  • Better support for orphan glyphs.
  • Adding an optional check when the font does not contain an ‘o’, so ttfautohint recognizes it as a symbol font.
  • Adding version of embedded packages in the About window.
  • Adding clear buttons to Extension Builder.
  • Don’t show Output Window when a print statement is not in the main thread. (Fixing here and in Mechanic as well)
  • Fixing a bug that removed duplicated guides with same angle and position.
  • Adding support for dummy DSIG table. (see Font Info sheet > RoboFont).

This update only supports macOS 10.9 or higher.

Older versions of macOS are supported by RoboFont 1.6.

RoboFont 1.6

  • Font Overview
    • Improving Alt copy of glyph selection to glyph names only.
    • Preserve checkboxes in the Add Glyph sheet.
    • Adding support for glyph note in the Font Overview list view and font search.
    • Glyph cell slider + Alt key will resize cells in all open fonts.
    • Improving Add Glyph sheet with options to import glyph names from external encoding file or from other open fonts.
  • Glyph Editor
    • Better support for orphan point selection during copy paste.
    • Support drag-and-drop glyphs to a Scripting Window.
    • Undo support for flip layers.
    • Use italic slant offset as a display option.
    • Fixing bug with transformation of components selection.
    • Reset selection after locking an image and switching from Transform mode.
    • Slice tool snaps to guides.
    • Reset image selection after locking an image.
    • Improved support for copy/paste and preserving contour order.
    • Jump to glyph pushes exact matches to the top.
    • Fixing bug with joining contours when points are on top of each other.
    • Don’t jump to hidden layers.
  • Space Center
    • Enable flip.
    • Live preview when editing the left margin.
    • Fixing bug when using the beam.
    • Display font size as a combo box.
    • Fixing bug in window order when double-clicking a Space Center.
    • Add in-between values when beam is active.
  • Scripting
    • Fixing bug when setting x, y values in guides.
    • Support for adding Inspector window panes and toolbar items in both a font window or a glyph window with: inspectorWindowWillShowDescriptions, glyphWindowWillShowToolbarItems and fontWindowWillShowToolbarItems event notifications.
    • Fixing bug when comparing components with glyph.isCompatible(otherGlyph).
    • Adding a new bundle.html attribute to ExtensionBundle, to indicate if the bundle has html help files. It must be a bool.
    • Adding font.showUI() (only for fonts which have no UI yet).
    • Improving glyph.center() to work better with layers.
    • Improving getting bcpIn and bcpOut in bPoints with open contours.
    • Adding OpenScriptWindow(path.py) to mojo.UI.
    • Adding obj.getRepresentation to robofab glyph and font wrapper.
    • Fixing bug when getting an extension icon.
    • Improving support for font.save() when no path is given and font has no path.
    • Remove closed documents from AllFonts.
    • Fixing bug in rounding kerning.
    • Fixing bug in diving a glyph.
    • Fixing bug in copying orphan glyphs.
    • Add a space after # when commenting lines of code.
    • Improving support for code completions.
    • mojo.CurrentFontWindow().setGlyphNamesAsSet(glyphNames)
    • font.setLayerDisplay has an option for all.
    • mojo.UI.getTestInstalledFonts() and mojo.UI.testDeinstallFont(font)
    • Script file browsers hide empty .py files in the menu, and support alias files.
    • Fixing bug in font.copy().
    • Adding font.info.update(otherInfoObject).
    • Adding support for sub-classing internal font objects.
    • Improving messages when installing and uninstalling extensions (with version numbers).
    • Adding currentFontOnly option for getting windows with mojo: CurrentGlyphWindow(currentFontOnly=True) works for all windows in mojo.
    • Make it easier to add a UI to an existing font without a UI.
    • Adding mutatorMath and mutatorMath.designSpace icon :)
  • Inspector
    • Visual support for multiple unicodes in Inspector window.
    • Fixing bug when setting the transform matrix for components.
    • Transform pane now accepts Enter to apply a transformation.
    • Support for transform location while flipping.
    • Add a nice warning when assigning a unicode that already exists.
  • Preferences
    • Adding AGL-file path for custom unicode to glyph name mapping.
    • Check if short key path exists.
    • Adding option to toggle __future__.division while executing a script.
    • Adding color preferences for preview fill and preview background.
    • Improving support for sorting extensions.
    • Adding hot key to toggle measurement info.
  • Fixing bug: rounding error while compiling a ttf.
  • Improving Test Install.
  • Search Box in Info Sheet.
  • Support for vfb import/export if users have vfb2ufo installed in /usr/local/bin.
  • Update the embedded FDK.
  • Fixing bug when generating an unsaved font.
  • Improving conversion from cubic to quadractic curves.
  • Support for conversion from quadratic to cubic curves with the same logic.
  • Improving support for Test Install when there is no UI.
  • Update color marks in the rule editor with the colors in the current font.
  • Holding Shift down while launching the app will open RoboFont without any extensions installed (Safe Mode).
  • UI uniformity on list cell colors.

RoboFont 1.5.1

  • Fixing Preferences window bug for 10.6 users.

RoboFont 1.5

  • Font Overview
    • Adding support for deletion of multiple Smart Sets.
    • Adding option for choosing a mark color when generating new glyphs.
    • Adding support for selection of multiple Smart Sets.
    • Adding support for navigation with arrow keys in Smart Sets.
    • New code editor for OpenType features.
  • Glyph Editor
    • Fixing direction of keys for layer up/down. :)
    • Adding Cmd + Ctrl in the Components contextual menu, to copy the base glyph metrics.
    • Adding display option Show Segment index.
    • Remove Overlap now works faster.
    • Separating display options: Guides and Rulers.
    • Fixing bug in beam factory when two intersections are on top of each other.
    • Adding Show Image Info.
    • Glyphs with more than 5 unicodes are renamed to uXXXXX.
    • Add Components sheet now accepts both unicode value and glyph name when searching for glyphs.
    • Better support for selection of multiple tangent points.
    • Adding Ctrl + Cmd + A to select all components.
    • Fixing bug in joining contours with line and curve segment.
    • Fixing bug in exporting smart list to groups.
    • Improving sliders for image colors.
    • Set components as selected after decomposing.
    • Adding Lock Image to image contextual menu.
    • Join a contour with another contour (only when two end/start points are selected).
    • Alt + click on a straight line to generate BCPs with the rule of thirds.
    • Set points as selected after slicing.
  • Space Center
    • Same default settings as a glyph view for jumping to the next glyphs.
    • Adding hot key to toggle Space Matrix.
    • Preventing PUA from converting characters in the input field back to unicode.
    • Improving esc menu.
    • Handling Space Window titles similarly as other windows.
    • Fixing small bug with drag-and-drop.
    • Adding setBeam(pos) and beam() methods.
    • Adding flexible cell widths.
    • Adding hot keys to toggle kerning.
  • Inspector
    • Adding support for drag-and-drop reordering of contours.
    • Fixing bug with setting a note in a glyph.
    • Improving layer panel: drag-and-drop and reordering.
  • Generating
    • Better output for .ttf compiler.
    • Faster generation for all formats.
    • Fixing bug in .ttf splines. (It’s possible to have a contour without any on-curves, doh)
    • Fixing bug with double points in .ttf compiler.
  • Preferences
    • Adding ‘Reveal Python Script folder’ button to Preferences > Python.
    • New default colors and options for the new code editor.
    • Allow any kind of shortcut to be assigned to a script.
  • Scripting
    • Adding a selected attribute to Robofab bPoints.
    • Adding glyph.removeSelection to RoboFab.
    • Allowing ExtensionBundle to save an extension or make one from scratch.
    • New Code Editor, with new syntax highlighting.
    • New mouse and keyboard shortcuts in a code editor:
      • select number → Cmd + drag
      • select tuple → Cmd + drag
      • select number → Cmd + arrow up/down
      • select bool (True, False) + Cmd + click
      • select bool (True, False) + Cmd + arrow up/down
    • Remember settings for ‘Show Line Numbers’.
    • Fixing bug in exporting preferences in mojo.UI.
    • Improved UI for Extension Builder.
    • Adding support for sending custom events.
    • Set and get a transform matrix from a Robofab component.
    • Check if the coding font used in the scripting window is installed.
    • Adding AllSpaceCenterWindows and CurrentSpaceCenterWindow.
    • Adding option to import/export Preferences to/from a dict.
    • Adding shortcuts for indenting and unindenting code.
    • Fixing Robofab’s rotate, skew and offset attributes.
    • Adding support for applying transformation matrixes to an image object.
    • Publish event when an extension is built.
    • Adding support for inserting BPoints in a contour.
    • Fixing bug in robofab.contour.breakContour(point).
    • Adding support for glyph, component and selection colors in mojo.glyphPreview.
    • mojo.UI.multiLineView returns a proper Robofab glyph.
    • Adding SpaceCenterToPDF and GlyphWindowToPDF.
    • Improving Smart Sets in mojo.UI
  • Fixing typos!
  • ‘Update found’ bugs should be completely Fixing. :)
  • Massively improved memory management.
  • Adding support for robofont://path and robofont-script://path.py.
  • Fixing bug with saving images.
  • Adding support for opening .ttc TrueTypeCollection files.

RoboFont 1.4

  • Font Overview
    • Fixing bug in the conversion of Smart Set to group.
    • Don’t mark template glyphs.
    • Fixing bug in setting glyph order by dragging glyphs.
    • Fixing bug in removing glyphs and template glyphs.
    • Building components with anchors.
    • Adding anchor syntax: Agrave=A+grave@top.
    • Adding search by mark color.
    • Adding Smart Set binders.
    • Fixing bug with include(myFile.fea).
  • Glyph Editor
    • Fixing bug in remove overlap.
    • Fixing bug in slicing glyphs.
    • Correctly perform layer up / layer down hot keys.
    • Swap complete glyph to layer when there is no selection.
    • Round components after decomposing to the value set in the Preferences.
    • Fixing bug in beam glyphs.
    • Fixing bug in Jump to Layer popup window.
    • Page up / down jump through component selection.
    • Page begin / end jump through anchor selection.
    • Support for Shift constrain when scaling images.
    • Fixing bug with horizontal and vertical flipping.
    • Draw anchor coordinates when ‘show point coordinates’ is active.
    • Enter on anchor selection.
    • Transform position is written back to the defaults.
    • Fixing bug when slicing glyphs.
    • Adding anchor indexes and component indexes.
    • Fixing bugs with constrains.
    • Better undo support for global guides.
    • Improving break contour.
  • Generating
    • Optimizing .pfa compiler.
    • Check contour direction while generating .ttf or .otf from different sources.
  • Preferences
    • Adding Close Contour to hot keys.
    • Adding Space Center Input Selection Color.
  • Scripting
    • Support for opening binary fonts without UI and scripting.
    • Clear Output Window before running a script.
    • Adding stemHist to mojo.compile.
    • Backup code if code makes RoboFont crash :)
    • Debug window is accessible through mojo.
    • Support for isCompatible with nice error report.
    • Support for tabs in Scripting Window.
    • OpenFont(…, showUI=False) can be opened in a Glyph Window or Space Center.
    • font.templateSelection in robofab.
    • Adding hasOverlap() to robofab (both in glyph and contour object).
    • font.copy(showUI=False/True) to make a copy with or without UI.
    • Adding QTKit.
    • Fixing bugs in Cocoa drawing tools.
    • setGlyphViewScale and centerGlyphInView for a glyph window object.
    • Open the MultiLine view as a vanilla object.
    • Support for glyph math and boolean operations with | union, % difference, & intersection and ^ xor.
    • Support for tracking in Space Center aSpaceCenter.setTracking(10).
    • New event callbacks in Space Center: spaceCenterDraw, spaceCenterKeyDown, spaceCenterKeyUp.
    • Adding GlyphWindowToPDF and SpaceCenterToPDF to mojo.UI.
  • Metrics
    • Optimizing RTL kerning.
    • Pressing esc in Space Center input will cancel setting metrics.
    • Make sure the Space Center input box is continuous.
    • Fixing large linespace frame size in Space Center.
    • Don’t live update Space Center on glyph change when there are lots of characters to display.
    • Fixing an old scroll to selection bug in Space Center.
  • Let users know if an UFO is unsaved when switching to another app. (Jumping RoboFont icon in the dock)
  • All editable numbers have support for up / down arrow keys.
  • Better support for Single Window Mode with additional glyph windows and current glyph.
  • Pop up a warning if RoboFont is stored in a folder containing space characters.
  • Send event when an external change has happened.
  • Adding View short keys for font window (available under Window > View).
  • Better support in detecting quadratic / cubic glyphs.
  • Fixing bug in external updates and save operation.
  • Optimizing external changes (example: when a UFO is stored in a DropBox folder and changed when RoboFont is active).
  • Toolbars are more flexible and easier to change.
  • Remove empty contours during loading.

RoboFont 1.3

  • Font Overview
    • Cmd + F shows Find Glyph panel in Font Overview.
    • Fixing bug in Smart Sets.
    • Warn about duplicated glyph names when adding glyphs.
    • Add Glyphs by pressing Enter is the same as using the Apply button.
    • Check for template glyphs when adding new glyphs.
    • On glyph change, also check if the glyph name is scheduled for deletion.
    • Fixing bug in Font Info Sheet: reset font info with some basic attributes.
    • Font Overview drag-and-drop:
      • drop on row: add contours
      • drop on row + alt: add as components
      • drop between row: reorder glyph set
    • Alt + click on Smart List to select Smart Set.
    • Alt + delete also removes the template glyph.
    • Cell size slider updates when using keys to change the zoom level of glyph cells.
  • Glyph Editor
    • Fixing a bug in Editing Tool when glyph was None.
    • Ignore Shift + down constrain while Cmd is down
    • Move BCP when closing a contour.
    • Bezier Drawing Tool continues to draw in selection only if the contour is open.
    • Show Add Anchor sheet only when an anchor name is given.
    • Better stroke-hit-by-point calculations.
    • Check for selection while transforming a set of glyphs.
    • Check if grid size is not 0.
    • Fixing a bug with snapping contours when both points are selected.
    • Don’t send keydown notification in Preview mode.
    • Post notification when Glyph Window gets selected/deselected.
    • Don’t join contours when in Transform mode.
    • Fixing bug in Cut with template glyph.
    • Close current contour on double-click (Drawing Tool).
    • Toggle selection on mouse click with magic contour selection.
    • Fixing bug in removeAnchor.
    • Allow spaces in anchor names.
    • Fixing bug in Select All when there is no glyph set.
    • Ignore first mouse down when in Single Window mode.
    • Better support for new glyph windows, don’t fit to window directly.
    • Tab with hot key through BCP-anchor-BCP.
    • Better support for layers visibility when layer is selected.
    • Update rulers when a new glyph has been set.
    • Fixing an annoying bug in Transform.
    • Fixing bug with shift constrain on y-axis (jumped over the first 5 units).
    • Join contours takes the Glyph View scale into the snapping distance. The snapping distance can be stored as a new Preferences setting.
    • Smaller increase rate of grid disappearing.
    • Fixing bug in slicing: bounds should be checked as bounds, not as rectangles.
    • Make anchors visible if one anchor is added.
    • During Select All, show anchors in the selection, even if they aren’t visible.
    • Fixing bug in joining contours.
    • Fixing bug in Copy&Paste with different kind of objects.
    • Support Undo while adding anchors.
    • Take the closest distance when joining multiple contours.
    • addComponent copy metrics will be disabled when the glyph contains some contours.
    • Don’t break contour, but delete single on-curve point in the contour.
    • Don’t move when switching layers up & down :)
    • Select layers with double-click.
    • Better support for preserving point attributes during remove overlap.
    • Fixing bug in Editing Tool: dragging a mix of off-curves and on-curves.
    • Fixing ray margins.
    • Adding join contours in contextual menus.
    • Adding break contours in contextual menu.
    • Adding layer data in copy paste from Font Overview.
    • Scroll with control to zoom faster with scroll wheel.
    • Adding crosshair to anchor, component dragging.
    • Clear also all layers when a glyph gets deleted.
    • Fixing bug in setting glyph and keeping the same scroll amount, so switching glyphs is less jumpy.
    • Use esc during transform to reset the transformation.
    • Allow transformation of single points and multiple points not even in a segment.
    • Magic selection tool should also select single moveTo points.
    • Better support for transform and guides.
    • Mixed selection is possible (points, segments, contours, anchors, components, image).
    • Slanted grid based on italic slant angle.
  • Inspector
    • Solving weird layer color syncing.
    • Only reset selection if it has contours, so components keep their selection.
    • Resizable column headers in the Inspector view.
    • Reverse how transformations are added.
    • Prepare to save transformations in the user defaults.
    • Fixing bug when glyph is empty and transform metrics is on.
    • Write transforms back to defaults and recover them while opening the Inspector window.
    • In move transforms, ignore do metrics while transforming.
    • Removed Action button in layers Inspector pane.
    • Close the Inspector window when Cmd + i is pressed.
    • Check if there is a document open in the Inspector window.
    • Unicode value can be None when set in the Inspector.
    • Adding option Transform Again, to repeat the previous transformation.
  • Preferences
    • Python panel gets tabs.
    • Adding defaultForeGroundLayerColor and defaultBackGroundLayerColor to the Preferences.
    • Better support for changing scripting hot keys in the Preferences.
    • Check for Cmd + F shortcut in Scripting hot keys and disable the Full Screen shortcut.
    • Set starting points hot key and better support from the menu.
    • 45° constraints as a Preference setting.
    • Always add Update menu in Extensions menu.
    • Marque selection color in Preferences.
    • Adding Test Install hot key.
    • Adding Preference starting point color for open contours.
    • Adding options to reset, export and import Preferences.
    • Check if the chosen font used in to display code and features is still installed.
  • Space Center
    • Space Center input text could be None.
    • Improving scrolling in single line mode in Space Center.
    • Auto suffix detection based on current glyph.
    • Show/hide space matrix.
    • Set the current value when tabbing to another value.
    • Improving Undo support in Space Center input fields.
    • Require Enter after a value has been edited.
    • Support for Italic angle in beams and measurements.
    • Space Center keeps track of the current glyph when opening.
    • Adding Alt + drag to move glyph along the y axis, Alt + Cmd + drag to move glyph along the x axis.
    • Improving how “Jump to Glyph” works.
    • Renaming layers.
  • Features
    • Open .fea files natively.
    • Features editor supports drag-and-drop of a .fea features file, which is inserted into code as a link: include(dropFilePath);.
  • Generating
    • Only move contours when shifting with an italic offset.
    • Always check for mixed components before generating.
    • Converting TrueType off-curve points must be inside the bounds of the original Bezier segment.
    • Fixing bug in generating .ttf files.
    • Updating to AFDKO 2.5, with better support for mark-to-mark (thanks Miguel and Erik).
    • ttf compiler: space can be anywhere in the glyph order.
    • ttf compiler: check if anything goes wrong in generating the empty font, and report nicely.
    • While generating decompose when a component has a scale transformation
  • Scripting
    • Run Python files directly from the file browser with Cmd + R or contextual menu.
    • Adding support for external scripting with shell command: see Preferences, robofont -h.
    • CurrentFont().glyphOrder creates and removes template glyphs.
    • Better handling of notifications for viewWillChangeGlyph and viewDidChangeGlyph.
    • Solved bugs in mojo.UI involving getting and setting Character Sets.
    • Adding mojo.tools.
    • glyph.pointInside() is a lot faster.
    • Cmd + g in Scripting window for Find Next.
    • Save .py files encoded as utf-8.
    • Improved support for Smart Set in mojo.UI.
    • Adding addSmartSet, removeSmartSet, setDefaultCharacterSet, getDefaultCharacterSet,removeCharacterSet, getCharacterSet, setCharacterSet, setMaxAmountOfVisibleTools,getMaxAmountOfVisibleTools.
    • Scripting Window keeps track of placing and size of the window.
    • Code and feature editors will not convert (p) to ℗.
    • All textEditor have disabled rich text formatting.
    • Support for external editing of .py and feature files.
    • Adding support for CurrentFontWindow() in mojo.
    • Adding help to the scripting namespace.
    • Adding draw, drawPoints and box to robofab components.
    • Adding new notification binaryFontWillOpen.
    • Adding mojo.compile.
    • Adding getScriptingMenuNamingShortKey and setScriptingMenuNamingShortKey to mojo.UI.
    • Adding testInstallFormat for format used in test install (should be otf or ttf).
    • Adding a clearDefaults in lib.tools.defaults.
    • Adding mojo.UI importPreferences exportPreferences.
    • Adding getToolsOrder, setToolsOrder to order the tools in the toolbar.
  • RoboFab
    • Return public.glyphOrder when there is no document in the RoboFab font object.
    • Revert order of interpolation masters in RoboFab methods.
    • Fixing bug in RoboFab compare font.
    • Don’t assume added glyphs are robofabwrapperglyph only :)
    • Support for beams and rays in robofabwrapper.
    • Adding path to save notifications.
    • Set a default width for new glyphs setDefault("newGlyphWidth", 123).
    • Use Esc to ignore “don’t show again” dialogs.
    • Fixing bug in remove overlap comparing numpy objects.
    • Fixing typos.
    • Adding modules syncope and csv.
    • Fixing bug in the Extension Bundle.
    • Set modification time for ufo if saved.
    • Improving support for reading .woff files.
    • Return the value of RSegment.smooth.
    • Support for glyph metrics math in robofabwrapperglyph.
    • Adding breakContour(point) to robofabwrapperglyph.
  • All assets are ready for Retina displays.

RoboFont 1.2

  • Global app cache for template glyph image cells.
  • Separate Revert options for changed, added and removed glyphs.
  • Set glyph to unchanged on Revert to saved.
  • Sort glyphs based on public.glyphOrder from font.lib.
  • Application alias added to the .dmg file.
  • Transparent mark colors are now drawn with a black triangle in the back.
  • Show slant angle in the glyph cells.
  • Fixing bug which made new glyphs unselectable.
  • Check for nested components.
  • Solving weird tool cursor issue in fullscreen mode (10.7).
  • Better support for the AFDKO, with better feedback when it encounters an error.
  • Fixing bugs with adding/removing glyphs when a subset is selected.
  • Test Install now also works with fonts which are not Document-based, for example UFOs opened without a UI with OpenFont("path/to/my/font", showUI=False).
  • Check glyph order in binary compilers for template glyphs.
  • New licensing system.
  • Adding Sparkle auto-updater.
  • Better support for copying & pasting of EPS data (from and to Illustrator).
  • When pasting paste, check segmentType and convert if necessary.
  • Fixing UI bug when tabbing through the font info sheet (10.6 only).
  • Better support for drag-and-drop on Smart Sets (also: drag on top of Smart Set to add the glyph name).
  • The app is code-signed for 10.8 usage.
  • Fixing a few typos :)
  • Documents
    • Preserve starting points when converting splines.
    • Open .fea files as native documents. This will open a new feature window with no font attached – so it possible to send the feature to all open fonts, or to a selection of all open fonts.
    • Added icons for .otf .ttf .fea .pfa .woff .pfb .py files (will only be applied if RF is the default application to open these files).
    • Support for .ttf in .woff files.
    • Open folders: files are now listed in the tree of a Scripting Window.
    • Disable PS auto-hinting when no blue values are set
    • Saving predefined character set in the font.lib.
    • Saving sorting order in the font.lib.
    • Adding export features.
    • Really remove deleted glyphs :)
  • Glyph View
    • Select added components.
    • Shift + tab to select previous point.
    • Alt + tab to select off-curve points.
    • Alt + next/previous glyph jumps to glyphs from another Smart Set.
    • Adding BCP minimal mouse moved distance to account for the view scale.
    • Support for hiding measurements info (useful when lots of measurements are added).
    • Scrolling through glyphs in Glyph View: previewKey + Alt + scroll wheel.
    • Draw the grid first in the Glyph View.
    • Copy/paste .glif xml.
    • Fixing bug with deletion of points.
    • Components are now added when selecting all.
    • Alt + click + drag to select off-curves only.
    • Draw some component info in the new Component info display option.
    • Refinements when a user has more then 7 tools installed: a drop-down menu will appear in the last segment of the tool button.
    • Nicer defaults for glyph offset in the Glyph View.
    • aicbtools (copy paste from Illustrator and FL) now supports open paths.
    • Better rounding point coordinates.
    • Better handling of grid resolutions when zooming out.
    • Fixing bug with dragging smooth on-curve points.
    • Fixing bug with copy/paste: starting point now stays the same.
    • Lock side-bearings in Glyph window.
    • Reverse quadratic curves after removing overlap (so they will have a default TT direction).
    • Don’t send mouseUp notification when zooming.
    • Extreme points now only adds points between two selected on-curve points, or adds all extreme points when nothing is selected.
  • Space Center
    • Space Center prevents unintentional click & drag.
    • Alt + drag glyphs into the Space Center to include them in the input string.
    • Support for equalized slanted side-bearings in angled italics.
    • Moving glyph names suffix and kerning to the display options menu in the Space Center.
    • Space Center can go full screen.
    • Adding smart suffixes in Space Center, based on splitting glyph names on . (period).
  • Inspector view
    • Adding Reverse to flipping.
    • Adding Undo support for Transform actions.
    • Use metrics math in Inspector glyph info panel.
    • Reorder components in Inspector with drag-and-drop.
    • Inspector points are displayed as a tree view.
    • Transform options in Inspector window.
    • Transform metrics as option in the Transform panel.
  • Preferences
    • New option: hide dashed cross line while dragging.
    • New color options added: measurement, contour index, point index.
    • Redesigned Glyph View Preferences panel.
    • Shift and Cmd + Shift are now in the Glyph View Preferences panel.
    • New option: color schemes for quadratic and cubic curves (handle and point strokes are interchangeable).
    • New option: when deleting glyphs, also delete the glyph name from groups and kerning.
  • mojo
    • New mojo.UI.UpdateCurrentGlyphView.
    • from mojo.extensions import ExtensionBundle, getExtensionDefault, setExtensionDefault, getExtensionDefaultColor, setExtensionDefaultColor
    • Extension Builder now has support for a resources path: a folder containing images or additional data. (Note: this is not a place to store Python files.)
    • Adding new events: glyphWindowWillOpen, glyphWindowWillClose, fontWillSave, fontWillAutoSave
    • Adding mojo.roboFont.version :)
    • Adding ExtensionBundle: from mojo.extensions import ExtensionBundle
    • Send proper UFObecomeActive notifications.
    • Adding extensionValidator.
    • Defaults system for Extensions (using another Preferences file to save defaults).
    • Adding AccordionView to mojo.UI.
    • Addint registerExtensionDefaults to mojo.extensions.
    • Fixing bug in mojo.drawingTools involving text with fill and stroke colors set.
    • Adding SetCurrentLayerByName to mojo.UI.
  • RoboFab
    • Fixing bug when adding glyphs with Robofab.
    • Adding removeGuides.
    • Adding font.copy() to the Robofab wrapper.
    • Robofab rotate in degrees instead of radians.
    • Handle obj.selected = True/False (better).
    • appendComponent will check if it is referencing to itself.
    • Fixing bug with scaling of components.
    • Fixing bug with Robofab segment.selected.
    • Fixing bug with Robofab set/get bPoint types.
    • glyph.mark can accept None to remove a mark color.
  • Scripting
    • Contextual menu in file browser.
    • Output Window now has color preferences, copying & pasting text will ignore rich text attributes.
    • Scripting Window: enter on a file will send the file as current document.
    • Open a folder in the Scripting Window.

RoboFont 1.1

  • Adding support for nested components.
  • Improving glyph transform.
  • Fixing bug in copy and paste from Illustrator.
  • glyph.mark can handle a single as input.
  • Images can be locked.
  • Alt + Cmd down will mirror the handle point.
  • Space Center value input fields can handle simple math like =e+10-z*10 or -=10+a.
  • New mojo.canvas object.
  • API support for Smart Sets.
  • Adding support for tabbing through the Font Info sheet input fields.
  • Adding a checkbox to Add Component sheet for copying glyph metrics.
  • Find bar/panel in the Scripting Window’s output area.
  • Fixing bug in Space Center preventing notifications.
  • Ignore mask color and guides during copy in the Glyph View.
  • Fixing bug in kerning sheet when the group name is not in the font.groups.
  • Generating choices are enabled/disabled based on the export format.
  • Ignore template glyphs in robofab.
  • Improving conversions between cubic and quadratic contours.
  • Save states for the Font Overview panes.
  • Show a warning if groups contain glyph names with (single quote).
  • Adding HelpWindow to mojo.UI.
  • .py files are now also document based.
  • Fixing typos.
  • Extension Builder can handle required major minor version of RoboFont.
  • Import extensions in Extension Builder.
  • Extensions builder write files automatically.
  • Improving file browsers.
  • Clear info in the Font Info sheet.
  • Ignore anchors during binary compile.
  • Single line and waterfall have a horizontal scrollbar.
  • New column in Font Overview: mark color.
  • Fixing bug with setting extreme points.
  • Undo/redo on glyph selection in Font Overview.
  • Mirror all/selected glyphs in Transform panel.
  • Use a Find bar in 10.7.
  • mojo.UI can open a glyph in a window and create a new Space Center.
  • Scrolling when you jump with tab in the Font Info sheet.
  • Remember the developer and developer URL in the Extension Builder.
  • Fixing bugs in Space Center.
  • Close the window with unsubscribing the glyphs.
  • Better accept mouse move so it will not disturb other views.
  • Adding drawPreview event.
  • Space Center can hide “in between” control glyphs.
  • Display selection info in the status bar of the Font Overview.
  • Fixing bugs in robofab.
  • Print font will now print familyName and styleName.
  • Adding removeGuide.
  • Update the Output Window when you print something directly.
  • Use the Glyph View bounds for calculating the length of the guides.
  • Better support for generating .ttf binaries.
  • If you have ttfautohint installed, autohint is an option. ttfautohint cannot be embedded in RoboFont because of license incompatibilities.
  • Improved support for preserving same amounts of points.
  • Draw glyph coordinates in context of the background, slightly darker on darker backgrounds.
  • Opens all files: ttx, T1 binary, T2 ascii, PostScript outlines / T1 suitcases aren’t supported (yet).
  • Drawing tool: Alt + click (no drag) will convert the last segment to a line.
  • ‘Lock guides’ is a global user setting instead of local to the Glyph View.
  • Fixing sorting error.
  • Revert.
  • Fixing bug in Transform.
  • Update the glyph view during paste.
  • Glyph order issue in .ttf generation.
  • Use allowPseudoUnicode in the super Smart Sort.
  • f.glyphOrder returns the glyph order.
  • Bitmap representation is properly aligned to the grid.
  • Grid is a solid line.
  • Fixing typos.
  • Scripting Window has an Edit With… toolbar item.
  • Edits to the Kerning and Groups sheets can be canceled, so the changes will not be applied to the font.
  • Generating binaries: the order is the same as in the UI. A new option can add Mac Roman in front of the glyph order when generating fonts.
  • Ice cube tray view show when a glyph has been edited.
  • Adding SetCurrentGlyphByName to mojo.UI – set a glyph by name in the current glyph view.
  • Don’t copy unicode value if that unicode value already exists in the font.
  • Adding text color and background to the Scripting Window.
  • Save As… will not save template glyphs.
  • Mark colors are added the the color palette.
  • Columns in the Font Overview can be hidden with a right click on the column header (like iTunes).
  • New super Smart Sorting options (thanks to Tal), you’ll never create an .enc file again :)
  • If the default font for template glyphs isn’t installed on your system, it will take the default system font.
  • Images can be saved in the new image folder next to the UFO. (This is similar to UFO3, but not inside the UFO.)
  • Glyph cell headers in the Font Overview changes background color when the mark color is too close.

RoboFont 1.0

Initial public version.

Last edited on 01/09/2021