I just had a look at @PabloImpallari
's stem weight calculator, and noticed something odd (I think).
So far, I've got a regular and an extrabold, but the only fields available are 'thin' and 'black', so I just use those instead.
Thin 92, Black 162, steps: 4 -> 92, 113, 137, 162 (Impallari Formula)
If I then pretend that I have a light weight at 42, and increase the steps to 7, this happens
Thin: 42, Black 162, steps 7 -> 42, 54, 71, 92, 116, 140, 162
So, in the second configuration, focussing on the last four values, the steps are different than in the first configuration (even though the regular is still at 92). Logically, I don't think this should be the case. The same problem would occur with the De Groot method. I may be wrong, though, so feel free to correct me.
If I am right, however, a better formula for calculating stem weights would be useful. I have used the following distribution for Proza and Proza Display, but only came up with the formula just now. Maybe the whole thing is nothing new, I don't know.
Assume that a light weight is 40, and a black weight is 200 (difference
is thus 160), and there are 4 steps
(in Pablo's calculator, this would be considered 5 steps. I say there are 5 values, thus 4 steps from value to value).
A linear approach looks like this:
1=40 2=80 3=120 4=160 5=200
+40 +40 +40 +40
My approach looks something like this:
1=40 2=80 3=125 4=175 5=230
+40 +45 +50 +55
Then, to make sure we stay within the 40 to 200 bounds, I multiply each of the figures in the line directly above this, by (160/190=0.84), (that's the original difference divided by the 'new' difference) which gives:
+34 +38 +42 +46
Thus, the instances become:
1=40 2=74 3=112 4=154 5=200
So far for the basic explanation. Now, to get to these instances right away, I created a formula. In the formula '#' means the number that is before the = sign. X is a value that can be freely chosen (in the example above it was 5). Y is the value of the previous (lighter) instance. Here goes:
2=Y+(difference/steps+X*(#-2)) * (difference/((steps-1)*steps)/2*X+difference)
40 + ( 40 +5 * 0 ) * ( 160 / 190 )) = 74
3=Y+(difference/steps+X*(#-2)) * (difference/((steps-1)*steps)/2*X+difference)
74 + ( 40 +5 * 1 ) * ( 160 / 190 )) = 112
Now, if wanted to add an even lighter weight, it would be set at 10, and X would still be 5, and all the other instances would remain the same. Even if I wanted to add a number of darker or lighter weights than I already have, the 'original' instances would remain the same. To illustrate:
2=10 + (190/5+0)*(190/240)=40
3=40 + 190/5+5)*(190/240)=74
I think this distribution has two advantages:
- It provides a flexible X, which determines how much you want to deviate from the linear distribution. The X can be varied for each typefamily.
- Adding lighter or darker weights does not change the distribution of the existing weights.
- A tool to do this automatically would be helpful, at least for me.
I hope my calculations and assumptions are all correct. If not, please explain in simple language. I'm somewhat brainfried. Sorry for the long post, but I did my best to explain it clearly.
The same problem would occur with the De Groot method.
This problem does not occur with the De Groot method. Example:
Thin 92, Black 162, steps: 4 -> 92, 111, 134, 162 (Lucas De Groot Formula)
Thin: 52, Black 162, steps 7 -> 52, 63, 76, 92, 111, 134, 162 (Lucas De Groot Formula)
- Manually choosing a Regular:
I will generate a lot of instances having stem values like: 60, 65, 70, 75, 80, 85, 90, 95
Print a few paragraphs using those instances and choose by eye one of them, the one that will work best as a Regular.
Depending of the style of the font the value is always different:
For a Slab you may choose a 65 or 70 unit stems for the Regular. Its quite light, but since the heavy serifs are adding mass they compensate each other. While for a sans you may want something heavier, like a 80 or 85 units stem... or whatever you like. But is always important to test how each different instance works, to be able to pick the best one.
- Manually choosing a Bold:
The same as process as before, but now for the Bold:
I will print a few paragraphs using the Regular selected in the previous step, and different Bold candidates combined together in text. Each Bold candidate having stem values 120, 130, 140, 150, 160, 170, etc.
Only once I have manually selected the Regular and the Bold, then I may use some of the formulas to get a full family approximation.
Using the formulas alone, in a vacuum, does not makes much sense. It's all about the context, and also always test the result, don't just trust any formula blindly.
Now I'm back at home and had a little more time to fully read your initial post.
I've experimented with a similar formula as yours in my initial attempts when creating the calculator. Basically your formula is a "softer" version of the Lucas formula. By "softer" I mean this:
This links goes to a early beta version of my calculator:
If you input the same values as in your example (40 to 200 in 5 steps) you will see that in the 25% column you get the same results (40, 75, 112, 154, 200 - In step 2: 74 to 75 may be a rounding difference).
All this area is explorable, and I happy to see people exploring it!
You can also make the opposite of a "softer" formula, and go deeper in the belly of the curve, and have an even bigger explorable area.
The reason I went for a Ogee curve instead of a constant, was perfectly stated by @Chris Lozos in his comment. That's also the same reason why the Lucas formula (and yours) is extendable (allowing to add more styles before and after the extremes) and mine is not (requiring people to plan in advance).
@PabloImpallari Ah, that beta link is interesting! I've been trying to figure out a way to have a curve that looks like the De Groot curve (or your curve, which is of course related), where the 'curviness' is flexible, and the results are 'extendable', which has to be possible. Not much luck so far, though. My math skills are letting me down
On a more general note:
It's an interesting 'debate' between keeping the differences between weights optically the same, thus creating nice spreadsheets and such, and just picking a set of instances by hand/eye.
The first does maybe seem a little too much involved with marketing, and not enough with actual functionality, but I like to be able to use my SemiBold next to a Light, in the same way that I would use a Bold next to a Regular, or a Black next to a Bold, etc. Having an optically 'smooth' scale of weights does ensure that. An important condition, though, is that the Bold looks perfect next to the Regular to begin with.
Also, I wonder how you pick your weights by eye? How do you know that a certain instance is the 'right' instance for a weight (apart from the obvious regular/bold combination)?
@Rainer Erich Scheichelbauer That seems too much of an honor for something that basically Pablo has already done here: http://www.impallari.com/familysteps/index-v2.php If this would be included in Glyphs, I would like to be able to just type in a percentage (or some other value), though
If you want equal proportions, stick with Lucas, if not do something else.