fontlint
A program for checking the validity of fonts
fontlint fontfile1 ...
fontlint checks a font for certain standard problems
It will notice:
-
Any glyphs with intersecting (or self-intersecting) contours.
-
Any contours drawn in the wrong orientation
-
Any glyphs with a flipped reference
-
Missing points at extrema.
For sfd fonts it will also notice:
-
Any open contours (more an issue in sfd files than in released fonts)
-
Adjacent points too far apart in a glyph
-
Unknown glyph referenced in GSUB/GPOS/MATH
For PostScript fonts it will also notice:
-
More points in a glyph than allowed by PostScript.
-
Too many hints in a glyph.
-
Invalid glyph name.
-
Missing BlueValues entry in PostScript Private dictionary
-
Odd number of elements in either the BlueValues or OtherBlues entries in
the PostScript Private dictionary.
-
Disordered elements in either the BlueValues or OtherBlues entries in the
PostScript Private dictionary.
-
Too many elements in either the BlueValues or OtherBlues entries in the
PostScript Private dictionary.
-
Elements too close in either the BlueValues or OtherBlues entries in the
PostScript Private dictionary (must be at least 2*BlueFuzz+1 apart).
-
Non-integral elements in either the BlueValues or OtherBlues entries in the
PostScript Private dictionary.
-
Alignment zone height in either the BlueValues or OtherBlues is too big for
the BlueScale in the PostScript Private dictionary.
-
Odd number of elements in either the FamilyBlues or FamilyOtherBlues entries
in the PostScript Private dictionary.
-
Disordered elements in either the FamilyBlues or FamilyOtherBlues entries
in the PostScript Private dictionary.
-
Too many elements in either the FamilyBlues or FamilyOtherBlues entries in
the PostScript Private dictionary.
-
Elements too close in either the FamilyBlues or FamilyOtherBlues entries
in the PostScript Private dictionary (must be at least 2*BlueFuzz+1 apart).
-
Non-integral elements in either the FamilyBlues or FamilyOtherBlues entries
in the PostScript Private dictionary.
-
Alignment zone height in either the FamilyBlues or FamilyOtherBlues is too
big for the BlueScale in the PostScript Private dictionary.
-
Bad BlueFuzz entry in PostScript Private dictionary.
-
Bad BlueScale entry in PostScript Private dictionary.
-
Bad StdHW entry in PostScript Private dictionary.
-
Bad StdVW entry in PostScript Private dictionary.
-
Bad StemSnapH entry in PostScript Private dictionary.
-
Bad StemSnapV entry in PostScript Private dictionary.
-
StemSnapH does not contain StdHW value in PostScript Private dictionary.
-
StemSnapV does not contain StdVW value in PostScript Private dictionary.
-
Bad BlueShift entry in PostScript Private dictionary.
-
Bad 'CFF ' table.
For TrueType fonts it will also notice:
-
More points in a glyph than specified in 'maxp'
-
More paths in a glyph than specified in 'maxp'
-
More points in a composite glyph than specified in 'maxp'
-
More paths in a composite glyph than specified in 'maxp'
-
Instructions longer than allowed in 'maxp'
-
More references in a glyph than specified in 'maxp'
-
References nested more deeply than specified in 'maxp'
-
Bad 'glyf' or 'loca' table
In any sfnt (True or OpenType font):
-
Bad sfnt table header, bad file/table checksums, overlapping tables, standard
tables with incorrect lengths, etc.
-
Bad PostScript fontname entry in the 'name' table
-
Bad 'hhea', 'hmtx', 'vhea' or 'vmtx' table
-
Bad 'cmap' table
-
Bad 'EBDT', 'bdat', 'EBLC' or 'bloc' (embedded bitmap) table
-
Bad Apple GX advanced typography table
-
Bad OpenType advanced typography table
-
Bad version number in OS/2 table (must be >0, and must be >1 for OT-CFF
fonts)
See Also
FontForge