Family Stem Weights Calculator

This is a simple little tool that will help you plan the stems weights values across a 9 styles family.
Input your thinnest and boldest stems values, and it will show you a wide range of possibilities to get you started.

The first column will provide steps of equal size.
The last column will provide progressive steps.
The 3 columns in the middle will provide intermediate steps.

This could turn out to be very useful. I especially like the way there are references at the foot of the page.

I was plotting stem weight graphs recently, from large type families (including Soho, Apex, Guardian, Unit), and found that, instead of the weight differences increasing more in the blacker weights, the difference dropped off again, making an s-shaped curve with smaller differences at the extremes and larger steps between the weights around the middle. I supposed that this because the optical effect is bigger in the extreme weights: hairlines are noticeably different of course with only a few units added to stems, and presumably the same applies to hairline counters in the fattest weights. In the middle of a family, a couple of units will neither increase the stem weight nor decrease the counter sizes enough to warrant the inclusion of a new weight.

This suggests to me that there are very divergent models of how the weight can be added, and wonder if there are any other references about this, or whether other models can be included in the calculator.

I wonder if a preview function would be especially neat, using a live multi-master to generate instances? (Though that may be horrible to put together!)

So I figured to field-test this thing. Ernestine* doesn't have a lot of weights (only 4) but the exact determination of those four weights was a result of an unusual degree of back-and-forth refinement between three different parties (Nina, FSI and myself) so I think it makes for a decent test case.

My suspicion that this algorithm is not complex enough -even within a text range- was confirmed; weights work largely in pairs, something not incorporated into this algorithm. One would need to use this algorithm in a more sophisticated way, possibly by running two parallel weight ranges that somehow intermesh. I did however manage to come up with a progression that nicely yields Ernestine's numbers:

I put 53 (the Light) and 120 (the Bold) and 4 steps. The "25%" column came up with a Regular stem value (74) that matched, however the value for the Demi was way too light. So I ran it again from 74 to 120, but again with 4 steps (not 3) and then the "Luc(as) Style" column had the correct third value (the second interpolated one) which is 102.

I believe I can reuse this progression to emulate the nice weight distribution of Ernestine in the future, but how to extend it to a face with more than 4 weights?

The one that is not progressive, is your last one (120).
And that's totally OK. As it's a (subjective/personal/what look best to the eye) decision.
Other people may say that your Light is not light enough, or that your bold is not bold enough, or whatever... And at the end, it's a matter of (personal preference/what looks best to your eye/what work best in a certain situation or medium may not work in another different situation or medium) as there is not perfect solutions that can please all people in all different situations in all different mediums.

This little tool is not intended to provide (out-of-the-box/plug and play) values. That's way it shows all the columns, instead of showing just 1 magic solution.
As stated on the About text: "We will show you a wide range of possibilities to get you started ... The final decision, of course, is up to you!"

What I have in mind for version3, is something like this:
First Column: Equal Steps
Last Column: Progressive Steps
And only one column in the middle, with a "slider" that you can use to move form 1% to 99% (replacing the 25%, 50% and 75% columns) so you can really explore all the space between Equal Steps and Luc(as) theory.

Why the slider?

The first and last columns (Equal Steps and Lucas) are giving you only the limits

Currently in version2: the 25%, 50% and 75% columns, let you explore SOME of the intermediate space

In the next version, the Slider, will allow you to explore ALL the intermediate space (green area). Basically, because the best options may be at 66%, 72%, 82% or whatever other value (depending on how big or how small is the Thin-Black difference).

I was plotting stem weight graphs recently, from large type families (including Soho, Apex, Guardian, Unit), and found that, instead of the weight differences increasing more in the blacker weights, the difference dropped off again, making an s-shaped curve with smaller differences at the extremes and larger steps between the weights around the middle.

Bendy, that's interesting.
Can you send me your data? Maybe we can find some replicable patterns.

Hmm, that seems a bit fishy :) You've just fitted the equations around the maximum and minimum values for each data set, which means each progression pretty much has to fall within the area enclosed by the two equations.

Here's a graph showing aggregated data. All data is aligned on step 4, the regular weight, as I'm uncomfortable with the way the graphs above show Luc(as)'s method to prefer relatively lighter middle weights (when in fact I think they're preferring relatively heavier dark weights). I've added a trend line in black (following the median values for each weight), which clearly shows less variance between weights at the extremes.

Hopefully others can add their findings, as I'm certain we need more data, especially for families with 9 or more weights.

Hmm, that seems a bit fishy :) You've just fitted the equations around the maximum and minimum values for each data set, which means each progression pretty much has to fall within the area enclosed by the two equations.

Bendy, the equations are not fitted. What I've done for each family, is to show the real weight distribution compared to Equal Steps and Lucas Steps calculated specifically for each family, in order to focus on the curve shape. So that it can be isolated of the number of steps, or of the Black-Thin difference.

The result shows a lot of different approaches, but overall I think that it's starting to show a general S-shape trend:
- Stay near Lucas values in the Thinnest weights.
- Move closer to 50% for the middle weights.
- Move closer to Equal Steps in the bolder weights.

However, there are notable exceptions:
- Soho: Inverted S-shape (Thinner weights close to Equal steps, Medium close to 50%, Black close to Lucas).
- Myriad: Really big steps from Thin to Medium, Really short steps form Medium to Black.
- Apex, Freight, Stag: Short steps first, then a big jump, then short steps again.

We both agree that more data will help. But the number of weights should not be of much importance, as the formula has to work well with any number of steps, font 3 to ∞

The reason I think the number of weights is important is simply to show more of the curve (there's less data at weights 1 and 9 on my graph). Families with 9 or more weights will get into the really bold bolds and the really thin hairlines, and so reveal whether the progression curves upward or downward at those extremes. It's entirely possible all three models (equal steps, Luc(as) and the s-shaped curve) are correct, just concerned with different weight ranges, looking at the curve with different levels of zoom if you like.

Soho is a strange thing. I would almost want to exclude that ultrablack from analysis for being such an outlier, with stems about 80 units wider than the median for any other fattest weight. It could even have been designed independently. Myriad is definitely interesting, as it seems to contradict all three theories by adding larger steps in the middle of the family. Those other three have the big jump exactly at the regular weight, either to the next weight down or the next weight up. As Hrant pointed out, those adjacent weights are not designed to be used together, which must factor in to the weight progression.