Contours are visual descriptions of glyph shapes using bezier curves.

Bezier curves were introduced into type design in the 1980s as two competing flavors, PostScript (Adobe) and TrueType (Microsoft/Apple). The PostScript format used cubic bezier curves, while the TrueType used quadratic ones. The formats evolved and were merged into the OpenType format, but the distiction remains between OpenType-CFF (cubic) and OpenType-TTF (quadratic) fonts.

The Ikarus format which existed before that was based on circle segments.

Contours can be made of line and curve segments.

Line segments
are made of two on-curve points
Curve segments
are made of two on-curve points and off-curve points

Contours can be open or closed. Open contours are allowed in UFO, but not in OpenType.

Cubic and quadratic beziers

RoboFont uses cubic bezier curves by default. This is the type of contours which is most familiar to designers, since it’s used by vector design applications. Cubic beziers are part of Adobe’s PostScript page description language, and are used by OpenType-CFF fonts.

Since version 4.0, RoboFont offers full support for quadratic bezier curves. This allows for a finer control over outlines meant to be exported as TrueType fonts.

cubic curves
quadratic curves

Point smoothness

Bezier points can be smooth or unsmooth.

smooth point
segments are continuous
unsmooth point
segments are at an angle

Point smoothness can be toggled on / off by double clicking the point.

Smooth points retain continuity between segments when its handles are moved.

The angle of handle is locked to the angle of the opposing line segment of or to the angle of the handle of the oppposing curve segment.

Point representations

Points are represented by different icons depending on their smoothness and the type of segments they connect:

Unsmooth connection between line and curve segments, or two line segments
Smooth connection between line segment and curve segment
Circle without stroke
Unsmooth connection between two curve segments, handles can move independently
Circle with black stroke
Smooth connection between two curve segments
Connected control points
Quadratic bezier control point. Quadratic beziers allow for an infinite amount of control points
Control points only connected to anchor
Cubic bezier control points. Cubic beziers only allow for two control points, each one connected to an anchor

Creating and editing contours

Contours are usually created using the Bezier Tool and edited using the Editing Tool.

It’s also possible to draw inside a glyph with code – see this example.

Contours Inspector

Contour and point properties can be edited in the Points section of the Inspector.

Contextual menu

The contextual menu can be opened with a right-click using the Editing Tool. A different set of options is displayed depending on the context:

no selection
contour / multiple points
single point

Contour / Multiple points selection actions

action description
Remove Overlap Remove overlaps in the selected contours
Add Extreme Points Add extreme points to the selected contours
Close Open Contours Connects two start or end points included in the selection, giving priority to start and end points of the same open contour. The selection might include non-end points, they will be ignored
Reverse Contours Reverse selected contours
Convert Contour to Cubic Convert selected contour or segments to cubic
Convert Contour to Quadratic Convert selected contour or segments to quadratic
Break Contours If an entier contour is selected, the contour is deleted. Otherwise only the selected segments are deleted
Edit Labels Edits labels to the selected points

Single point actions

action description
Break Contour Breaks contour at the selected point
Reverse Contour Reverse contour
Set Start Point Set the selected point as starting point
Add Horizontal Guideline Adds a horizontal guidelines lying on the selected point

Last edited on 01/09/2021