What’s a PUA-encoded font and when might I need it?
OpenType is a popular font format that is widely used in professional design software. One of the main advantages of OpenType fonts is that they can include a wide range of “extra” characters and symbols, including those that are not typically found in standard fonts.
This is how I am able to create fonts for you that have “expert” features like positional and contextual alternates, standard and discretionary ligatures, swashes, alternate figure sets, and so much more.
The one drawback to using OpenType fonts is that in order to most easily access these features, you typically need professional design software (like Adobe, Corel, Affinity). Some of these features (but not all) can also be turned on in programs like Microsoft Word and Apple Pages.
Keep in mind: you can use an OpenType font in any modern software that allows you to use fonts and that software will allow you to use the basic character set for that font. It's only the fancy OpenType bits that require special software.
That said, just because you don’t have access to professional design software, that doesn’t mean all those extra characters are just unusable for you.
That’s where PUA-encoded fonts come in.
First: a quick and dirty technical lesson on Unicode. Unicode is a universal character encoding system that assigns unique numbers (code points) to every character in every language, script, and symbol. This means that instead of using different encoding systems for different languages, Unicode allows us to represent all languages and characters using the same standard. It includes over 143,000 characters from scripts such as Latin, Cyrillic, Arabic, Chinese, and more. Unicode is used in many applications and programming languages to ensure that text displays correctly regardless of the user's language or device.
The problem is, OpenType features don’t have Unicodes assigned to them. This is why not all software can “see” them. PUA encoding helps solve that problem.
PUA stands for "Private Use Area," and it is a range of Unicode code points that are not officially assigned to any characters or symbols. This allows font designers to include additional characters and symbols in the font without having to worry about conflicting with any officially assigned code points.
It also allows us to assign PUA unicode values to all of the OpenType characters, enabling end-users to access every single character in the font using a character map. (For more on Character Maps, you can download this guide.)
So, why don’t font designers just assign those PUA values by default and call it a day?
Truthfully, some do. In fact, you might even find that a lot do. But others (like me) choose to provide the PUA version separately because assigning those PUA codes comes with drawbacks.
One downside to using a PUA-encoded font is that it can make find-and-replace functionality not work as expected. When your find-and-replace tool is looking for the letter a, it’s looking for Unicode 0061. In an OpenType font that doesn’t have PUA encoding, every version of a maps to Unicode 0061. But in one that has PUA codes assigned to all of the alternate versions of letter a, they each have their own code. So one version of a is still 0061, but one version might be Unicode E0AC and another version of a might be E0B9. So find-and-replace can’t work properly.
This is why I always tell my customers that if you’re using software that does have OpenType functionality, always use the original OpenType version of the font.
If you’re using software that doesn’t support OpenType functionality, then you can use the PUA version.
I always name them separately so that you can have them both installed on your machine at the same time without conflicts.
In sum, OpenType fonts are a powerful tool for professional designers and typographers, but they can be difficult for some users to access without professional design software. PUA-encoded OpenType fonts provide a solution for this problem by making it easy for users to access all of the characters and symbols in the font. However, it's important to remember that the standard OpenType version is still the best option whenever possible.