Hello everyone,
wouldn't it be time to clean up the font format we all know and have only one font format at the end?
Technology has changed. Software is running in browsers (like Google docs). More and more people are using their phones to surf in the WWW. Screen resolution is increasing dramatically (a couple hundred ppi for phones).
We have TTF, CFF, woff (TTF based), woff (CFF based), woff2 (TTF based), woff2 (CFF based), ...
When I look into TTF and CFF – we have three places to store the vertical metrics values, two places for the width of a glyph (CFF: in CFF table and hmtx) and the name table is just a mess.
I know, that we keep all the old stuff to be always backward compatible. But does this really make sense?
I know, that we make more money when we sell different font formats. But is this really user friendly?
Wouldn't it be great to have only eg. woff3 (CFF based), which would work for desktop applications the same way like in browsers?
I am not long enough in the type business, but this question is in my mind form the beginning.
What do you think?
Many thanks for your thoughts,
Olli
0
Comments
Font formats, as virtually all "standard" basic file types, evolve with increasing technological capabilites and end user demands. Some of these new demands can be added to existing formats without breaking them; others cannot.
OpenType, for example, can digest many more features than currently available; as long as these features can be described in the current rendering model. The most recent major addition, Variable Fonts, cannot – and so there is a new internal format called "CFF2", which is intrinsically incompatible with older rendering engines.
Another difference is the description of font outlines. The entire paradigm of TrueType "instructions" is so different from CFF that they cannot be combined into a single encompassing model that supports both. If there is reason to develop a new format again, say, to make color font handling easier, or there is a more practical model to describe font outlines, it would essentially be an entirely new third font format.
If one chooses to adopt only this hypothetical new format, it would require that users need to update all of their fonts. And again when a fourth "even better" format surfaces. And so on.
But I would like to think more in the future and talking more in general. So, wouldn't it be great to have only one font format for everything?
When a customer is asking you what font format they should use, TTF or CFF, what is your answer? My answer is, it depends on what applications the customer is using in what environment.
It's more about a vision. Theoretically a web font is the same like a desktop font. It has the same character set, the same OT features, the same hinting, etc. It's just more compressed. So, why not having a new web font format, which can be used also for desktop?
Of cause it wouldn't be backward compatible with older software. But what the heck, why not?!
To be honest, I am waiting for the first desktop application, what uses web fonts. We have desktop applications to design websites, based on desktop fonts. What makes no sense to me. These apps should use the web fonts which will be used in the website later.
However, thank you very much for your thoughts.
As mentioned in the comment before. This is more a about thinking in general. So, wouldn't it be great to have only one font format for everything?
CFF was originally designed as a standalone font format, a compact version of PostScript Type 1. In OpenType, CFF was repurposed as a means to package that data compactly in the sfnt wrapper used by TrueType. But this created redundant data between the CFF table and other parts of the font. CFF2 deliberately gets rid of the redundancies. Here are the second and third sentences of the CFF2 spec (https://docs.microsoft.com/en-us/typography/opentype/spec/cff2, emphasis added):
Now, at the same time, the CFF2 spec was slow to be finalized, and has not been adopted as quickly or widely as one might hope. Almost all variable fonts other than Adobe’s have been done with TTF outlines. I think this evidence that while sometimes desirable in the abstract, a stronger break with the past can also hinder adoption of new technologies.
Most of the current desktop applications do support both font formats (TTF and CFF), which makes live much easier. But again, why not get rid of the one format and have only one. I know that this thinking is radical and I know that both formats have their benefits. But wouldn't it make live easier?
For me TTF makes more sense, when you have low resolution screens and you need a special hinting for small sizes. But the fact is, that this is changing already. We have more and more high res screens.
Of cause TTF can also have composites, which would make the file size smaller. Also a good argument especially for CJK fonts. But CFF2 will have this feature, too, right?
TTF fonts can be embedded into MS Word and PowerPoint, but not CFF fonts.
But nobody wants to draw in TrueType outlines. PostScript hinting is much easier and in many cases totally fine. PostScript hinting is also much more simple and therefor it does not need so much bits and bits.
Mmmhhh, having said that, it's not that easy. But I still have the feeling that it would be possible to have only one font format – and clean it up.
When we take a look into the name table for example. Theoretically we have four different platforms, but in fact only one is used (mostly). Even apps on the Mac are using the MS platform and not the Mac.
And now we have the third...
(I agree with that TTF should have a high-level hinting and a compiler to convert HLH downto instr. The only person I know who can write TT instr is @GregHitchcock .)
I can only assume you are talking about the OS and app vendors dropping support for old versions of fonts. But that is a different question/issue.
But it is much easier today to create a ‘perfect’ OT-CFF font. The Adobe autohinter is pretty good, and there’s not much quality to gain by manual hinting. The outlines will always be as good as the designer drew them.
TTF is, on the other hand, kind of a moving target. It’s hard to produce a general purpose TTF font that isn’t over- or under-engineered. You would need to know the rasteriser which will render the font in order to apply the required amount of hinting. For Office or webfont use, you can make a good guess, but beyond that …
Not every font can be hinted all the way to pixel-perfect glyphs at all sizes. (I remember actually having to push pixels around in a font not too long ago because it was to be used in a thermo label printer which had an incredibly low resolution. Thankfully it was only used at two specific sizes.)
Think of embedded systems in a car for example, they may use FreeType with on-the-fly autohinting, so you can forget about the font’s built in hinting, or it may use a rasteriser you haven’t even heard of.
And the outlines can be anything from an automatic conversion with one of the various algorithms to manually optimised offcurve point placement.
Oh, he’s not the only one. “There are dozens of us... dozens!”
I have looked at lots of CFF data and I cannot recall ever seeing something else than the stack immediately digested by the first command that followed.
Is your concern based only on the "theoretically" part, i.e., that it is possible, according to the sub-language specification?
My concern is that the stack-based language made many operations (like pre-allocate glyph points) impossible, so it would complicate the implementation.
Agreed! A dew years ago I took a shot at enumeratiin the problems with OpenType here:
https://meta.wikimedia.org/wiki/Future_Global_Font_Format_Requirements