Announcing Speakeasy: A new open-source language tool from Typekit
At Typekit, we’re working to deliver fonts in as many languages as possible, while continuing to satisfy our core requirement: delivering fonts as fast as possible. There is one significant challenge with that goal: As you support more and more languages, your character set (and the size of your font files) gets larger and larger. Subsequently, the speed at which you can deliver fonts decreases. So, the obvious aim would be to find a way to reduce the size of those font files. But how?
One method is called dynamic subsetting. Dynamic subsetting, invented by Steve Lee at Monotype, scans a web page to determine the actual characters in use. It then creates—on the fly—a subsetted version of the requested fonts using only those characters, and stores this version in a cache. Dynamic subsetting is a promising future direction, but there are questions about the time it takes to scan the page, return the font, and cache the results. And it’s difficult to tell how well this approach will handle content that is dynamically created.
Another method is to deliver fonts by script, e.g., Latin, Arabic, or Cyrillic. But few fonts support an entire script. If a font only partially supports the Latin-1 character set, how do you know if it will deliver all the characters for the particular languages that your site supports?
Enter Speakeasy: Speakeasy is an open-source language tool that maps a range of unicode symbols to a particular language. So, for example, if you are publishing a site in both German and English, Speakeasy can provide a map of all the unicode symbols required to represent those two languages. This map can then be used to determine if a particular font includes all of the characters required to support these languages. In fact, we’ve used Speakeasy to release just such a feature on Typekit today.
You can now browse fonts by language support; in the Typekit sidebar, you’ll see a list of languages currently available. (That list includes English, Spanish, Italian, Portuguese, French, German, Polish, Swedish, Czech, Dutch, Catalan, and Russian; more languages are coming soon.) Need a font that supports Spanish, Catalan, and Italian? Simply select all three and you’ll only see fonts that include characters required by all three languages.
We’re really excited to release this feature; but we know it can be better. We’ve done our best to identify the absolute minimum set of required characters for each of these languages (you can see which characters are included in each language here). But we’re not native speakers of many of these languages, so we can’t be sure we’ve gotten it right: that’s where you come in. We’re releasing Speakeasy as an open-source project, so that developers from all over the world can contribute to the character mappings and/or add new languages to the list. You can retrieve the code from GitHub to start working right away. With your contribution, Speakeasy can become a more useful tool for everyone.
This is just the first, small step in our plans to provide more support for international users of Typekit. Next, we’re going to take what we’re learning from these character maps and apply it to how we subset fonts. Our goal is to eventually include only the characters that a given site needs. That’s a win in any language.