What’s happening with FontBakery? Is Fontspector the future?

Hello everyone,
I recently came across a note on GitHub mentioning that FontBakery is gradually being phased out, and that Fontspector is the future of font quality assurance. It’s recommended to migrate to Fontspector, as FontBakery seems to no longer be actively maintained.
Currently, there also seem to be issues with installing FontBakery, particularly under Python 3.13.7, which has caused frustration for many users. This raises some important questions for me and others:
-
Is FontBakery still being developed? Will there be any updates or official support for newer Python versions? Or can we assume that FontBakery is being gradually phased out?
-
Fontspector as the new solution: What steps are needed to install and use Fontspector on personal systems? Is there a detailed guide for installation and integration of Fontspector into workflows? How does Fontspector differ from FontBakery in terms of usage and functionality?
I’m sure many of us who rely on FontBakery share these questions. Any answers or further information would be very helpful, especially as we may soon need to transition to Fontspector.
Looking forward to your thoughts and experiences!
Comments
-
There’s a web version of Fontspector that is probably the easiest way to work with it. If you want to install it locally, you can either grab binaries from the project release page or install using cargo-binstall. Depending on your platform, you may need some dependencies preinstalled, as explained in the repo readme.4
-
So, this isn’t personally my project or anything, but I have been paying attention and use both tools. I also happen to be in regular meetings with the folks who do make those tools.
1) No, Fontbakery is not being actively developed. I can’t say if that rules out minor updates for OS compatibility purposes. Of course, it being open source, somebody could choose to do this themselves. But as I explain below, this seems unlikely.
2) FontSpector can either be run locally from the command line, or you can use the web version.
- you can find the web version here: https://fonttools.github.io/fontspector/ — just drag and drop your font onto it.
- instructions for installing the command-line version (from the command line) are here: https://github.com/fonttools/fontspector?tab=readme-ov-file#running-the-cli-tool — note that it assumes you either have cargo or homebrew installed, to do the install! If you do not, then you will need to install one of those first. If you are on a Mac, you will need protobuf.dev as well.
- you may need to do a custom build of fontspector if you want special options, such as being able to directly run your own custom fontbakery checks within fontspector. (Yes, it can be built in a way that supports this!)Why Fontspector instead of Fontbakery?
Fontspector is simply a port of Fontbakery from Python to Rust. But why? Two reasons: mostly performance, but security comes along for free.Performance
Fontbakery can take several minutes for a single font family. Fontspector is roughly 1000 times as fast. It can run and report on the entire Google Fonts library in seconds. (This is mostly the benefits of being a compiled language, rather than interpreted. But even among compiled languages, Rust does pretty well, thanks to only allowing zero-cost abstractions.)Security
In short, Rust is an inherently MUCH more secure language than Python (and C++, and most other languages). Many of the most common software security vulnerabilities are either impossible in Rust, or can only happen if you deliberately write and declare your app (or a part thereof) to be insecure.6 -
Thank you very much for this information.
Does anyone know who owns or operates the website https://fonttools.github.io/fontspector/ ?0 -
Typedesigner said:Thank you very much for this information.
Does anyone know who owns or operates the website https://fonttools.github.io/fontspector/ ?
It is run by developer team of fontspector themselves0 -
Specifically, Simon Cozens is the lead developer of Fontspector, and Felipe Sanches was long the lead for Fontbakery.
Development of both was primarily funded by Google, though many other folks have contributed, either as work for an employer, or on their own.3 -
The description of how to install Fontspector is difficult to understand. The target audience of this guide must be very familiar with Rust and possibly programming. However, this is not the case for users of FontLab 8 and Glyphs 3 – i.e., type designers – unless they are font engineers.
https://github.com/fonttools/fontspector?tab=readme-ov-file#running-the-cli-tool
It would therefore be desirable to have a detailed step-by-step guide, similar to FontBakery, explaining how to install Fontspector.
https://fontbakery.readthedocs.io/en/latest/user/installation/install-windows.html
1 -
John Hudson said:There’s a web version of Fontspector that is probably the easiest way to work with it. If you want to install it locally, you can either grab binaries from the project release page or install using cargo-binstall. Depending on your platform, you may need some dependencies preinstalled, as explained in the repo readme.0
-
fTypedesigner said:
The description of how to install Fontspector is difficult to understand.
It is a two step process
First install Rust and Cargo as per instruction given in https://doc.rust-lang.org/cargo/getting-started/installation.html
Next go to a terminal and run
cargo install fontspector
0 -
Unfortunately, this description of how to install Fontspector is incomplete and leads to an error. How can this be fixed?0
-
I'm not quite sure why you're double-posting your comments both here and on the fontspector issue tracker; it isn't helpful.
The first step in the install instructions reads:- Official release binaries are available from the GitHub releases page
And as mentioned twice above, for non-technical people who don't want to be messing around with command line software, the easiest way to use fontspector is through the web interface.1 -
Simon Cozens said:I'm not quite sure why you're double-posting your comments both here and on the fontspector issue tracker; it isn't helpful.
The first step in the install instructions reads:- Official release binaries are available from the GitHub releases page
And as mentioned twice above, for non-technical people who don't want to be messing around with command line software, the easiest way to use fontspector is through the web interface.
Unfortunately, fontspector.exe cannot be installed on Windows 11. When you click on it, a window briefly opens and then immediately disappears. The software is simply unusable.I recently attempted to use the web version of Fontspector (https://fonttools.github.io/fontspector/) but noticed several concerns regarding transparency and data protection. Specifically, I observed that there is no imprint or privacy policy on the site that complies with the requirements of the General Data Protection Regulation (GDPR).
In this context, I have a few questions regarding data processing and potential tracking mechanisms:
-
Data Collection: What data is collected by the web version of Fontspector? For example, is the IP address of users recorded during their visit to the website?
-
Cookies and Tracking: Does the website use cookies or other tracking technologies? If so, what information is collected through these, and how is it used?
-
Data Sharing: Are any collected data, especially font metadata, shared with third parties or used for other purposes?
Since the website does not provide clear information on privacy matters, I would appreciate a detailed response to the above questions. Specifically, I am interested in how the website complies with EU data protection requirements (GDPR).
0 -
The reason there is no privacy policy or data processing statement is that no data is gathered or retained at all.1
-
Actually in the fontspector website nothing is uploaded, the whole program runs in your local browser, your font file is not uploaded anywhere and stays in your computers memory. The tests run in your browser to give you the result so no privacy concern at all
0 -
Although, as noted above, FontSpector is far superior to FontBakery in every way... I take it that it was easier to install FontBakery on a Windows system. If, however, FontSpector runs "entirely in your browser", it would seem like it ought to be possible to locally host the web version of the program on any operating system.But in that case, how could the web version of FontSpector still be compiled Rust as opposed to JavaScript (or ECMAScript)?EDIT: Pardon my ignorance. I did a brief web search, and I now see that something called WebAssembly is involved.0
-
Universal (community best practices) - Can you explain who set this profile on Fontspector? How does it differ from other profiles?0
-
Same set of tests as Fontbakery. Same profiles. (Modulo perhaps a VERY few brand new tests since Fontbakery has been winding down.)
Basically, everything that all the major players doing profiles, wants in their profile? Those are in the universal profile. So things that Google, Adobe, Microsoft, Dalton Maag, etcetera all wanted.
Stuff that at least some major players disagree on whether it should be universally checked in normal fonts? Not in the universal profile.
Overall, the process is managed by Google; they are funding the tool. But there are serious and genuine efforts made to “keep everybody happy,” and (for example) when Adobe split off to do an “openbakery” tool instead of Fontbakery, many folks involved viewed that as a failure of process and/or communication.
And not EVERY font is expected to pass every test. For example, with Vassil Kateliev I do the fontification of Google’s icons as variable fonts, public version is called Material Symbols. There are a few standard checks in the Google profile that it won’t ever pass, and that is OK!2 -
A few years ago, there were promising discussions about integrating Font Bakery directly into applications like Glyphs or FontLab via a dedicated interface. This would have brought its powerful, but for some technically demanding, validation tools into the familiar GUI environments many type designers already use — lowering the barrier to systematic font QA and broadening its reach.
The idea has not yet been implemented, but it still holds strong potential to improve accessibility in the future.
0 -
Most Font editors have some inbuilt checks. Even Fontforge's Validate tools removes most obvious error. But Fontbakery's profiles help in fulfilling exact requirements of font vendors like adobe, googlefonts etc0
-
@Simon Cozens
Is there a way to define a custom profile for FontSpector? I presume something like that would need to be run locally, and that there wouldn’t be a way to plug it into the web version?0 -
John Hudson said:@Simon Cozens
Is there a way to define a custom profile for FontSpector? I presume something like that would need to be run locally, and that there wouldn’t be a way to plug it into the web version?
I guess this is the way to go about it, but I haven't really looked into it.0 -
There are various ways to do this and I should write it up in the documentation.
- If you just want to define your own collection of existing checks to run in a particular order, you can write a profile in TOML (e.g. https://github.com/fonttools/fontspector/blob/main/profiles/fontbureau.toml) and run
fontspector --profile fontbureau.toml
- If you want to define your own checks in Rust, you make a Rust crate like https://github.com/fonttools/fontspector/tree/main/profile-microsoft ; it doesn't need to be in the fontspector repository, you just need to be able to compile it as a shared library and it can be loaded into fontspector at runtime. (I think some people have struggled with this and I'm not quite sure why; it Works For Me™.)
- If you want to define your own checks in Python, this is in theory possible through a crate called fontbakery-bridge. The concept is good and I have used it to run Fontbakery checks before they were ported to Rust. However, I think it probably needs some refinement to work in practice as I'm not sure I implemented a way to load arbitrary Python files.
3 - If you just want to define your own collection of existing checks to run in a particular order, you can write a profile in TOML (e.g. https://github.com/fonttools/fontspector/blob/main/profiles/fontbureau.toml) and run
-
Why wasn't FontBakery simply rewritten in Rust?
FontBakery is already well-established within the type design community. The "cupcake" symbol at the end of the test, crafted from letters by Tony de Marco, is not only a clever touch but also a strong marketing asset. It is memorable and gives the command-line tool a distinctive identity. Additionally, FontBakery's website is informative and user-friendly, with comprehensive help features that make it easy for users to get the most out of the tool.On the other hand, the name FontSpector still needs to be made known to the existing FontBakery users, which will likely take some time. Furthermore, FontSpector could be confused with Font Inspector by some users:
Font Inspector Chrome Extension0 -
Yes, atleast fontbakery.com, readthedocs.io and GitHub site for fontbakery should mention the fact that fontbakery is no longer being updated and is being replaced by fontspector.3
-
Fontbakery WAS “simply” rewritten in Rust — just under a new name.
The thing is, that “simply” (hah!) rewritten in Rust means that (unavoidably!) the installation is radically different and there are massive changes in dependencies and installation, and the docs needed to be redone. People are still pointing out legitimate bumps that still need to be smoothed out to make it ~ equally easy to install and use.
These factors mean, to me at least, there are strong reasons to keep the “Python version” of the tool around and available, and to make the change as strong and clear as having two different names. I still have both installed.
I suppose they could have called it “Fontbakery 2” in a parallel to what Simon did with his Diffenator tool. But giving it a different name seems entirely reasonable to me.
1 -
Thomas Phinney said:People are still pointing out legitimate bumps that still need to be smoothed out to make it ~ equally easy to install and use.From what I've seen in this thread, that's the whole problem with FontSpector, and so once it's fixed, presumably everyone should be happy, given that, otherwise, it's vastly superior in every way.I guess it's unfortunate that the functionality of FontBakery is so urgently needed by so many that having to wait for this to happen... or, more precisely, having support for FontBakery dropped before this has happened... has made the transition intolerably bumpy for some. Given that open-source projects don't have huge resources of money and manpower to draw on, though, I don't see how this could have been avoided.Although, if the two projects don't entirely rely on the same people, then a way to avoid it probably would exist, by making the FontSpector project do without most of the help it gets from people who worked with FontBakery - the result would be to slow the development of FontSpector down, though, and I presume there are more people who are willing to use FontSpector as it is than there are those who insist on it being as easy to install and use as FontBakery before they're interested, which is why that road wasn't taken.EDIT: I should mention that there's one other (theoretically) possible solution, although in my opinion it hardly even bears mentioning.An open-source license such as the GPL places restrictions on what people other than the writer of the software can do with the copyrighted software, which they can only use because of the permissions granted to them by that license.So there are examples of software available for free use under the GPL, but also available for embedding in commercial products if the fee for a commercial license is paid. And there are also cases where a program, formerly available under the GPL, has changed to being commercial software for its future releases.So making FontBakery paid instead of free in its future releases could, conceivably, generate the revenue to allow both FontBakery and FontSpector to be developed at the same time.Since FontSpector is available free as a generally superior alternative, though, I suspect the potential user base is much too small to allow that to work.EDIT: Although I've proposed two "solutions" to the impasse above that obviously can't work, in fairness I should mention the kind of painless technical solution to the issue that people spoiled by all the open-source software out there were probably hoping for.Instead of writing FontSpector from the ground up in Rust, what if instead what was written was a new release of FontBakery where the user interface was the old one, in Python, but its grunt work was done by an engine written in Rust?The assumption being that if they did it this way, they could have packaged the result so that the addition of whatever run-time Rust might need (and I saw a statement in this thread that Rust doesn't even need a run-time) would not make installation more difficult.I assume this was considered, and there were valid technical reasons that made it infeasible.0
-
@John Savard You wrote “the writer of the software” when you probably should have written “the owner of the software.” If you check the FontBakery copyright notice, you will see that the primary authors are not the copyright holders. The copyrights are mixed, but the biggest holder is Google.
> Instead of writing FontSpector from the ground up in Rust, what if instead what was written was a new release of FontBakery where the user interface was the old one, in Python, but its grunt work was done by an engine written in Rust?
Fontspector actually already offers the option to use a Python front end in the way you describe! But it does not remove any of the issues… in fact it ADDS complexity. And it does not solve a usability problem, it is there for other reasons. The Fontspector “user interface” (command line) is not much different. The problem is, Rust and Python are different. The way you install these apps is different. They have different dependencies. These are all due to the initial difference in how they work.
1 -
Thomas Phinney said:Fontbakery WAS “simply” rewritten in Rust — just under a new name.
The thing is, that “simply” (hah!) rewritten in Rust means that (unavoidably!) the installation is radically different and there are massive changes in dependencies and installation, and the docs needed to be redone. People are still pointing out legitimate bumps that still need to be smoothed out to make it ~ equally easy to install and use.
These factors mean, to me at least, there are strong reasons to keep the “Python version” of the tool around and available, and to make the change as strong and clear as having two different names. I still have both installed.
I suppose they could have called it “Fontbakery 2” in a parallel to what Simon did with his Diffenator tool. But giving it a different name seems entirely reasonable to me.I understand that these substantial technical changes are important for maintainers and users with a technical background. However, a complete rebrand is not warranted by these changes alone if the tool’s purpose and core functionality remain unchanged.
Retaining the original name would have been the stronger choice for the following reasons:
Consistent user experience: For most users, the key measure is whether the tool still validates and analyses fonts effectively. If the CLI/GUI workflow and output remain familiar, the underlying programming language is largely irrelevant to their day-to-day use.
Continuity across versions: Many users still rely on the Python release. A new name could imply a functional fork or incompatibility that does not exist, which would make it harder for users to recognise the connection between the two versions.
Preserving brand equity: Fontbakery is a recognised name in the type design and font development community. This recognition has been built up over many years and changing it would dilute the brand and reduce its discoverability.
Implementation details are secondary to purpose. The programming language is an internal detail. The core deliverables — validation rules, quality checks and reporting — remain unchanged, and the name reflects the tool’s purpose rather than its codebase.
Clear, proactive communication of the rewrite, supported by updated documentation, would have distinguished the Rust version while preserving the identity and trust associated with the original name.
0 -
"Many users still rely on the Python release" is a good reason for keeping Fontbakery around, not for calling something else Fontbakery instead.1
Categories
- All Categories
- 46 Introductions
- 3.9K Typeface Design
- 482 Type Design Critiques
- 560 Type Design Software
- 1.1K Type Design Technique & Theory
- 649 Type Business
- 844 Font Technology
- 29 Punchcutting
- 517 Typography
- 119 Type Education
- 321 Type History
- 77 Type Resources
- 110 Lettering and Calligraphy
- 31 Lettering Critiques
- 79 Lettering Technique & Theory
- 544 Announcements
- 88 Events
- 112 Job Postings
- 170 Type Releases
- 173 Miscellaneous News
- 275 About TypeDrawers
- 53 TypeDrawers Announcements
- 120 Suggestions and Bug Reports