Skip to main content

Pattern design best practices

Here is a list of best practices when designing patterns:

Re-use measurements

When designing patterns, re-use the measurements that are already in use as much as possible. Nobody wins when every pattern requires its own set of measurements, or names certain measurements differently.

tip
See our measurements page for standard measurement names

The measurements reference page contains all our standard measurement names.

Re-use options

The same arguments for re-using measurements are also (somewhat) true for options.

While your pattern may require some very specific options, there's probably a bunch that are similar to other patterns. Re-use those names.

As in, bicepsEase exists. So don't go creating an upperArmEase option.

Re-use CSS classes

While you can style your pattern however you want, try to re-use the CSS class names that are in use in our default @freesewing/plugin-theme plugin.

Doing so will ensure consistent styling for patterns.

Respect draft settings

Apart from the pattern options that you configure for your pattern, all FreeSewing patterns have a set of draft settings that can be tweaked by the user.

While many of these will automatically be handled by FreeSewing, there are some that you will need to take into account while developing your pattern. They are:

Complete

The complete setting is a boolean that is either true or false.

Its goal is to determine whether we should draft a complete pattern which includes elements such as seam allowance lines, labels, and markings for buttons and notches, or if the pattern should include the part outlines only.

It is your job when developing your pattern to ensure that the pattern checks the complete setting and includes or omits the appropriate elements based on the setting's value.

Paperless

The paperless setting is a boolean that is either true or false.

A paperless pattern is a pattern that has extra dimension markings so users can trace or transfer the pattern onto fabric or paper without having the need to print it.

It is your job when developing your pattern to ensure that the pattern checks the paperless setting and includes or omits the dimensions based on the setting's value.

Seam allowance

The sa setting is a number that controls the seam allowance width.

Unless sa is zero, patterns are drafted with seam allowance lines included.

It is your job when developing your pattern to ensure that the pattern checks the sa setting and includes or omits the seam allowance lines based on the setting's value.

tip
Use a multiple of sa for your hem allowance

Resist the temptation to use an absolute value for any seam allowance, including at the hem.

Instead, always use a multiple of the sa value. This will help to ensure that the seam allowances will scale to appropriate values when the pattern is scaled up or down to giant or doll sizes.

Use percentage options where possible

When designing patterns, you should refrain from using absolute values.

That 6 cm ease you add might be fine for all scenarios you tested. But, then somebody comes around who is twice your size or who is making clothes for a doll, and things will go off the rails.

Don't be tempted to add absolute values to your patterns, as they don't scale. Instead, embrace percentages as options. By using values that are percentages of measurements, the values will scale and continue to work as the measurements scale up or down.

tip
Use the doll and giant tests

To check how well your pattern scales, you can use the doll and giant tests by sampling the pattern for 3 measurements sets:

  1. A set of measurements from an average person (the person)
  2. A set of measurements 1/10th of an average person (the doll)
  3. A set of measurements 3 times that of an average person (the giant)

A well-designed pattern will scale a factor 10 down or 3 up and still hold its shape. If your pattern makes assumptions about size, these tests will show that.

FreeSewing's development environment provides these tests out of the box, so you can see their results at the click of a button.

Use translation keys, not text

Don't insert literal text in your patterns. Instead, insert a key that can then be translated.

For example, if you want to put "Finish with bias tape" on your pattern, don't be tempted to do this:

path.seam.attr("data-text", "Finish with bias tape");

That (English) string is now hard-coded in your pattern. As FreeSewing supports translation out of the box, it would be a real shame not to make use of it.

Instead, insert a key to identify the string:

path.seam.attr("data-text", "finishWithBiasTape");

This way, different strings for different languages can be associated with the key, allowing translated text to be used.

You can find and browse the translations and available translation keys for each design in the design's i18n folder on GitHub.

Construct paths counter-clockwise

Construct your paths counter-clockwise (anti-clockwise). You have to pick a direction anyway, and going counter-clockwise is a bit of a convention.

This applies both to naming points (specifically the control points of curves) and the order in which you define your points.

Obviously, the order in which you add points to your code needs to take a backseat to the logic of your code. But typically what you're doing is constructing an outline of (a part of) a garment.

So pick a point, and make your way around counter-clockwise.

When naming control points for curves, re-use the name of the point they are attached to and add Cp1 to the control point before and Cp2 to the control point after the point if, once again, you follow your path counter-clockwise.

For example:

part.paths.seam = new Path()
.move(points.hemCenter)
.line(points.hemSide)
.line(points.waistSide)
.curve(points.waistSideCp2, points.armholeCp1, points.armhole)
tip
This convention helps with Path.offset() too

Constructing a path counter-clockwise will also ensure that the path offset goes outwards rather than inwards.