Skip to main content
Fontra Blog

Fontra news for March

We welcomed a sizable set of new features and improvements this month:

Global source locations

This set of features has been in the works for a very long time (at least a year), and deserves a bit more explanation.

Fontra allows glyphs to have as many or few sources at different locations within the design space. This is not limited or enforced by global settings, apart from the definition of variation axes. Until now, this information belonged solely to the glyph. While this is flexible for the glyph, this becomes problematic if global aspects of the design space change after glyphs have been constructed. For example, when the range of an axis needs changing.

We have had the concept of “font sources” for a while. A “font source” has a location in the designspace, and is used as a place to hold information specific to that location. This is where vertical metrics (cap height, x-height, ascender, descender) are managed, global guidelines, and more. So these locations are considered important within the project.

Commonly, one wants to draw glyph sources as well at (some of) these locations. We have introduced the concept of a “location base”, with which a glyph source can reference a global font source. A glyph source that uses this does not define its own location in design space, but refers to a global font source. This means that we can now change the location of all glyphs that reference a specific font source by editing the referenced font source.

Additionally, this gave us the opportunity to improve the user experience when drawing variable glyphs. Previously, for each glyph, each desired source had to be created explicity. For example, if you wanted to draw a Bold variant for a glyph, the user would have to navigate to the desired Bold location, and then create the Bold source with a button click and a dialog confirmation before they could make the Bold outline. Now you can do it with a single click.

A Screenshot of the designspace navigation panel, showing the improved source list and the new source layers list

We have improved the UI for the glyph sources list in a couple of ways:

Summarizing, this new feature brings two great improvements:

Background layers, aka. “Source layers”

Fontra finally has a background layers feature. This took a fair amount of effort to implement, and this checks off a much-requested and needed feature from our list. Users can now create arbitrary additional layers to paste variations or sketch work or reference shapes.

In addition to “background layers” we also call them “source layers”, as each background layer belongs to a glyph source. Reminder: a glyph source specifies a location in the design space.

The screenshot in the previous section also shows the new “Source layers” list.

Documentation about source layers

OpenType settings UI

The Font info panel and the font sources panel have been enhanced with UI to add specific lower level OpenType-related settings data, so that users can tune details of the output of binary font files. Examples include settings for the hhea, vhea, and OS/2 tables.

OpenType feature editor

We added a new panel in the Font info view to edit OpenType feature source code. We integrated a powerful open source code editor component called CodeMirror. In the future, this can be enhanced with more refined code completion and syntax highlighting.

A Screenshot of the OpenType featurers panel

Glyphs backend changes for writing

Our backend for reading .glyphs and .glyphpackage files has been upgraded to also write. This is a work in progress that is being rolled out in phases. We have completed the first major step, which adds editing and creation of basic glyph data, including editing and creating of background layers. We cannot yet create a .glyphs file from scratch, but we find this a very exciting start.

So, to emphasize and repeat, you can now open your .glyphs and .glyphpackage files directly in Fontra Pak and start editing glyphs and start creating new glyphs!

Improved backend/frontend separation, aka. the “JS-split” Big-Bang operation

Simon Cozens proposed and then implemented a major refactoring in how our server code and front end code is organized, and improved the documentation for how they interoperate. The initial purpose of this is to allow him to experiment with a server-less version of Fontra. Additionally, it improved the code base generally by modernizing the project to use a bundler for JavaScript (and other language) resources. It did make our build somewhat more complex, especially with out-of-tree front end extensions such as fontra-rcjk. We managed to keep breakage to a minimum, but as expected we did experience some fallout in the form of minor regressions, that have since been fixed.

We received excellent contributions from Johannes Abendroth, who (among other things) vastly improved the menu bar and menu panel’s keyboard navigation functionality.

Documentation

There have been many content updates to our user documentation website.

We would love to receive suggestions, additions and improvements from the community, and encourage anyone (you?) to participate in the documentation repository. Documentation is hard, and we need your help.

Next up

The biggest and highest priority item on our TODO list is currently to add functionality to author and edit kerning. You can imagine that’s going to be a fairly big one. We plan to land it in April, though. This is the last significant step before we will call Fontra "1.0".

Concluding

March was a very productive month, where we met almost all of our goals. As always, please check the changelog for a more detailed list of changes.

Be sure to check out Fontra’s progress by downloading a fresh version of Fontra Pak for macOS or Fontra Pak for Windows, or check out the source code for Fontra Pak if you’d like to run it on other platforms.