Calibrating weights across variable widths

I'm working on variable Inconsolata, and have run into what seems to me a rather deep question about how to calibrate the axes. Basically, I'd like to make it so different widths with the same weight mix smoothly together, but I'm finding it depends on what I mean by "mix."

If I want to put letters of different widths together in the same word, then the most seamless mix has the stem weight roughly the same (possibly slightly lighter in condensed weights). But then the "color" of the condensed weight is considerably darker than the expanded.

Conversely, if I want to make the color roughly equal, then I find the stem widths need to be a lot thinner in the condensed weights, and glyphs look mismatched right next to each other.

My prototype font is in the two_axes2 branch of the Inconsolata repo, with currently only a handful of glyphs populated across all nine masters (three each for width and weight).

How do people resolve this? I have an extra constraint that I'm monospace, but I feel like I've got that pretty much in hand, at least across the weight range for the normal width.

I can provide images if it's not clear from the text above.


  • Craig Eliason
    How do people resolve this? 
    By fudging between the solutions.
  • Thomas Phinney
    Great question!

    In our current variable font project, I am simply going with keeping numeric weight constant. Doing otherwise would be especially tricky given the contrast axis in the typeface.

    However, given sufficient lead time and a less extreme project, I would be inclined to make it visually consistent, rather than numerically consistent—at least as much as possible.
  • John Hudson
    John Hudson Posts: 3,036

    The model of Weight and Width axes as registered in the OT font variations spec are what I call 'optical' axes*, as distinct from parametric axes.

    In a parametric design space, one would control weight and width (and other proportional aspects of the design) independently of each other, so changes to weight would have no impact on advance width, and changes to advance width would have no impact on stem weight. [In reality, there's usually some optical weight fudging employed e.g. for diagonals and arches in parametric width axes: I've yet to see what I would consider a purely parametric design space.]

    In the optical design space — i.e. the optical axis interaction space, which could be derived from an underlying parametric design space — what matters is the intent that the designer has regarding what the user/reader will see. In other words, your question is a design question, and the answer is going to vary depending on the nature of the typeface, your instincts as a designer, and your understanding of what your users might expect or prefer.

    I'll also say that one answer to the design question is that a font might contain multiple weight and width interaction models, but we don't currently have (registered) ways to do that which would be interoperably useful.

    * It's not a great terminology, but is the best I've come up with. @Dave Crossland prefers to talk about user-facing and hidden axes, which fits the UI flag model for axes; other terms encountered include higher level and lower level axes. My use of 'optical' derives from the Optical Size axis, in which this aspect of the axis design is explicit in the name. The Weight and Width axes are also optical in this sense.
  • John Hudson
    John Hudson Posts: 3,036
    I've yet to see what I would consider a purely parametric design space.

    I should add that I'm not sure a purely parametric design space — i.e. one in which x- and y-direction parametric axes only affect, respecively, x- and y-direction point point or metrics movement — would actually be useful, since type design — even parametric type design — is inherently optical.
  • Jacques Le Bailly
    @Raph Levien I am working on Nunito Sans at the moment together with some other designers. One of the axis is width.

    We tried to equalize the basic color between the different widths. Other that what you are opting for, to combine different weights within one word, we opted for combining text like paragraphs etc. 

    If you are interested you can find the thread on the width axis here:!topic/googlefonts-discuss/tFCoekpwBs8