By Nathan Willis
September 11, 2013
For many years, FontForge has been the only option
for editing or designing fonts with free software. But FontForge can
be an intimidating tool with a difficult learning curve, and over the
years it had begun to get long in the tooth, with little regular attention
from active developers. The development situation has improved
significantly of late, but those who need a quick and easy-to-learn
open source font editor now have another option in Birdfont.
It's a draw
Birdfont is the work of Johan Mattsson, who announced the project
in December 2012 on the CREATE mailing list, and has subsequently made
a steady series of small releases. The latest is version 0.28, from
August 2013. Birdfont is written in Vala, which is a language often
closely associated with GNOME, but in addition to running
on Linux, builds are provided for Mac
OS X, Windows, and
OpenBSD. Birdfont's feature set is limited in scope (at least when
compared to FontForge or proprietary editors); it initially supported
creating only TrueType fonts, although support for Embedded OpenType
(EOT) and SVG fonts has since followed. Similarly, the initial
emphasis was placed on providing a good drawing canvas, while support
for features like kerning has developed slowly.
Nevertheless, the emphasis on a good canvas for editing glyphs does
pay off: Birdfont's glyph editor is considerably easier to get started
with than FontForge's—particularly for people who come from
Inkscape, Illustrator, or other non-font-specific editing tools. The
drawing area and the tools look modern, are rendered smoothly, and
behave more like the components of a standard drawing application.
To
give a few examples, Birdfont's coordinate grid is set of light-colored
background lines, vector curves are always rendered as black-on-white
lines, and those curves have easily-distinguished
control points which one can grab with the mouse. In contrast, FontForge
does not show a coordinate grid at all (just numeric coordinates in
the toolbar), background guide lines and vectors are the same color,
and control points are rendered in several different shapes and colors
depending on what variety of curve and point they correspond to. The
upshot is that it is easy to pick up Birdfont and just start
"sketching" ideas. FontForge is pickier about how its drawing tools
operate, which lends itself to a different workflow.
Of course, there are reasons—even, one would have to agree,
good reasons—for many of the choices FontForge makes in these
areas. But they do make the application harder to use for
newcomers. Birdfont may yet have to implement user interface changes
if it continues to add features, though, at which point maintaining
simplicity will become a greater challenge. For example, it currently
supports only one drawing layer, which looks very uncluttered. With
multiple layers, the UI must distinguish which layer is active, such
as by adding a layers panel or rendering inactive layers in a
different color—either way, adding more clutter to the interface.
But there are also plenty of niceties than even the most die-hard
FontForge fan would appreciate. For instance, font formats disagree
about whether the outermost contour of a glyph should be oriented
clockwise or counterclockwise (TrueType says clockwise, PostScript and
OpenType CFF say counterclockwise). Of course, a glyph's contour is a
closed curve, but the orientation tells the renderer in which order
the points on that curve will be listed, which is helpful for less
powerful renderers. FontForge makes the orientation of
every contour an explicit property, and if it is incorrect with
respect to the standard of the font exported, then the glyph is rendered wrong; Birdfont
does not make contour orientation a property at all, and simply fills
in the shape regardless of how it was drawn.
On the other hand, there are a number of usability quirks in
Birdfont's editor that may be difficult to get used to. There are
multiple unlabeled tool buttons with ambiguous icons (so that one must
hover the mouse over them to see the help text appear). The contrast
on the toolbar buttons is low, which can make it hard to tell which one
is selected. Some of the buttons also revert to their previous state
after one usage, while others persist. This can be tricky to keep
track of mentally, especially when the low contrast makes them harder
to see.
In addition, some of the tools
do not behave in entirely obvious ways. For instance, when the
"pencil" tool is selected, one can left-click to move or manipulate
existing points on a drawing—but must right-click to add new
points on a new curve, or double-left-click to add new points to an
existing curve. Moving existing points seems more like it
should be the job of the "move" tool, but the "move" tool is used to
move, rotate, or resize whole paths. Separating the point tools from
the path tools is a good way to prevent editing
accidents like deleting a shape when you meant to delete a single
point; Inkscape does the same thing, while FontForge does not
offer such protection. In addition, the Birdfont
"move" tool's on-canvas rotate-and-resize functionality is about as
nice as they come, but, nevertheless, this behavior can be quite
difficult to discover in the current interface.
At this point, there are also several
unimplemented features that are shown in the UI, but cannot be used,
such as the "circle" and "rectangle" tools. There are also a few
peculiar controls that look like tool buttons but are not. They are
in fact numeric sliders that control the grid spacing, stroke width, and
background image scaling. To change any of the settings, one clicks
the "button," holds it down, and moves the mouse cursor up or
down. Being able to change these settings with the mouse is nice, but
the tool button widget is being overloaded to do so.
Several of these quirks could be smoothed over with different
widgets or tool icons, but documentation would go much further. One
can only hope that it is on its way; there are a lot of details that
need description (such as how and what the "Export" function actually
generates), and getting up to speed with the drawing tools would be
much easier with examples. Mattsson has created a few tutorial
videos, which are a start, but leave a lot of uncovered ground where
the newer features are concerned.
Details
Drawing characters is arguably the "fun part" of font editing, but
eventually one must tackle the less glamorous tasks of letterspacing,
kerning, hinting, and adding OpenType features (such as ligatures).
Basic letterspacing can be done on-canvas: two vertical guides (one
for the left "bearing" and one for the right) are available in the glyph view;
one simply grabs them and drags them left or right to change the
amount of space on either side. This is quite painless, but it is
unfortunate that the exact coordinate values are not shown anywhere in
the interface, and setting the left and right bearings to specific
values is not supported.
Birdfont has only recently gained support for working on kerning,
and the situation is similar to that of letterspacing. One can open
up a kerning tab from the menu at the top, type in a few
characters, then move a slider back and forth to set a kerning
adjustment between any pair of adjacent letters. There is a school of
thought which says that the exact numeric values for things like
letterspacing and kerning are not important—after all, the sole
point is to make adjustments until the result looks good to the
decidedly un-scientific human eye. But in practice, not showing such
values in the interface can make working on the font more difficult.
Of course, the "correct" way to do spacing adjustments is to
generate a .TTF or .OTF font and put together test pages for print or
for the web. On that task, too, the current version Birdfont does not
disclose many details or options. Perhaps FontForge exposes too many
export options (especially if one includes its detailed format-validation
settings), but Birdfont is missing some key ones like selecting the
glyph names and whole-font settings. Choosing "Export" from the file
menu lets the user select an output directory, but not to specify what
sort of output is created. As of 0.28, the export includes a .TTF font,
an .EOT font, an .SVG font, and an HTML sample file; all four are
generated with each export. However, I found the export to
be buggy, generating empty .TTFs several times for reasons I have not
yet been able to pin down.
Birdfont will save font projects in its own .bf file format, which
is XML-based. I was not able to find a description of the format, but
it looks more like SVG than it does the XML-based Unified Font Object
(UFO) format. In an email, Mattsson said he plans to eventually move
the application over to UFO, so that he does not have to maintain a
file format in addition to an application.
In another format-related wrinkle, so far, creating kerning pairs from scratch is the only supported
method; Birdfont will not recognize kerning tables that already exist
in the file. There is a short roadmap on
the project's wiki that indicates supporting is coming for some more
font features, including reading existing kerning tables and ligature
support.
Last word
The complaints about missing functionality and interface quirks should not be taken
as criticism of the project. This is code which is still in
development; it is quite natural for there to be many tasks as yet
uncompleted. However, if anyone who finds FontForge daunting is
interested in running Birdfont as an editor, it would be wise to take
some precautions with respect to some of the missing features.
First, the undo command only undoes certain operations and is not
accompanied by a redo command. Second, there is a "Preview" command
available in the File menu; it seems to generate and overwrite a .TTF
in the last-used directory, even though the .TTF is used only to show
how the font looks in a preview window. Thus, if you have recently exported your
work as a .TTF, Preview will overwrite it. Finally, while the drawing
tools do not offer point-precise movements or transformations, you can
at least have Birdfont display the exact grid coordinates of the mouse
cursor by launching the application with
birdfont --show-coordinates.
Birdfont has made remarkable strides in its short life thus far.
In comparison, it is true that FontForge supports almost every font
format and option under the sun (including, for example bitmapped
fonts and Adobe's Multiple Master format), but for many everyday uses
that is clearly overkill. For a lot of casual users, the most that they
will ever want to edit a font is to open up an existing .TTF file and
make a handful of small tweaks: changing an awkward character, adding a
currency symbol, adding a slash to the zero, etc. For those users,
Birdfont is excellent news indeed. It is easy to get started with,
the drawing tools look modern and nice, and there is very little
chance that they will generate output with the wrong settings.
Perhaps Birdfont will add enough features to compete with FontForge
for high-end users, too, but in the meantime it is refreshing to see
another take on the free software font editor, and it is nice to have
an option that targets simplicity and ease of use.
(
Log in to post comments)