FontForge Generation Failure: Bad Point Directions

When generating a font in FontForge, the process can fail if glyph outlines contain improper path directions or invalid contour orientations. Font rendering engines and output formats rely on consistent path winding directions—specifically clockwise versus counter-clockwise—to distinguish between filled areas and cutouts. When these winding rules are violated, ambiguous, or corrupted by geometric errors, FontForge flags a validation error and halts the export to prevent generating a broken font file.

Contour Winding Rules by Font Format

Font formats adhere to strict geometric conventions to differentiate between the solid body of a glyph and interior holes (such as the center of the letter "O" or "B"):

  • TrueType (TTF): Outer contours must follow a clockwise direction, while inner contours (holes) must be drawn counter-clockwise.
  • PostScript / OpenType (OTF-CFF): Outer contours must follow a counter-clockwise direction, while inner contours must be drawn clockwise.

If an outer contour and an inner hole share the same direction, or if an outer contour is reversed, the rasterizer cannot reliably determine which regions to fill. When FontForge converts glyph outlines into binary data for generation, conflicting directions break the specified format's specification, causing the generator to report bad point directions and fail.

Overlapping Paths and Self-Intersections

Bad point directions are frequently triggered by self-intersecting paths or unmerged overlapping shapes. When a single contour loops over itself, FontForge encounters points that simultaneously act as an exterior edge and an interior edge. This creates mathematical ambiguity:

  • A single vector path cannot be both clockwise and counter-clockwise at the same time.
  • FontForge’s direction-detection algorithm cannot determine a single unified winding order for a self-intersecting shape.
  • Open vector paths or stray zero-length points (two coincident points on the same contour) confuse the path traversal logic, producing fatal direction warnings.

Inconsistent Direction Across Joined Elements

When combining individual shapes or importing vectors from external software such as Adobe Illustrator or Inkscape, paths often carry conflicting winding metadata. If components of a single glyph have mixed orientations—such as one outer loop running clockwise and an adjoining outer loop running counter-clockwise—the generator fails because it cannot apply a unified filling rule across the glyph.

How to Resolve the Error

To clear the bad point directions failure in FontForge, clean the geometry before generation:

  1. Remove Overlaps: Select the affected glyphs and go to Element > Overlap > Remove Overlap (Ctrl+Shift+O) to eliminate intersecting paths and create clean, unified boundaries.
  2. Correct Path Directions: Navigate to Element > Correct Direction (Ctrl+Shift+D). FontForge will automatically inspect all closed contours and orient outer and inner paths according to standard typographic rules.
  3. Find Problems: Run Element > Find Problems to check for missing points at extrema, intersecting paths, or stray points that prevent automated direction calculation.