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