Generating TrueType vs OpenType in FontForge

When exporting a font in FontForge, choosing between TrueType (TTF) and OpenType (OTF/CFF) determines how glyph curves are mathematically represented, how hinting instructions are stored, and how the outlines are converted during generation. While modern OpenType fonts can technically contain either TrueType or PostScript outlines, FontForge presents "TrueType" and "OpenType (CFF)" as distinct export options. Understanding how FontForge processes these two formats ensures your exported typefaces maintain design fidelity, render sharply on screen, and perform reliably across platforms.

Curve Mathematics: Cubic vs. Quadratic

The primary technical distinction during generation lies in the underlying mathematical splines used to draw the glyphs:

  • OpenType (CFF): Uses PostScript-style cubic Bézier curves (3rd-degree polynomials). Each curve segment consists of an on-curve start point, two off-curve control points, and an on-curve end point.
  • TrueType: Uses quadratic Bézier curves (2nd-degree polynomials). Each curve segment uses a single off-curve control point between on-curve points.

By default, FontForge uses cubic curves in its editing window. When you generate an OpenType (CFF) file, FontForge writes your cubic paths directly to the font file without altering the curve structure.

When you generate a TrueType file from a cubic workspace, FontForge must automatically convert the cubic curves into quadratic approximations. Because quadratic curves cannot represent complex shapes with as few points as cubic curves, this conversion often adds additional points to your contours to preserve shape fidelity.

Hinting Differences

Hinting instructs rendering engines on how to align outlines to pixel grids at small sizes:

  • OpenType (CFF) Hinting: Relies on declarative PostScript stem hints (hstem and vstem). These instruct the rasterizer about stem widths and positions. FontForge can generate these automatically, and the rasterizer decides how to apply them.
  • TrueType Hinting: Uses an imperative, low-level bytecode language (instructions). While TrueType allows for highly precise control over individual pixels and screen rendering (especially on Windows), generating high-quality TrueType instructions is complex. FontForge has an auto-instructing feature for TrueType, but converting PostScript hints into TrueType bytecode can yield unpredictable results unless carefully configured.

File Size and Node Count

Because cubic Bézier curves describe complex shapes more efficiently than quadratic curves, OpenType (CFF) exports generally yield smaller file sizes than TrueType equivalents for the same design. In contrast, TrueType fonts often contain significantly more points per glyph after the cubic-to-quadratic conversion, which slightly increases the overall font file size.

Format Wrappers in FontForge

In FontForge’s "Generate Fonts" dialogue:

  • Selecting TrueType generates a standard .ttf file containing glyf and loca tables (quadratic data).
  • Selecting OpenType (CFF) generates a standard .otf file containing a CFF (Compact Font Format) table (cubic data).

Both formats use the OpenType SFNT container structure and support advanced OpenType layout features, such as ligatures, kerning pairs, and stylistic alternates.

Which Format to Generate

  • Choose OpenType (CFF) if your design was drawn with cubic curves, will be used predominantly in graphic design and print environments, or if you want smaller file sizes without altering node counts.
  • Choose TrueType if your primary target is legacy Windows software, systems requiring TTF instruction rendering, or if you specifically engineered your glyphs using quadratic curves inside FontForge (Element > Font Info > Layers).