Scale Stroke Thicknesses Independently in FontForge
Yes, you can scale stroke thicknesses independently in FontForge, but the method depends on whether your glyph is made of open skeletal paths or finalized, closed outlines. FontForge provides dedicated tools to adjust horizontal and vertical weights independently without universally distorting the entire glyph, primarily through the Expand Stroke tool for open paths and the Change Weight tool for closed outlines.
Method 1: Adjusting Outlines Using "Change Weight"
Most font files (such as OTF or TTF) consist of closed vector outlines rather than raw strokes. To adjust horizontal and vertical stroke thicknesses independently on standard vector outlines:
- Select the glyphs you want to modify in the Font View, or open a specific glyph in the Glyph Window.
- Navigate to Element > Style > Change Weight... (or Embolden in older versions).
- Choose the algorithm that fits your font design (such as LCG or Custom).
- Set the Stroke Width values. Untick any uniform constraint options if present to specify different values for horizontal and vertical expansions.
- Enter your desired values for horizontal stems and vertical stems independently.
- Click OK to apply the transformation. FontForge will push the contours outward or inward based on the independent axes you set.
Method 2: Adjusting Open Paths Using "Expand Stroke"
If you design fonts using single-line open paths (skeletal strokes) rather than filled contours, you can apply strokes with independent X and Y thicknesses:
- Select the open paths in the Glyph Window.
- Go to Element > Expand Stroke....
- In the dialog, set the Stroke Width.
- Under the nib shape settings, select an elliptical or rectangular nib rather than a circular one.
- Set different values for the nib's width (X-axis) and height (Y-axis). You can also adjust the angle if you need calligraphic variation.
- Click OK. FontForge will convert the single path into an expanded, closed outline with asymmetrical stroke thickness.
Avoiding Non-Uniform Scaling
Do not use the standard Element > Transformations > Transform > Scale tool if your goal is solely to alter stroke thickness. Scaling the X and Y axes independently via the Transform menu stretches the entire character envelope, altering the glyph's height, width, and proportions along with the strokes. Use Change Weight for outlines or Expand Stroke for skeletal paths to ensure only the stroke weight changes while preserving the fundamental character architecture.