Check that OS/2.fsSelection bold & italic settings are unique for each NameID1


Per the OpenType spec: name ID 1 ‘is used in combination with Font Subfamily name (name ID 2), and should be shared among at most four fonts that differ only in weight or style…

This four-way distinction should also be reflected in the OS/2.fsSelection field, using bits 0 and 5.


Check if OS/2 fsSelection matches head macStyle bold and italic bits.


The bold and italic bits in OS/2.fsSelection must match the bold and italic bits in head.macStyle per the OpenType spec.


Check code page character ranges


At least some programs (such as Word and Sublime Text) under Windows 7 do not recognize fonts unless code page bits are properly set on the ulCodePageRange1 (and/or ulCodePageRange2) fields of the OS/2 table.

More specifically, the fonts are selectable in the font menu, but whichever Windows API these applications use considers them unsuitable for any character set, so anything set in these fonts is rendered with a fallback font of Arial.

This check currently does not identify which code pages should be set. Auto-detecting coverage is not trivial since the OpenType specification leaves the interpretation of whether a given code page is “functional” or not open to the font developer to decide.

So here we simply detect as a FAIL when a given font has no code page declared at all.


Fonts have consistent PANOSE family type?


Fonts have consistent PANOSE proportion?


Check if OS/2 xAvgCharWidth is correct.