Fontmatrix 0.6.0 review

Pierre Marchand has just released a new version of Fontmatrix. There's a whole bunch of new features and improvements that definitely deserve a review.

Let's list just the most visible things:

  • SQLite as a database instead of an XML file;
  • a much improved user interface;
  • complex queries when searching for fonts
  • a much improved sample text view tab;
  • new Classification tab to explore fonts using PANOSE metadata;
  • a new function to search for fonts using bitmap sample of a glyph;
  • non-destructive PANOSE metadata editor;
  • a new Compare tab to compare glyphs with optional fill, control points and metrics display;
  • rewritten Playground;
  • a new function to extract subsetted fonts from PDF to PFM files;
  • configurable shortcuts;
  • Python scripting;
  • new help system with search and bookmarks and actually new content.

A much improved user interface

When you are developing an application, it's vital to remember to keep it consistent. Fontmatrix features a user interface, looking at which you can easily say: it is rather a result of an natural evolution that of intelligent design :)

However v0.6.0 is actually even better than 0.4.2 in many respects usability-wise. You probably won't notice all of them at once, but over time you'll learn and appreciate them :)

What you defnitely will notice immediately is the new Font Information tab's look that displays summary for the currently selected typeface:

Font overview

Since this version Fontmatrix actively uses Webkit (foundation for Safari and Konqueror web browsers), which is why some parts of UI use CSS and JavaScript, and in some parts even SVG fields are created.

The other new thing here you will have to activate in Preferences dialog. I'm talking about system tray (notification area) use. If you don't want Fontmatrix to be looming all the time, just hide it to the system tray. From system tray's icon you can also activate and deactivate fonts using tags.

Complex search queries

This is really a great new feature that makes search function usable at last.

As you see at the screenshot above, you can now do complex queries like "all italic and not bold fonts by vendor X".

Sample text view

Here you'll find a whole lot of changes: from choosing type of text rendering to user defined sample text collection.

Sample text view

There are two things about rendering you need pay attention to:

  1. Yoo define a hyphenation table file to apply to sample texts in Preferences dialog. Because some Linux distributions already ship them as a separate package, and you get them in and Scribus anyway, Fontmatrix doesn't ship them.
  2. You can choose an ICU, Harfbuzz (joint Gtk+/Qt project) and Fontmatrix's own shaper engine to render your sample texts with. If you build Fontmatrix yourself from source code, make sure you read INSTALL file to find out how to enable building of this feature and have three shaper engines available to you instead of just one (Fontmatrix).

Well, and since Pierre is world's renowned OpenType fanboy :), the third tab of the dock contains means to enable/disable OpenType features implemented in the currently selected font.

OpenType features view for sample text

PANOSE metadata search

For those who doesn't know: PANOSE standard allows classifying fonts by description of both glyphs elements (e.g. serifs shape or stroke variation) and overall characteristics (x-height, weight).

For Fontmatrix this is a highly experimental feature. You can easily hate it, especially if you use a localized version where name of most PANOSE variables become unreadably small, and the Browse Fonts label displaying the current search query can grow so wide that it could as well divide and conquer the world.

Panose metadata graph

While big font foundries usually take care of filling in PANOSE metadata, indie type designers whose works are flooding networks font catalogs, usually don't bother filling this information, or fill it partly and/or incorrectly in.

To give you some control over this mess Pierre implemented a non-destructive PANOSE metadata editor which saves changes to its database, no to the font files themselves (after all, most font licenses explicitly forbid any changes to font files).

But well, when you have a whole font family that needs fixing like that, you probably wouldn't want to fiddle with every single face. So it wold be great to have some kind of Banshee-like metadata editor that can save a field's value to all selected fonts.

Searching for fonts via raster samples

This is yet another experimental feature which doesn't work very reliably and tries to talk to you in a techie lingo. Something to improve in the next version, definitely.

The bounding box is theoretically rendered automatically when you click inside a glyph. In reality you will most likely have to activate "Tweak rect" checkbox to be able to adjust the BB by dragging its corners. So I see two things missing: a) better bounding box recognition and b) being able to drag sides, not corners.

Besides the whole thing is worth using only when you have a collection of over 1K or 2K fonts.

Glyphs comparison

This new feature is kind of multipurpose and good for both studying type design and refining your search results for the best fit font. For each glyph you can define fill (from presets only), whether path nodes and their control points should be displayed, whether metrics should be displayed.

Glyphs comparison

There are two issues I'm having with this mode. First of all, metrics offset is limited, so one cannot place over five glyphs in a row. Secondly, the way a glyph can be chosen is incredibly uncomfortable. On the other hand, it allows doing quite original videos:

Rewritten playground

This change was introduced just a week before releasing v0.6.0, so its a most experimental fearure. So now text lines rendered with a chosen can be typed right on canvas. Just click on canvas and start typing your text.

Playground mode

At the very last moment Pierre was reminded that deleting existing lines is still impossible, so he implemented cleanup of playground (kids never really do it themselves, don't they? :)) You only need to select lines you don't need and press Del. Bye-bye, linies!

Extracting subsetted fonts from PDF

This is probably the most controversial addition to the release. We even called Pierre the One-Legged John Silver on IRC :)

Here is what you can do: open a PDF with subsetted fonts, pick the fonts you need and extract them to a specified folder. The fonts will be save as PFB files preserving copyright information, and you can later import these files to Fontmatrix.

The function is documented in details with illustration in the help system.

If you need this feature and you build Fontmatrix from source code, you will have to install PoDoFo library and specifying -DWANT_PODOFO:bool=true argument to CMake.

As Pierre says, he wrote this function just for fun and he is planning to do the same for XPS and SVG later.

It's difficult to predict how type designers will react on this. What Fontmatrix does here is provide mean to fair use of available data. Noon really makes a user to bypass limits as set by type vendors. It's almost as "bad" as another addition to v0.6.0 — opening current font file in a font editor of choice. So don't panic, I say.

Configurable keyboard shortcuts

Scribus's hacker Riku Leino was passing by and implemented this.

Shortcuts configuration

The feature is not quite crtical for workflow, but you never know what might make a user happy :)

One thing I really don't understand is why Qt still doesn't have a ready infrastructure and standrartized UI for configuring keyboard shortcuts the way KDE does it.

Python scripting

It's quite a worthwhile addition, because it allows writing all kinds of interesting extensions. And while there are not so many existing scripts in this version, one of them will definitely be of use for you in case you had 0.4.2 around: it ports old XML based database to a new SQLite database.

When building from source with CMake specify -DWANT_PYTHONQT:bool=true option.

New help system

The previous internal help browser was so nineties that an agreement with Pierre was done: he ports the help browser from Scribus and gets a whole new user manual in return. Well, a deal is a deal :)

Fontmatrix help system

So what we've got in the end:

  • a good looking Webkit based help browser;
  • contents tree, search and bookmarks;
  • automatic loading of localized version where available;
  • not really complete documentation.

More on the latter:

  • creating of font book templates is not documented (there are two wasy of doing it in 0.6.0);
  • there is no detailed information on PANOSE;
  • there is no documentation on Python scripting;
  • documentation on text layout engine's equalizer is written in a horrible language that only programmers understand.

And only English version is available now. Not so many things to be proud of in the end, huh?

All kinds of smaller things

I'll just mention them:

  • TTF/OTF tables HEX viewer and exporter
  • Database checker
  • Configurable text layout engine
  • Fonts packaging helper (for Linux distributions)
  • Optional hyphenation in Sample Text mode
  • Copy mode in Glyphs view to paste characters in a line

I'd go insane if I tried listing them all, and you have better things to do anyway.


With this version Fontmatrix is about to cross the line where it becomes bloatware. Let me put it this way: the sooner plug-in architecture (at least, internal) is implemented, the better. The application is already quite a bit like a swiss army knife with half of the blades and tools open and sticking into your hand.

And the user interface still needs a lot of love. Take PANOSE browser for example: it's functionally reach, but has such a hard to use interface, especially when localized, that you could think twice before using it. Luckily this is what Pierre is going to address.

On the whole, I'd love to see a usability specialist rethinking the UI from ground up.

So my personal wishlist apart from that would be:

  • integration with WhatTheFont or a similar service to search for fonts using a bitmap sample, because your collection might be just not large enough;
  • integration with on-line font libraries (search, preview, download, and, what the heck! — even buying);
  • editable and saveable complex searches, similar to dynamic playlists from any versatile audio player;
  • monitoring of changes in the collection (like when some very smart colleague removes a font file from a remote shared directory).

And then we'll see.