OpenType features allow fonts to behave smartly. This behavior can do simple things (e.g. change letters to small caps) or they can do complex things (e.g. insert swashes, alternates, and ligatures to make text set in a script font feel handmade). This cookbook aims to be a designer friendly introduction to understanding and developing these features. The goal is not to teach you how to write a small caps feature or a complex script feature. Rather, the goal is to teach you the logic and techniques for developing features. Once you understand those, you’ll be able to create OpenType features that fit your design as perfectly as possible.
This cookbook is written with the assumption that you have a basic working knowledge of the structure of a font. You need to know the differences between characters and glyphs, understand the coordinate system in glyphs and so on. If you aren’t familiar with that, go study the basics and then come back. This will all make a lot more sense that way.
I’m Tal Leming and I started developing OpenType features around 2002 or 2003. Since then I have developed the OpenType features for a number of fonts that do weird things. I only write OpenType features for my own fonts now, so I am semi-retired from day-to-day OpenType feature programming. Back when I had time, I taught a type design class at MICA and a number of my students expressed interest in developing their own OpenType features and there wasn’t a good from the ground up introduction to this and…here we are. (Hi to my former students!)
This cookbook is not written by, sponsored by, supported, endorsed or whatever by the inventors of the OpenType features data storage formats and execution protocols. (That would be Adobe and Microsoft). This cookbook is unofficial unofficial unofficial. Did you read the part about who I am and why wrote this? To repeat, this is unofficial.
If you have trouble understanding anything, need help with your features or anything like that, please post your questions on the UAFDKOML (Unofficial Adobe Font Developent Kit For OpenType Mailing List) or start a discussion on Type Drawers. I’m unfortunately not able to help with questions directly due to time constraints.
Feedback & Contributions
This source for the text of this cookbook is on GitHub. If you spot errors, have suggestions about making something more clear and so on, please open an issue or submit a pull request over there. If you would rather get in touch with me directly, feel free to do that here.
If you think this cookbook has been useful in your day to day work and you want to support the development of it, feel free to (hang on, I’m waiting to be approved for the GitHub Sponsor program). Or you can make a one-time contribution through PayPal. Or contact me directly if you would prefer to do it that way.
If you are a student, please don’t donate. Save your money for food, tuition, supplies, hardware, software, fonts, picnics, concerts, student loans, etc. Come back when you are rich and famous from all the world changing OpenType features that you have written. I mean, if you really, really, really want to donate, you can if you insist. But, keep your budget in mind, please.