TYPE DESIGN INFORMATION PAGE last updated on Mon Apr 15 06:53:27 EDT 2024

SEARCH THIS SITE:

IMAGE SEARCH:

FONT RECOGNITION VIA FONT MOOSE

LUC DEVROYE


ABOUT







fontmake versus afdko

A typedrawers discussion in 2020 about the use of fontmake or Adobe's AFDKO in font production. Quoting font technology expert Adam Twardoch: AFDKO is an older set of tools and libraries that was created to convert between various font formats. Its most-used components were those for converting Type 1 fonts into CFF-based OpenType fonts, for compressing the CFF table using subroutines, and to compile feature definitions from the FEA format into binary OT tables. AFDKO is mostly written in C/C++, with some code in Python.

fontmake is a small tool that uses a large set of libraries written in Python, written from scratch or significantly extended in the last few years. Its core is fontTools, originally a Python-based OpenType parser, today a set of libraries that provides alternative, newer implementions of most of the commonly-useed AFDKO modules. There are additional libraries like ufo2ft or glyphsLib that fontmake uses to convert other formats into something fontTools can compile.

Originally, developers used AFDKO and fontTools in combination. In fact AFDKO does use fontTools itself in small bits. The code of ADFKO was a haphazard mix of different languages and programming styles and glue-code.

fontmake, fontTools and the other libs are written in a much cleaner way, esp. since the migration to Python 3. Almost all of relevance what AFDKO could do the fontTools-based workflow can do (I find calling it "fontmake" is a bit of misnomer, fontmake really is just a small frontend).

Users still use AFDKO because it's well-established and it's shortcomings are well-known. But the community is gradually migrating towards the Python-only ecosystem built around fontTools and fronted by fontmake.

AFDKO and fontTools is an interesting case if you compare how they came to be. Both projects are opensource, but there is an important difference. AFDKO was developed in-house within Adobe, to fit Adobe's own workflows for font development, and also their particular focus on the types of fonts they were making. Adobe made the source of AFDKO available to interested parties so that apps like FontLab could bundle the compiled code.

Overall, the number of people who had insight into the code was small. Because there were hardly any open collab tools for code, changes and fixes, even if made by some of those who had insight, may have only ended up in the private forks.

Much later, Adobe opensourced the bulk of AFDKO. This was great — but the code remained very tied to its original limitations: there are many functionalities for Euro-centric fonts but few for complex scripts.

fontTools was different. It was opensource from day one. When Behdad Esfahbod and Google i18n took over its maintenance, and the code appeared on Github, a large group of people could advance it.

People added new functionalities and other libraries quickly, and they all worked well together. The ecosystem around fontTools outgrew the original scope of the library many times.

I think the fontTools ecosystem is better, largely because the library was opensource from the start, so it could grow by consensus.

AFDKO was an in-house package for a long time. It is fine, it is great that it's there, but it didn't enjoy the benefit of many eyes for that long.

EXTERNAL LINKS
fontmake versus afdko
MyFonts search
Monotype search
Fontspring search
Google search

INTERNAL LINKS
Font software ⦿ Font creation programs ⦿ Unified Font Object ⦿













Luc Devroye ⦿ School of Computer Science ⦿ McGill University Montreal, Canada H3A 2K6 ⦿ lucdevroye@gmail.com ⦿ http://luc.devroye.org ⦿ http://luc.devroye.org/fonts.html