|
|
Subscribe / Log in / New account

A quick look at the new FontForge release

By Nathan Willis
December 8, 2014

FontForge is the most feature-rich free-software application for building and editing font files, but that is a niche that, regrettably, attracted relatively few developers over the project's lifespan. The situation has improved considerably in the last two years, however, and the latest release introduces several significant improvements. The new features include some expansion and enhancement to the editing tools, which will appeal to existing FontForge users, but they also include other changes that may be more significant in making FontForge appealing to new users.

The FontForge project was started in 2000 by George Williams, with the initial emphasis being placed on modifying existing font files. Over the years, the scope of the application grew to encompass designing and building fonts from scratch. Williams eventually left the project, though, and for a while interest by other developers wavered considerably—updates were irregular. But the debut of the CSS @font-face rule and, with it, web fonts, kickstarted a renewed interest in fonts with FOSS licensing.

Interest in FontForge then picked back up, although it took quite a bit of time to overcome the inevitable stagnation that had developed in the codebase. These days, there are multiple active developers, several of whom even have funding from one source or another to work on the project. Starting in late 2012, development picked up in earnest, with several major feature enhancements landing—such as the support for live collaborative editing sessions that we looked at in our Libre Graphics Meeting 2013 coverage.

Over the course of the past year, a series of small, stable releases has been tagged in the FontForge GitHub repository. The latest such release, from November 26, merits special consideration. The project appears to have stopped using version numbers for releases in favor of timestamps: the latest release is tagged 20141126. Such a practice is closer to the rolling-release model than to periodic stable updates, which unfortunately can make it a little difficult to establish a useful point of comparison. In the interest of full disclosure, I should note that I find such timestamps considerably less helpful than good-old-fashioned Major.minor numbering schemes, and recently went on record about that fact on the FontForge mailing list.

Nevertheless, it is relatively easy to compare the state of today's latest release to the versions found in most major Linux distributions. A quick survey indicates that most large distributions are shipping releases from 2012 or before; Fedora 20, Ubuntu 14.10, Debian sid, and openSUSE 13.2 all provide packages from July 2012. So regardless of how the packages are designated, most users will find that FontForge has advanced considerably since the release found in their distribution repository. At the moment, source code bundles for Linux are provided, as is a personal package archive (PPA) for Ubuntu and its derivatives.

Editing

[FontForge canvas]

It probably goes without saying that drawing and refining glyphs is the primary function of FontForge. The new releases add several important features for this process.

The first is the ability to display several glyphs at the same time in an editing window. In prior versions, all editing was done one character at a time. That approach makes logical sense, since each letter, number, and symbol is its own slot in the font. But it ignores the way fonts are actually used—with glyphs strung together as words and sentences.

Now, when one opens a glyph-editing window (or tab), there is a text-entry field at the top, with the selected glyph already shown. The user can type other characters before or after it, and they will be displayed on the editing canvas (but not as selectable or editable curves). All the letters are spaced and kerned in the canvas as they would be in rendered text, so that the user can, in essence, edit them in context and see how they work—or don't work—together.

The rendering of points and shapes in the editing canvas itself has also been improved significantly. Older releases often exhibit jagged edges and aliased shapes for things like control points and the fill that is applied to contours when the "preview" mode is activated. Those visual artifacts can be quite distracting when trying to make precise adjustments.

[FontForge control points]

In addition, there have been a lot of updates to the tools and to the way the editing canvas functions. For example, there is now a preference to make all of the control points on a glyph visible at all times—previous versions would only show the control points when part of a Bézier path was selected. By making them all visible, this feature makes it immediately obvious when curves that should be parallel are misaligned, when control points that should be equidistant are different, and so on.

Another example is seen when the user selects and drags points: the original position of the points and the contours between them are shown in green. This makes it far easier to move points along a straight line or to see how far they have moved. Similarly, there are more commonly accessed commands available in the right-click menu and better default behaviors for several of the tools. These touches are minor individually, but when taken altogether they amount to a noticeably more responsive editing experience.

Enhancements

[FontForge showing original point and contour locations]

The collaborative-editing features mentioned above (and discussed in the LGM 2013 article) are disabled in the binary packages available for download at the moment because of the less-than-common dependencies, which have been an issue for Mac OS X and Windows builds. But the features are still available for anyone compiling from source, and the ability to have more than one FontForge user access and update a font at the same time is certainly an enhancement worthy taking note of.

Some of the side effects of that work, however, are also interesting on their own merits. For instance, there is a local web server option made with Node.js that allows users to see their changes in live-preview mode within a browser window. For anyone whose fonts are of interest in web usage, this is a plus.

It is also worth pointing out that considerable effort has gone into stabilizing the Mac and Windows builds and packaging. It can be a contentious issue for free-software developers to spend a lot of time focusing on non-free operating systems but, at the user-application level, the size of the marketplaces involved are impossible to ignore. Like it or not, OS X systems dominate with the other font-production applications in use, so FontForge needs to work well and feel native there, too. LibreOffice and many other desktop-application projects have long since taken this sort of issue for granted; it is good to see that recent FontForge development has made great strides, too.

This is not to say that Linux and other Unix-like systems have gotten short shrift; far from it. FontForge used to be quite crash-prone (occasionally even corrupting data) and riddled with odd user-interface problems (pop-ups that steal focus, confusing tab orders in dialog boxes, tables that are too small for their enclosing windows, etc). These are all but gone now; FontForge is quite difficult to crash on a modern Linux desktop.

UFO

The final feature to make note of in the latest FontForge versions is the full for support for the Unified Font Object (UFO) file type. Ironically, perhaps, UFO support is something that very few existing FontForge users can make immediate use of—especially on Linux—but it does pave the way for more interesting work in the future.

UFO is an XML-based format that is primarily noteworthy because of its widespread usage as an interchange format: in the proprietary software world, there are a variety of single-purpose utilities and scripts that manipulate UFOs, in addition to support in full-fledged font editors. Among other things, UFO stores each glyph of a font in its own directory, which fans of the format say makes it easier to monitor a font for changes at a granular level—no need to re-parse the entire font, after all, if only the "g" glyph has changed.

The format specification itself is open and is maintained on GitHub. Earlier versions of FontForge supported exporting to UFO from FontForge's native text-based format (SFD, for "Spline Font Database"), but the exported files were reported to have inconsistencies between the way they interpreted the format specification and the way it was interpreted elsewhere. And, of course, a one-way conversion meant that users missed out on opportunities to incorporate other UFO tools into their workflow.

[Kernagic]

In the past year, FontForge's UFO support has been brought up to par, implementing the latest revision (UFO v3), completely mapping UFO's data structures into FontForge's internal forms, and even supporting some common UFO extensions that proprietary applications use but that have not made it into the standard. As importantly as anything else, the program now preserves all UFO data structures when round-tripping through FontForge (including UFO data irrelevant to FontForge). The program also monitors any open UFOs on disk to pick up changes immediately. That filesystem-monitoring functionality is another side benefit of the collaboration features.

So a FontForge user can now work on a UFO-formatted font, jump to another running UFO application to make some changes, and jump back to FontForge: just what everyone wants. The only hangup is that, at the moment, there are not all that many other free-software UFO applications—particularly ones that run on Linux.

But there are a few; Øyvind "Pippin" Kolås of GIMP and GEGL fame wrote a UFO-based tool called Kernagic that automates many letterspacing tasks, and Adobe's Font Development Kit for OpenType (AFDKO, which was released under the Apache 2.0 license in October) includes UFO utilities. There are also lots of individual Python scripts out there in the wild designed for UFO; Nicolas Spalinger indexes a selection at the Open Font Development Kit page; others can be found with a bit of searching.

Font design is not the largest niche in the software world—although one might argue that the need to fix and alter fonts is considerably greater than the need to design from scratch. But even that small niche is considerably larger when one considers Windows and Mac users, not just Linux users. The past few years have added significant improvements to FontForge on these non-free platforms, which makes it a competitor to the proprietary offerings, as well as (with good UFO support) a tool that can easily interoperate with them. These are excellent gains for the health of the project; the fact that those of us who use only free software operating systems get a quality font editor out of the process as well certainly sweetens the deal.


to post comments

A quick look at the new FontForge release

Posted Dec 10, 2014 3:08 UTC (Wed) by Tara_Li (guest, #26706) [Link] (4 responses)

Nice - but how about Font Management software - that lets you see what's already on your system (be nice if it broke it up by type, as well), look through directories and view samples of the font before deciding whether to install it, search for duplicates (and maybe near-duplicates by rendering alpha upper and lower at a pixel rez and checking for similarity?), and is capable of helping it make sense when you have 1500+ TTF fonts installed on your system....

A quick look at the new FontForge release

Posted Dec 10, 2014 18:40 UTC (Wed) by kfiles (guest, #11628) [Link] (1 responses)

I use FontMatrix for that purpose. It gives previews of installed fonts, allows defining a currently active set, and finally, can export PDF proof sheets.

A quick look at the new FontForge release

Posted Dec 11, 2014 4:14 UTC (Thu) by Tara_Li (guest, #26706) [Link]

You tagged the big problem I have with FontMatrix - the font has to be installed before it can be previewed.

I've also looked at Fonty Python - and not been thrilled with the interface on it, either.

A quick look at the new FontForge release

Posted Dec 11, 2014 11:49 UTC (Thu) by yosch (guest, #4675) [Link]

You may want to give Font-Manager a try: https://code.google.com/p/font-manager/

gnome-font-viewer is still too scarce in exposing enough information from existing fonts (and has regressed from earlier features IMHO).

A quick look at the new FontForge release

Posted Dec 21, 2014 0:45 UTC (Sun) by Sho (subscriber, #8956) [Link]

KDE has had a basic font manager in the System Settings application for about half a decade. Go to the "Font Installer" and enable management mode on the toolbar; it lets you preview fonts, group them into sets, load/unload them, find dupes and so on.

A quick look at the new FontForge release

Posted Dec 19, 2014 1:56 UTC (Fri) by monkeyiq (guest, #55153) [Link]

The collaborative-editing features are enabled by default for the osx download. The main dependencies for this are ZeroMQ and czmq. Note that you'll need a small patch to czmq to work on osx (preapplied to bundled czmq for osx download).

Also the osx build has breadpad enabled now, so all the osx users can contribute to improved stability of fontforge for all users :)


Copyright © 2014, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds