(Don't you love it when a blog post starts with a disclaimer? yeah, me too…)
The things I'm about to describe worked in my setting, and since I
- Use an outdated version of FontExplorerX (1.2.3) and
- Use an outdated version of MacOS X (10.9.5)
this may very well not work for your setting. Plus, since I'll mess with the SQLite database, this could ruin your day if you don't backup the file first.


So what's this about?

I recently swapped an external storage disk for a new one. On this disk resides my (tiny) font collection. I use (an old version of) Linotype (now Monotype) FontExplorerX to have my fonts grouped and organized for different projects. Since I don't do much print design anymore, this isn't much of a topic anymore, but for the occasional gig poster or flyer it is still nice to group/activate the fonts needed only if and when needed.

After the exchange of the storage disk, all of the fonts grouped in FontExplorerX appeared in red, indicating missing font files.
As it turned out, the absolute path is stored, and now FontExplorer looks for a file in "/Volumes/ExternalDiskA/fonts/NiceFont/NiceFont.ttf", but the now correct path is "/Volumes/ExternalDiskB/fonts/NiceFont/NiceFont.ttf".

FontExplorerX has a menu where you can find and manage "conflicts", and there you can set the correct path for all those lost relations.
But. This is tiresome, even with a handful of missing fonts.

My installation of FontExplorerX saves the paths to the font files in a SQLite database, which can be found at "~/Library/Application Support/Linotype/FontExplorer X/FontDatabase.db".

If have the application "sqlitebrowser" installed, so I can open, view, and edit the tables in this database.

I can fix all the "lost" paths in one go with this little query:

   UPDATE containers
      SET path = REPLACE( path, '/Volumes/ExternalDiskA/', '/Volumes/ExternalDiskB/' )
      WHERE path LIKE '/Volumes/ExternalDiskA/%';

"containers" is the name of the table, "path" is the name of the field in this table. "/Volumes/ExternalDiskA/" and "/Volumes/ExternalDiskB/" are the paths to the old and the new disk storage, and there's a 99.9% chance, that these are different in your setting, so adjust accordingly ;-)

This little hack saved me quite some time and annoyance, so maybe it of use for you as well.