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 -------- :doc:`fontforge `