Type Supply Tool Store
MetricsMachine and Prepolator
You can download and license MetricsMachine and Prepolator here. Before I get to the details of that, let me make a few points:
- This software is still available, but it is no longer being maintained. I still use them in my day to day work, but OS X changes have made it difficult to update these versions of the software. They work for now. No guarantees about the future. Assume that there will be no bug fixes.
- You can download and try the software. If you use the software in your workflow, please pay for it. These tools greatly speed up the mundane tasks of type design, so, you know, do the right thing. (True story: what can be done in Prepolator in 10 minutes used to take 10–12 hours to do by hand before Prepolator existed. That’s not an exaggeration. This is why I wrote the tool!)
- Please read the FAQ below for each tool before buying.
- There are no refunds.
- Please keep the receipt that PayPal gives you.
- Are you a student? If so, please don’t buy this software. Download and use it, but don’t spend your limited financial resources on it. When you finish school, if you want to keep working on typefaces, come back and license it then.
- I am working on completely new versions of these tools. I have no idea when, if ever, they will be available. I won’t say much about them except that they are radically different from the versions you can get here.
Still interested? You can order here (payments are processed through PayPal):
MetricsMachine is a kerning editor. It’s really good at making the kerning process suck less. It doesn't do autokerning. It’s just a (much) fast(er) way of kerning. A license costs $500 per user.
Are there any known bugs?
Yes. There are two:
- If you open the group editor with the group preview on in the kerning editor, you will get a crash or a gnarly silent error that you won’t notice until later. To get around this, turn off the group preview before editing groups. That solves it.
- In various lists, the first column may be too narrow causing text truncation. The default width for columns inexplicably changed in OS X. It’s not actually my bug.
Why doesn’t MetricsMachine allow editing metrics?
Good question. It did in a previous version. In fact, there was actually a complete spacing interface, like the kerning interface, with a group editor and everything. It was kind of awesome, but no one used it because spacing and drawing happen at the same time and, therefore, spacing should be done where fonts are drawn. It was a ton of code to maintain, so I got rid of it. I tinkered with the name “KerningMachine” but people already knew the “MetricsMachine” name and “KerningMachine” didn’t have the same alliterative attraction as “MetricsMachine.”
Does MetricsMachine support UFO 3?
No. If I get enough questions about this I will write a conversion script and open source it.
Will the next version (something)?
Maybe. Maybe not. I’m deep into development of the next version, but I have been in development for almost ten years. The next version is very different and, I think, a significant leap forward for a kerning tool. I still have a lot of loose ends to tie up and at least one major UX issue to solve. No promises on delivery.
Do you know that I hate MetricsMachine?
I do! Do you know that I hate it more than you do? That's why I want to make a new version.
I was working on a small update to Prepolator a while back. It had some notable improvements, but never made it out of the beta stage. If you want to use that version (I do in my own work) you can get it here.
Are there any known bugs?
Yes, sort of:
- I’ve had reports of external changes not being noticed. I’ve never been able to replicate them, but that doesn’t mean that they don’t happen. The external change detection system is a brute force routine that can be fooled by race conditions and bugs in other software. It works for me, but be careful.
- The same column width issue that appears in MetricsMachine happens in Prepolator, too.
Does Prepolator support UFO 3?
No. Sorry. You’ll have to convert to UFO 2 and then back to UFO 3.
Will the next version do (something)?
The next version is going to be radically different, so pretty much any idea for improving the old version is no longer applicable. I’m excited, but, again, no promises.
I’ve been writing code to help with my type design work for over 15 years now. This started out as me trying to solve workflow bottlenecks and eventually turned into two closed source tools (MetricsMachine and Prepolator) and way, way more open source code. Over the last several years I’ve had sharply decreasing time for writing code and, as a result, my limited time for coding has gone to maintaining old things rather than making new things. This has been frustrating for me because I enjoy making new things much more than I enjoy reviewing issues on GitHub or worrying about how to make code that I wrote 10 years ago run 5% faster. This situation has become unsustainable for me, so I’ve had to make some decisions about how to move forward.
I’m officially stating that my closed source tools are no longer being supported. This doesn’t mean that I’m abandoning them. It just means that the little time that I have for them is going to go to the new versions rather than the old versions. On the open source side, I’m going to stop working on some projects. Before I go much further, let me explain the factors that have contributed to my decision.
- Time. I just don’t have as much time as I used to. I have family obligations and I run a small business. Those come first.
- The font world has changed. Back in the day my tech needs largely overlapped with the needs of the rest of the type design world. The tech side of our world is growing rapidly right now—new web font formats, variable fonts, colored fonts, etc.—and while I am curious about these new things, I’m not reliant on them. Therefore, I don’t have a pressing need to build my workflow around them.
- I never intended to be a tool provider. I’m a type designer who happens to write code. Building tools was something that just kind of happened. I made my tools for my own needs, then gave them to friends and things just went from there. There was never a grand plan.
- Developing foolproof software is hard. It turns out that developing software for others is a slog. My guesstimate is that in the actual coding work 70% of my time is spent on building safety precautions for cases in which a user does something completely bonkers. Even then I can’t catch all of these situations. (Case in point, someone once saved a file over their UFO outside of MetricsMachine and then were extremely frustrated that MetricsMachine couldn’t magically undo their mistake.) This is a bit easier in libraries because we can use unit tests to look into edge cases, but in a full application it’s a ton of work to prepare for unexpected errors.
- Maintaining software is hard. Writing an app is fun. Maintaining an app is not. Apple does an amazing job of providing a powerful platform and some amazing technologies, but the consequence of that innovation is that things change. A lot. Keeping up with that change is time consuming and difficult because the changes are not always documented. Each OS release gives me a significant amount stress because I’m never sure if Apple will have made major changes to NSWhatever that breaks something or, even more terrifyingly, stopped supporting Python. Additionally, there is a behind the scenes churn at the programming language level that is hard to keep track of with just a limited amount of time. Syntaxes change, new things come along and more. I have a ton of code and there is no realistic way for me to stay on top of all this.
- Developing highly specialized font tools is not financially advisable. Sales of my tools are welcome income, but it’s not something with a high profit margin. My estimate is that it will take me three to six months to finish the new version of MetricsMachine to the point that it is ready for use by other designers. This is in addition to months of coding work and years of idea development that has already been done. I know exactly how many licenses of MetricsMachine that I’ve sold over the last eight years. If I multiply that number by $500 (the current price of MetricsMachine), it doesn't pay for the work. That doesn’t factor in the time that goes into all of the open source projects that I have developed to make things like MetricsMachine possible.
- Vast conspiracies! Okay, not conspiracies, it’s just business. There are backroom deals in the font tool and font specification worlds. I don’t think this is a secret. Large corporations will fund the development of certain things that they want because it will make a new product category available for them to make money on. That’s business. I’ve been looped into these discussions from time to time, but I always excuse myself or get dismissed because of my stubbornness. (The WOFF standardization process is the one notable exception of when I stuck around.) I’m dumbly “for the good of everyone!” about the tech side of things, so I prefer to do this kind of work in full view of the public. Therefore I haven’t ever had any corporate backing of closed source code to help keep my tool development afloat. It’s just not something that I feel comfortable with. On the open source side, there have been some welcome contributions, but it only covers a fraction of the time I’ve spent. So, long story short, I’m more or less funding this stuff on my own.
- There isn’t a huge community willing or able to contribute to open source development. This isn’t new and it isn’t isolated to the type design world. There are just a lot more people who want to use tools than who want to build tools. It’s a flaw in the open source idea and there don’t seem to be any good solutions. That leaves a handful of us doing tons of work for the community. It can get to be quite frustrating when we have other stuff that we would much rather be doing.
- Being an unpaid R&D department for other developers sucks. Tools all build on each other. That’s natural. There are small bits and pieces of my tools that were inspired by things in Fontographer (the idea of group based kerning and the general iterative process for looking at kerning), FontLab (the / syntax for delimiting glyph names) and various RoboFog scripts (too many things to list). However, I’ve seen major things that I invented implemented in other tools without any improvement over my original version. I’ve had other developers tell me that these things are “coincidences” and that the interfaces and processes that I arrived were “inevitable.” I can’t speak to the coincidences thing, but the idea that I found the perfect solution is nuts. I know this to be true because I have been working on new versions of my tools and they are very different and much better. I hoped my tools would spur the development of better tools that would replace my tools. Seeing other tools clone parts of MetricsMachine and Prepolator hurts from the point of view that I’m not being compensated for my work, but it hurts way more that the new tools aren’t making type designers’, our, workflows better. I get so many requests for 10+ year old MetricsMachine from users of all font editors that it boggles my mind. I’m not bitter about this. I’m exasperated. We need better tools.
- Finally, I’m just not good at the day to day upkeep of tech stuff. I’m good at the R&D phase, but the process of keeping things running is something that completely bores me. It’s a personality flaw.
So, going forward, I’m doing what it says over there about MetricsMachine and Prepolator. On the open source side, well...
Open Source Projects
I am still heavily involved in the development of the UFO specification (and maybe the UFS specification) and will continue to be involved. I still fundamentally believe an open, documented, carefully considered specification is vital for the longevity and portability of our data. While it may look like the specification isn’t moving forward at times, it is always on my mind. There are areas that I would like to make progress on, but I don’t have the knowledge to do so. If you see any area that is lacking and you want to contribute expertise, please get in touch.
Likewise, the UFO project is home to a core group of projects for reading, writing, converting and interacting with this format. These following projects are still very much active.
defcon is a foundation layer for a lot of other projects. As far as I am concerned, it does its job and doesn’t need a ton of work. There are some enhancement ideas and concerns about speeding it up, but, you know, it’s working. I have some wonderful collaborators who are helping keep it all up to date. So, defcon is still very important, but it’s not a huge time suck.
I have a handful of small projects that are near and dear to my heart. These may not have a ton of recent development activity, but they are still being maintained as I think of new features.
The following projects are in “it works for me” status. Meaning, they do what I need from them, but there is a bunch of stuff that they could do, but I don’t need it so they aren’t being actively developed. If you want a change, please make a pull request. I’ve tried to find them new homes, but there haven’t been any takers. If you want to take over one or more of these, please get in touch.
I don’t ever think about the following projects. I consider them to be dead. I’m leaving them on GitHub for reference.
Back to Basics
Now, I’m going to try to do things differently. I’m going to spend less time on old things and more time on new things. There are portions of the type design process that need some serious modernization and I’m going back to experimenting with these kinds of big picture things. I’m not going to worry about making these things completely foolproof. I’m going to keep these projects small. I may work on them in public or I may keep them a secret until I think that are ready. Some may be released with source code. Some may be released as completed tools. The new versions MetricsMachine and Prepolator may be among these. They may not. I’m making no promises other than that I am going to endeavor to make more time for being curious about new things.
I’m also going to make a change about keeping my ideas proprietary. If you are a tool developer and you think that I have solved something and want to implement my solution, get in touch. We can work out a mutually beneficial arrangement.