What are the windows requirements for an OpenType font to be installable?

Pomax's picture

I'm developing an OpenType font by byte-crafting it rather than using design tools, and now have a custom OpenType (CFF flavour) font that implements a really small subset of the Basic Latin unicode block (specifically it only implements .notdef and what under Basic Latin interpretation would be the tilde).

The CFF block passes "tx -3" validation, the font as a whole passes a round-trip de/recompile through TTX, and Microsoft's Font Validator does not report any errors in the font. Even loading it as a custom webfont (as plain otf in browsers that support otf, and wrapped as WOFF in browsers that don't) makes them style the implemented ~ glyph correctly.

However, even with all that apparent correctness, the windows font previewer reports that it is not a valid font file, and window will not let me install it (at least in windows 7. I do not have access to 8). I've looked high and low for information on what windows requires for a font to be installable, but haven't been able to find any decent docs; the internet seems to be filled with how to install a font as a user, rather than what requirements need to be met as developer =)

The font file, as both CFF block, .otf file, WOFF file, and TTX output, can be found over at https://github.com/Pomax/CFF-glyphlet-fonts/tree/gh-pages/binaries (in the base dir, not the "with GSUB" dir)

If there are any additional tools that I can use to determine whether or not this font is "done" enough to be installable, or if anyone knows where to find the documentation that explains which criteria a font needs to meet before it can be installed, that information is extremely welcome. And of course, if someone happens to notice something actually wrong with the font itself based on the TTX readout, I'm also keenly interested in your findings =)

- Pomax

Bitblt's picture

When I was making my small test for advanced width hinting, I noticed that the space character seemed to be necessary as well.

JanekZ's picture

It looks like your "name" table is invalid. Changed with the one generated by FontForge and font works.

Pomax's picture

Do you happen to have a TTX fragment for that corrected name table? If I round-trip the font through TTX, windows still rejects it, despite supposedly being in the right format, with the necessary data (MS Font Validator suggests the only requirements are font name, subfamily, and version strings)

Pomax's picture

Ran the font through font forge, and you're right. Apparently NameID #3 and #6 are required to make a font installable. So I suppose that solves half the problem; the other being "where might one find documentation on these requirements rather than discovering them through experimenting" =)

Thanks for pinpointing the name table!

erwindenissen's picture

A decade ago Windows didn't complain about those missing naming fields.

So I'm afraid there is no easy answer as there are requirements, recommendations, and assumptions. The specs evolved. Same goes for Windows.

To make it worse; there might even be font validation or rasterizer bugs involved. But that is also an assumption ;-)

Also be aware Microsoft Font Validator doesn't check for all possible issues, and sometimes incorrectly detects an error.

Pomax's picture

Yeah, it seems to not be maintained anymore either, so a format 4 OS/2 table gets flagged as error. I was just hoping there was *any* documentation that I could tap into for some more modern versions of windows (7 and 8 would be enough really). Thanks for all your help!

Syndicate content Syndicate content