Since the last update of Macromedia Fontographer in 1996, type designers have developed a yearning for an up-to-date, affordable, Mac-compatible font editor for TrueType, Type 1, and OpenType fonts of many languages. With the arrival of FontLab's FontLab 4.5, their wait is over.
FontLab 4.5 bridges the gap between Fontographer -- including the capabilities of the Python-scriptable RoboFog -- and DTL FontMaster, an expensive (about $2,170) bundle of programs informally known as Ikarus. FontLab has adopted features of both. However, some aspects of its interface remain difficult to decipher, even with the help of the program's well-written manual and excellent technical support. (For hobbyists and beginners, FontLab's $99 TypeTool, a simpler font editor, may be more appropriate.)
A font is a collection of glyphs (or characters) organized into encodings. FontLab supports common font encodings including Macintosh Roman, Windows ANSI, and various forms of Cyrillic, as well as encodings with Unicode double-byte codepages that allow as many as 5,000 glyphs in a font -- a necessity for creating many Asian fonts.
As in other font editors, FontLab's glyphs are arranged in the Font window, a grid of cells defined by the chosen encoding. Each empty cell contains a gray glyph icon that shows which glyph to place there. To edit a glyph's outline, double-click on a cell to open its Glyph window. It's a breeze to select or move single glyphs or ranges of glyphs in the Font window. You can even select noncontiguous ranges.
But FontLab's interface is plagued by confusing toolbars, whose organization makes it impossible to intuit their uses. Some buttons appear on multiple toolbars; others that look almost identical have very different functions.
Getting the Glyphs In
FontLab allows you to draw glyphs using both PostScript-style Bézier curves and TrueType-style splines, so your glyphs print well in the font format you choose. FontLab also converts from PostScript to TrueType and vice versa. Unlike other font editors, FontLab does not irreparably convert TrueType splines into PostScript curves when opening a TrueType font.
In addition to vector drawing tools, FontLab now includes two new modes for drawing and editing glyphs: VectorPaint lets you create simplified Illustrator brushstrokes that don't have pressure sensitivity, and Sketch mode is where you edit a glyph's outline. Whichever method you choose, FontLab's new, live, antialiased glyph-fill preview, which updates the filled preview of the glyph as you drag points and curves, is a welcome feature.
Unfortunately, editing glyphs in FontLab is complicated by a maddening "sticky mouse" problem that causes the mouse to briefly continue dragging an item after you've released the mouse button. (The company says that this bug will be fixed in an upcoming update.)
It's easy to import or paste glyphs drawn in a vector-drawing program, such as Adobe Illustrator or Macromedia FreeHand, into FontLab files, although the glyphs might then need some adjustment. FontLab has no auto-tracing feature; people who scan in hand-drawn characters may be interested in FontLab's $99 ScanFont program.
More Than Just Letters
FontLab also gives designers control over other important aspects of fonts, such as kerning pairs (the way letters fit together), metrics (glyph dimensions), hinting (advanced display instructions), and proofing fonts when they're finished.
The kerning process, usually a time-consuming chore, is somewhat automated here, although you'll still have to finesse the results by hand in the Metrics panel, which now resembles Fontographer's Metrics window. FontLab's class-based kerning helps by grouping similar glyphs, such as A, Á, and Ä, so you can kern them all at once.
FontLab's Preview panel features the waterfall preview (for proofing a single glyph in many sizes) and a vertical preview for type that is read downward. FontLab's hinting controls are extensive, incorporating both Type 1 hinting and TrueType style links. The autohinting feature works well, but only on geometrical typefaces. Other hinting features, such as alignment zones, will keep picky type designers happy.
FontLab fonts are exportable to many different Mac, Windows, and Unix formats. FontLab also uses Multiple Master technology to generate fonts made by interpolating two fonts. Use any of the four standard axes (weight, width, optical, and serif), define your own, or blend two unrelated fonts to create a hybrid.
The Power of Scripting
There are several tedious type-design tasks that can be automated with scripting -- three kinds of scripting are available in FontLab: Transformations programs, OpenType font features, and Python programs.
Transformations programs connect a string of FontLab's many glyph-transformation commands into a single action.
A program that has these commands could, for example, clean up glyphs' outlines, set their widths, and center them.
FontLab generates OpenType fonts with features such as glyph substitutions that, for example, turn pairs of characters into ligatures while knowing which languages to do it in. You can program these features and more, using Adobe feature-definition language, within FontLab's OpenType panels, where you can also proof the results.
Programs written in the Python language can automate tedious tasks and create new tools in FontLab. Python programs can report on or edit just about any aspect of a font or glyph, from counting empty cells to moving nodes by algorithm. An unofficial guide to Python and FontLab is at http://dev.fontlab.net/flpydoc/.
Macworld's Buying Advice
Professionals who take the time to tackle FontLab's toolbars will be rewarded with its power and ease of use -- especially after the sticky-mouse bug is fixed. People accustomed to Fontographer's interface will find FontLab somewhat familiar but far more advanced, and FontLab will also accommodate users who relish the Python scripting capabilities of RoboFog.
- Generates full-featured OpenType fonts
- Pro-level features
- Relatively inexpensive
- Several drawing modes
- Hard-to-decipher toolbars
- Frustrating sticky-mouse bug