Working with Strokes
A stroke gives a contour thickness by generating offset edges around it. Draw the path first, then choose its weight, end shapes, corner treatment, and distribution on either side. Keep the stroke adjustable while you refine those relationships.
The Stroke Property
A stroke is an element property. It can give body to an open skeleton or surround a closed shape. FontLab applies the stroke after the element transformation, so changing the path's transform and changing the stroke's thickness are separate operations.
Open Window > Panels > Stroke and make the intended element current. Enter a thickness, use the slider, or choose a predefined value. Changes to the active element take effect immediately. For a selection of several elements or Font-window glyph cells, use Apply to apply the panel settings to the selection.
Start with a simple open path so that you can see both sides and both ends of the generated stroke. A closed filled shape can obscure the inner part of a stroke; that is a different arrangement from a skeleton whose stroke supplies all the ink.
To turn existing contour content into a stroke element, select the intended contour and choose Element > Brush & Stroke > Add Stroke.... Set the stroke options in the dialog, confirm, and inspect the new element. This route can take the whole contour containing a selected segment, so isolate a smaller path first when only that part should receive the stroke.
Shape the ends
Caps close the open ends of the stroke. Choose the cap according to the terminal you need:
| Cap | Shape |
|---|---|
| Flat | A face perpendicular to the path direction at the end. |
| Square | A straight-ended extension beyond the skeleton endpoint. |
| Round | A curved terminal. |
| Horizontal | An end cut on a horizontal line. |
| Vertical | An end cut on a vertical line. |
| Fixed angle | An end cut at a specified angle. |

The Stroke panel exposes width, cap, join, and related settings. Here the detailed cap controls are expanded.
Expand the cap controls and turn off Link caps when the start and end need different treatments. Link them again to change both together. The collapsed cap controls also operate with linked start and end settings.
Check the terminal against the skeleton endpoint: a square or projected end can extend beyond the path. Detailed cap parameters are covered in the Stroke panel reference.
Shape the corners
The join controls determine what happens where two skeleton segments meet:
- Miter extends the outer edges until they meet in a point. The miter limit prevents an acute corner from creating an excessively long projection; beyond the limit, the join becomes beveled.
- Bevel cuts the outer corner across with a straight edge.
- Round connects the sides with a rounded join.
Inspect acute corners after changing thickness. A join that looks restrained at a light weight can protrude noticeably at a heavier one.
Distribute the stroke around the path
Centered puts equal thickness on either side. Inner and Outer put the stroke on one side. With Custom stroke location, enter the percentage drawn inside: 0% is fully outside, 100% fully inside, and 50% centered.
For an open path, the relevant sides follow the contour's direction rather than an enclosed interior. Inner corresponds to its left side and outer to its right side. Check the direction before using an asymmetric distribution or reversing the contour.
The Node panel’s Stroke properties button opens the current element’s stroke controls. Local stroke values can also be stored on individual nodes, including through the Node panel. Those values let a path swell, taper, or change the balance between its two sides. The Thickness tool exposes those controls on the canvas.
Control compression and overlaps
Vertical compression reduces the vertical dimension of the generated stroke. This can help compensate for horizontal strokes appearing heavier than vertical strokes of the same nominal thickness. Try a value around 85–95% as a starting range, then judge the result in the actual design. At 100%, no such compression is applied.
Keep skeleton overlaps draws the stroke along each contour, including portions within overlapping filled regions. Remove skeleton overlaps omits stroke portions within those regions so that the treatment follows their visible boundary. Compare the results on intersecting closed shapes before using the setting across a collection of glyphs.
Understand the simple stroke
Without Power Stroke, the generated stroke is an editable visual property, but its edge nodes are not offered as ordinary outline nodes for snapping. The skeleton remains the contour you edit. Autohinting an open skeleton does not treat that decorative envelope as a normal closed outline.
For sidebearing measurement, Font Info > Other Values > Sidebearings ignore Stroke thickness controls whether a simple stroke's thickness is ignored. With it enabled, spacing is measured from the underlying contour; with it disabled, the stroke envelope participates. Check this setting if the displayed sidebearing seems to describe the skeleton instead of the visible ink.
Expand or remove the stroke
Save a native version of the skeleton before expansion if you may want to change its weight or cap treatment later.
Choose Element > Brush & Stroke > Expand Stroke, or use the Stroke panel's expand button, to turn the generated stroke into ordinary contours. The stroke property is replaced by its outline result.
The panel's Reset stroke button removes the visible stroke property while keeping the underlying path. It does not merely restore a default thickness. Element > Brush & Stroke > Remove Stroke provides the corresponding command for removing strokes, including from a selection of glyphs.
Power Stroke
Power Stroke keeps the skeleton and stroke settings live while promoting the generated outline to interactive virtual contours. With the stroked element current, choose Element > Brush & Stroke > Make Power Stroke.
The generated edges now participate in snapping. Autohinting can operate on the generated contours, though those hints are not simply attachments to skeleton nodes; see PostScript Autohinting. Changing the skeleton or stroke settings still recalculates the result.
On a closed path with matching fill and stroke treatment, Power Stroke can form a counter from the inner stroke edge. This lets a ring-like form be built from one guiding path rather than separately drawn outer and inner contours. Inspect the filled result after conversion to confirm the intended counter.
The Power Stroke outline is included in sidebearing calculations. The setting that lets a simple stroke ignore its thickness does not turn a Power Stroke envelope back into a skeleton-only spacing measurement.
Skin and Glue do not attach to Power Stroke's virtual output as though it were an ordinary source contour. If your construction needs those filters on its skeleton, keep it as a simple stroke. If you need to attach a detail to the generated edge itself, expand a saved copy first and work with the resulting real contours.
Use Element > Expand Filters to commit the live construction, or Element > Remove Filter to remove that filter construction. Inspect the remaining source and stroke properties after removal; removing a filter and removing a stroke property are distinct operations.
Power Stroke is useful when you want adjustable skeleton-based geometry that also participates in outline editing aids. It does not guarantee that every cap, join, overlap, or thickness change will preserve a compatible node structure across masters. Check the generated results and intermediate shapes for a variable design.
Fill and stroke colors and gradients are taught in Coloring Contour Elements.