Hey Typedrawers,
I recently discovered fontmake and .designspace files. I want to port Cantarell, a font family I maintain (really only a regular and a bold face), from FontForge sources to UFO plus .designspace, I'd also love to expand the weight axis from thin to black and maybe introduce more axes in the future, like width. I want to be able to generate a variable font as well as traditional instances.
My first impulse was to save effort by going for a thin and a black master and interpolating between them. That is what Source Sans Pro seems to do, a big influence on my work. However,
http://designwithfontforge.com/en-US/Bold_and_Other_Weights.html warns:
By this logic, it may seem like the best and most efficient way of
making a regular weight and all the other weights you may need, would be
to make a very thin and a hyper-bold font, then generate everything you
need from these. However, the result of that approach is likely to be
excessively bland. Instead, it is often the case that each significant
change in weight will require its own master design from which other
middle weights can be made.
Adobe's variable font prototype conspicuously uses a near-regular master near the regular instance for unexplained reasons:
https://github.com/adobe-fonts/adobe-variable-font-prototype/tree/master/DesignSpaceNotes.
So, I wonder:
- How do you approach designing a new family that spans one (weight) or possibly more axes? Especially if you also target variable fonts?
- Given that the regular face is going to be the most used one, does it makes sense to take that as the starting (intermediate) master and add the ends of the other axes on top?
- Is it feasible to add an axis like width later on?
Comments
I'm confused by the fact that you talk about designing a new family in your point #1, but you've also said you are porting Cantarell. This seems contradictory. But it's late at night, so I may be missing something.
But in any case, there is not in general anything inherently massively different about doing axis-based design than just doing design. Mind you, I may have trouble seeing what you might see as differences, because it wouldn't occur to me to NOT do axis-based design if I have at least two weights. Seriously, if I am doing more than one weight of a typeface, I would do a weight axis. If I need a slightly bolder and slightly wider variant of a font, I build a variant with weight and width axes and twiddle the values until they work best. Axis-based fonts are just a basic part of 90% of my type design, and have been for 20 years.
2) In your case, two considerations regarding making the regular weight a master, and having lighter and bolder masters as well:
- you are mostly focused on web fonts and size matters. Consider that more masters means a bigger final font file.
- I do not know how much you care about compatibility with the existing non-variable version of Cantarell. If it is important that the new variable version be pretty close, you might need an intermediate master.
3) Yes, you can add a width axis later on. BUT, first we need to know: Will you need the later version with the added width axis to be highly compatible in design with the version you create now, without the width axis? Do you need that final version to still be hightly compatible with the original Cantarell?If you need compatibility between the width-axis font and the later two-axis version, and you aren't constrained by compatibility with the existing Cantarell, then shipping the one-axis version first will put some constraints on the later two-axis version that you would not otherwise have. That would seem like a less than ideal situation, to me.
@Thomas Phinney: It was late at night for me, too, so I probably was confused and confusing.
1) I probably worded this wrong. I basically wonder how to most efficiently redo Cantarell, since it wasn't made with axis design in mind and the two faces evolved differently. My previous work hasn't helped compatibility because I was not really aware of axis design before (just the results) and FontForge's multiple master functionality sadly has been broken for years it seems.
I was unsure on how to start when I read the warning I quoted. Do I start from two masters on an axis or do I start with a regular master to optimize the common case and add the extremes? Does this even make a difference or at least sense? What if I want to add more axes, does one approach make this easier than another? Is there a difference between Adobe's Multiple Masters and a .designspace that warrants a different approach to axis design?
Source Sans Pro went for the two-masters approach, Adobe's variable font prototype uses an intermediate master and I don't know why.
2) and 3) Compatibility is unimportant and size doesn't worry me much. The version on Google Fonts is completely out of date and design compared with what ships in GNOME. Also, the maintainer of the Cantarell package in a widely used Linux distribution at some point notified me that he shipped a modified version of my generated oblique because the version of FontForge he had available in the distro didn't run the script I was using, so he just... went with something else, who cares
You should try starting with keeping the Regular as a master, and doing the lightest and boldest weights. Then see how different it looks (and whether it's a problem) if you drop the Regular master.
That said, in general I would just use two masters, and do corrections at the heaviest end as needed (per Georg's comments). The reason being that for further development, changes and extension, it's just a lot less work if you have two masters instead of three.
And as a bonus, the final file size would be smaller. I know you say that's not a priority, but it can't be a *bad* thing, right?
From a designer’s perspective, I do not understand how people really can design a font family by only designing the extremes (like the lightest weight and the heaviest weight, or the narrowest width and the widest width). For me, the real design, the “soul” of the design, is in the “middle” weight. So the extremes cannot be more than just “derivatives” of the “middle” weight. The design of the “middle” weight, should be the source of the design of the other weights—not the other way round.
So for me, designing a font family always starts with the designing of the “middle” weight (usually the Medium). Only after the design of the “middle” weight has been crystallized into its (near) final form, I start with the lightest weight. The lightest weight “lives in a completely different world” than the “middle” weight. The challenge is to get the lightest weight as similar as possible to the “middle” weight. Because the “rules” for the lightest weight fonts differ from the “rules” for the “middle” weight fonts, real similarity is impossible—so a part of the design of the “middle” weight gets lost in the lightest weight.
Only after the design of the lightest weight has been crystallized into its (near) final form, I start with the heaviest weight. The heaviest weight “lives in a completely different world” than the “middle” weight. The challenge is to get the heaviest weight as similar as possible to the “middle” weight. Because the “rules” for the heaviest weight fonts differ from the “rules” for the “middle” weight fonts, real similarity is impossible—so a part of the design of the “middle” weight gets lost in the heaviest weight.
If the font family should contain narrower and wider fonts, the design logic for these narrower and wider fonts is similar. Narrowest fonts are designed as a “derivative” of the “middle” width (= lightest weight; “middle” weight; heaviest weight). Widest fonts are also designed as a “derivative” of the “middle” width.
All these designed fonts are considered to be master fonts—to be used for the creation of intermediate fonts. My Aspira font family has been designed in this way, and has the following nine upright masters: XXXNar Thin, XXXNar Medium, XXXNar Black, Thin, Medium, Black, XWide Thin, XWide Medium, XWide Black.
Of course, all masters/fonts of a font family, should be designed/drawn carefully—whatever design approach is chosen.
Designing a font by designing two other fonts, is counter-intuitive—and for a good reason. Designing the “middle” font as a “puppeteer”, by (re)designing two extreme fonts, does not give the same degree of freedom, the same unhindered focus, as directly designing the “middle” font. The bigger the (weight, or width, or ...) distance is between those extremes, the harder it will get to “puppeteer-design” a decent derivative “middle” font. Having less masters may be technically advantageous, but at the cost of the design quality of the “middle” font. I would say: the most important “area” of a font family, the “middle”, should not be “designed” as an afterthought.
The Multiple Master approach is an approach of designing a font family by designing its extremes—which is a weakness. The Variable Font approach is an approach that expressly supports designing a font family from the “middle”.
And if you design your font using morphing component pieces (like you can in Glyphs) it's pretty easy to recycle and adapt weights anyhow.
This is something I wondered about in my original question. Do variable fonts change the design game in any way? Can I make a regular middle and design a thin, black, condensed and wide version of that middle and interpolate to a thin condensed?
Interpolation is not the same as extrapolation. In general, the result of interpolation is good/final—and the result of extrapolation demands work to get something usable.
Indeed. There is no technical reason to have any font other than the Medium as a master font, because all those other fonts can be “extrapolated” from the Medium. But that doesn’t mean that the results of such “extrapolations” will be any good.
Initially, all master fonts in my example above, except for the Medium, have been “extrapolated in some way or another, directly or indirectly”, from the Medium. The result of such an “extrapolation”, is the starting point of the designing of the master involved. Sometimes this designing is a lot of work, sometimes it is not.
But as usually implemented, it did require these things.
While I wouldn't say that Ben is "wrong," I would say that my experiences and results tend to lead me closer to Georg's line of thinking.
This description of a “designing from the extremes” approach, can be “mirrored” to a description of a “designing from the middle” approach. If you design “from the middle”, you will initially end up with three masters on the weight axis. If having less masters is very important, and if the design of the font lends itself to it (e.g. the distance between the extremes is relatively small), and if you don’t mind a possible loss of quality, then you can remove the intermediate master.
However, I am not sure whether such a removal of the intermediate master, will lead to a significant reduction in file size—if the font family is implemented as a variable font. What is, in the context of a variable font, the added value of removing an intermediate master?
When considering saving time, one might wonder: What is more work, designing two masters for an axis, or designing three? It may be obvious that the answer is “two”—but is it, really? Is it less work (1) to design two very different extreme masters, or (2) to design first a “middle” master and then to “derive-design” from it two extreme masters which are not that different from it?
The answer to this may depend on the availability and sophistication of tools which can create the first, “raw” version of a new master—based on just a single existing master. (Many current tools require two masters.) Such a tool may be more successful in creating the first, “raw” version of a new extreme master, when starting from the “middle”—compared to creating an extreme master from its opposite extreme master (because, when starting from the “middle”, it has to cover a smaller distance). Although such a tool only assists with the design of a new master, it may significantly speed up the design process.
Example of a not yet published tool that requires only one master: “https://youtu.be/uOsYMctPRNg”. (I don’t know to what extent this tool can be used, not only for single glyphs, but also for a category of glyphs or a complete font.)