mdpb = Font.Cacheable("≈/MDNichrome0.7-Black.otf")
@blog_entry("2021-07-19")
def header(r, headline):
return (StSt(headline.replace("e I", "e\nI"), mdpb, 100, leading=30)
.align(r)
.f(hsl(0.75, 0.9, 0.45)))
Sometimes you buy a non-variable font and that font has a bunch of different weights, and then you think to yourself, I wish this font was a variable font so I could animate the weight-axis. That’s what happened to me when I was making the latest installment of the “Holy Trinities” series.
I knew I wanted to use Mass Driver’s Nichrome for the bumpers, and — to give everything a little motion — I thought it’d be fun to animate the weight of Nichrome from its lightest to its heaviest. Unfortunately (and understandably, given what a pain variable fonts are to make), Nichrome has no variable version.
But when Coldtype is your offroad typographical vehicle of choice, that’s no obstacle! The only real obstacle is: are the weights of the font interpolatable, i.e. do they have the same point-structure. If they do (and this can vary based on what you’re attempting to typeset), then you’re in luck.
And if you’re using Coldtype, it’s not so difficult to find out if two weights are interpolatable. Here’s some code similar to the code I used to make the bumper graphics for Holy Trinities:
from coldtype import *
Style.RegisterShorthandPrefix("≈", "~/Type/fonts/fonts")
mdpb = Font.Cacheable("≈/MDNichrome0.7-Black.otf")
mdpl = Font.Cacheable("≈/MDNichrome0.7-Light.otf")
r = Rect(1080, 1080/2)
def build(font, **kwargs):
return StSt(txt, font, 250, leading=50).align(r).pen()
txt = "Testing"
a = StSt(txt, mdpl, 250, leading=50).align(r).pen()
b = StSt(txt, mdpb, 250, leading=50).align(r).pen()
@animation(r, timeline=Timeline(60))
def nonvarinterp_test(f):
return a.interpolate(f.e("eeio", 1), b).f(hsl(0.65))
If these weights aren’t interpolatable, you’ll get an Exception when you attempt to run the .interpolate call, but in this case, with these two weights, everything should be all good!
Here’s the result of that 👆 code:
Is this a good idea?
Something I’ve heard from type designers is that variable fonts can be kind of a bummer to work on, because you need to make sure that every possible interpolation/variation looks good. Not just the “masters,” but everything in between. This is an understandable preoccupation for a type designer, given the field’s roots in print and static graphic design. The type designer fears the graphic designer who brings up a variable font, then pulls the weight slider to some strange value where the S-curve crumples under interpolation and then uses that for all the display typography on a poster; what gets printed is a poor representation of the type designer’s font. So rather than spend a hundred hours adjusting their workflow and tweaking the points so they interpolate correctly, the type designer decides simply to skip the variable font altogether — that is, to never give the graphic designer a chance to crumple the S. Pretty understandable!
But in my mind, popping open the Illustrator variable font palette to refine the weight of a font is not very interesting. For me (since my mind is mostly on motion design), the “killer app” of variable fonts is the ability to ask a font to move — the chance to design with motion embedded in the font itself; i.e. to get from Point A to Point B in style.
To unpack that a little: in the example above — interpolating from the lightest Nichrome to the heaviest — the point is not to show you the intermediate states because I think they’re interesting. In fact, the only two weights you really “see” are the lightest and the heaviest. What happens in between is there solely as an effect — as something that you experience but you do not have the opportunity to dwell on. After all, those intermediate interpolated states exist only for a few frames.
In general, I think the idea of a momentary effect is not something the type design world has ever seen before. (With the notable exception of optical camera-based typographic effects in the work of mid-century title pioneers like Jean Fouchet or Iginio Lardani.) Should a type designer worry about what the S looks like as it interpolates? Yes, although only to a degree. Motion design (and film editing more generally) is a world in which the psychology of the momentary is often exploited — a world in which “good enough” goes a long way. (Which explains the entire world of clever editing on TikTok, or the effectiveness of the whip pan for “interpolating“ between two entirely different scenes in film.) Yes, someone can always pause the video and step through frame-by-frame. Does that matter? No. And if someone does do that, an odd interpolation is a nice reward. After all, it is very fun to frame-step older films and find all the “good enough” oddities lurking there.
