[OTVar] Registered axes candidates

John HudsonJohn Hudson Posts: 2,955
edited November 2017 in Font Technology
As explained in 'The core technology' section of my introductory article on variable fonts:
Five more-or-less common axes of variation have registered axis tags in the OpenType Font Variations specification — Weight <wght>, Width <wdth>, Optical size <opsz>, Italic <ital>, and Slant <slnt> — and these have some assumed behaviours. Font makers can also define custom axes with their own four-character tags and localisable names stored as strings in the ‘name’ table. Additional common axis tags may be registered in future, if these emerge as font makers engage with the technology.
There are always going to be some custom axes that are very much design-specific, or that apply only to a small set of fonts. Rather than trying to guess which axes might become common, the variable fonts working group decided to register only the initial five, and to watch to see if others emerge, registering these at a later date. I think this is a sensible decision, but now that people have had a chance to engage with the new technology at least mentally, I think it may be useful to try to identify potential registered axes and consider how these might best be specified. Not only will this constitute some advance work on such specification, but it can also help people engage with the data models used in variable fonts.

There are three aspects to registering a design axis that should be considered once an axis is identified as potentially common enough:
  1. Registration in the 'fvar' table, including axis tag, description, value scale, and 'normal' value.
  2. Corresponding registration in the 'STAT' table.
  3. Possible corresponding CSS Fonts Module handling (this, obviously, is external to the OT spec).

Please use this thread to propose and discuss possible candidates for registered variable font axes. I suggest using hashtags at the head of messages to identify a specific axis under discussion.
Tagged:

Comments

  • John HudsonJohn Hudson Posts: 2,955
    edited October 2016
    #grades

    Grades are a concept that came out of newspaper typesetting, and typically involve adjustments of a design intended to compensate for particular output environments — or even specific conditions within a single output environment — without adjusting the advance width of the glyphs. This enables the grade of a typeface to be changed without altering the layout.

    Examples:
    • in newspaper printing, web presses tend to require different levels of inking depending on the density of halftone images, affecting the appearance of text on pages requiring more or less ink. A typesetter could compensate for this by using a different grade of the typeface in this situation, thereby maintaining an even texture to the text overall.
    • when backlit signs are presented as both positive (dark text on light background) and negative (light text on dark background), different grades can be used to optically compensate for light spread without altering the layout of the signs.
    • different paper stocks (e.g. gloss vs matte) and printing techniques (e.g. offset vs gravure) will produce noticeably lighter or darker text. Grades can be used to compensate for this, enabling consistent text density across different paper stocks in magazines, or in the reprint of a publication on different stock or using a different printing technique.
    • likewise grades can also be used to compensate for different screen resolutions and rendering methods
    The term 'grades' was first used to describe this kind of design variation in the Poynter series of types made by Font Bureau. The term was introduced by Mike Parker and Tobias Frere-Jones as an analogue to different grades of sandpaper or motor oil, and has since been adopted by other font makers. [The concept embodied in digital font grades dates back, at least, to the mid 1930s and to the Opticon and Paragon weight variants of Linotype's Excelsior newspaper types.]

    Links with further explanation:

    As with weight, width and other variants of a typeface, grades are currently shipped as individual fonts, but would adapt well to the variable font model, and interpolation would allow for fine-tuning of grades. [I can imagine typesetting software that would be able to adjust the grade axis automatically based on press settings or adjacent image density.]

    Given the general nature of grades — i.e. they are not design-specific in the way that many custom variable font axes might be —, they strike me as likely candidate for registration in the OT spec, for 'fvar' and 'STAT' tables. I also thought this would be a useful exercise in figuring out the best way to register something that exists in some font families but is not so widespread as weight and width or with so many existing dependencies.

    With regard to dependencies, alongside registration of a Grades axis in OT variable fonts, I think it would be worthwhile to explore a corresponding CSS syntax for grades.
  • edited October 2016
    Thinking from scratch instead of reconfiguring legacy, I would say the most significant axes –for a text face– are: Apparent Size, Weight, Spacing. Width is actually not so important, and Italic is a toggle, not a continuum; a Slant axis would be great though.

    BTW separating Weight and Grade is confusing and unnecessary; better to simply have a Weight axis, along with a Uniwidth toggle.
  • Laurence PenneyLaurence Penney Posts: 49
    edited October 2016
    Hrant, please see my separate Suggestion to record in the font whether an axis affects metrics or not. It seems to me that weight adjustment is an orthogonal adjustment from grades: a user-agent should be able to handle type in various weights, and at the same time allow the user (or system configurer) to adjust the text density, or grade.
  • John HudsonJohn Hudson Posts: 2,955
    @Hrant H. Papazian

    Thinking from scratch instead of reconfiguring legacy, I would say the most significant axes –for a text face– are: Apparent Size, Weight, Spacing. Width is actually not so important, and Italic is a toggle, not a continuum; a Slant axis would be great though.

    Please see the spec for the axes that have already been registered, and previous discussions about why the Italic axis exists re. the STAT table (also, not necessarily a toggle). There is a Slant axis.

    BTW separating Weight and Grade is confusing and unnecessary; better to simply have a Weight axis, along with a Uniwidth toggle.
    That involves some problematic presumptions.

    a) It isn't the case that grade adjustments are the same as weight adjustments; indeed, not only do weight changes involving width changes differ from weight changes that retain advance widths, but grades may e.g. affect hairlines differently from typical weight changes.

    b) 'Uniwidth' is a confusing term, suggesting monospaced; 'static width' might be a better term, however...

    c) You can't enforce static widths without making appropriate design variations [see (a), above], and those need to be relative to the present weight, optical size, width, etc., i.e. relative to all the other axes in-play. So that pretty much forces one to make grades an axis, because there's no other way to manage that relationship of design variations. 

    d) The very purpose of grades is to provide adjustment for different output conditions with affecting layout. This means providing grades independent of all other factors in he layout. So if a typography has created a magazine layout that uses certain weights, widths, sizes of a typeface family, it is essential that she be able to select an appropriate grade independent of these selections, e.g. for particular paper stocks within the magazine.
  • Igor FreibergerIgor Freiberger Posts: 250
    edited October 2016
    #descender #ascender

    Those axis could be understood as controls over x-height or the length of ascenders and descenders. With variable ascd/desc user could get a font more adequate to books, magazines or newspapers. Or also to tiny or large leadings.

    Probably more important is an adjustment to multi-script fonts. With larger or shorter ascd/desc, one could harmonize environments mixing, for example, Latin and Armenian.


    #grades

    Although the logic behind a grade axis is sound, its result seems very subtle. A font with weight and optical adjustments may exhaust the possible variations produced in a grade axis (except maybe for the depth of ink traps).


    Other possible axis I can imagine is serif (from sans to fully seriffed), connection (for script fonts) and the width advance for tabular elements or fixed-width fonts. Hmmm... better not to have many ideas or I will never complete any font family.  :-)
  • John HudsonJohn Hudson Posts: 2,955
    @Igor Freiberger

    re. #descender #ascender

    Do you think these need to be independent, or would it make sense to have an #extenders axis affecting both?

    Those axis could be understood as controls over x-height or the length of ascenders and descenders.

    Oh, I think #extenders and #x-height really call for independent adjustment. They're not ultimately relative to each other, but to the default instance, so it is possible to conceive of increasing or decreasing the x-height and lengthening or shortening the extenders independently, and even of making the caps taller or shorter, all relative to the default instance. Of course, that would imply being able to use these axes to simply make the whole typeface smaller or larger.

    This leads into the troublesome area of being able to achieve identical or near-identical outcomes in multiple ways. Your point about being able to use weight and size axes to affect the same kind of outline outcomes as a grade axis is another case, although grades have that special behaviour of not affecting spacing.


    With regard to #extenders, #x-height, and your #serif and other ideas, I wonder if any of them can be expected to be common enough to qualify as registered axes? I'd be inclined to wait and see.
  • #capsize ?

    Would it be potentially useful to have a axis for controlling the relative size of capital letters? (I'm thinking of cap-heavy languages like German, for which less conspicuous uppercase forms are often desirable.)
  • Contrast? Someone's gonna do it.
  • I think there should be registered axes for things guaranteed to happen in display type. IMHO Roughness, shadow distance, and extrusion depth will happen. Having registered axes with consistent names would benefit a class of users who will primarily use variation fonts to customize headlines, rather than the dynamic web text.
  • Ray LarabieRay Larabie Posts: 1,376
    #ascender #descender is perhaps something that could be worked into a system that responds to line height and avoids collisions. Picture this in a display/ad copy type of situation. We've got a full-screen ad with a tight block of copy. There's a block of English text and the following line has a Vietnamese person's name with a high stacked accented capital letter. If a potential collision is detected, the descender on the line above could pull up to clear the accent. Or, if you have a letter with a low comma accent, the next line's ascender could duck under it. You're not necessarily changing the #ascender or #descender axis for the whole line. Maybe just one letter as a time. If you combined both axes into #extenders you'd have the top and bottom of the thorn moving at the same time. Maybe only a problem with letters that have ascenders and descenders like þ. For poster display typefaces, the software could use the independent #ascender and #descender axes to create a tight vertical interlock.
  • #ascender #descender #x-height

    Ray, I was thinking about something like this when wrote about these axes. But after John's and your messages, I did realize that we have three different controls here: diacritic position, ascender and/or descender length and x-height adjustment. The whole idea seems even more interesting now as we could jump to a new level of type refinement with this. The problem is the amount of work needed.
  • I think ascenders and descenders need to be independent, yes
  • Ray LarabieRay Larabie Posts: 1,376
    Maybe the names #ascender and #descender are misleading. If these axes are used for creating vertical clearance, there's no reason it couldn't be applied to accents or capital swash features or the tail of a Q. #headroom and....what's the opposite? #footroom?
  • edited October 2016
    Laurence, I'll check that other thread, thank you.

    I'm still not convinced Weight and Grade are worth separating. For one thing the vagaries of various reproduction media are so different that Grade cannot one-dimensionally handle them all anyway. IIRC the original application of the idea in Poynter depended on pretty specific conditions.

    Laurence: Even with a single Weight axis you could leave large differences in weight to the user/designer and let software handle small differences.

    John:
    a) If you want to handle thins differently than thicks, do that with a Contrast axis, not by making two axes that both handle weight just differently.

    b) "Static width" would be OK, but "uniwidth" and "duplexed/multiplexed" are already duking it out, and I find the former much more elegant – clear and unencumbered by the old hotmetal kludge. Don't let the person who came up with it turn you off to it... :-)  See also: https://www.fontshop.com/people/david-sudweeks/fontlists/uniwidth-typefaces

    c) It's certainly true that uniwidth enforces –sometimes drastic– design compromises elsewhere (especially towards the extremes of weight, where it can end up ruining the character of the design) but it's still a useful "singularity" that people can elect to have on or off, and any other axes in play can be duly adjusted.

    d) You simply turn Uniwidth on, and are thereafter free to change Weight or anything else to suit your needs ITO output particularities.

    Concerning vertical proportions, I disagree that ascender and descender should be separated. A typeface's character hence specific functionality are strongly tied to its vertical proportions; you can't have One Font To Rule Them All and beyond a certain point of flexibility you lose the reason you chose that typeface to begin with. Better to have an Apparent Size (not merely Extenders) axis that manages the variances in vertical alignments in some way that's rational to the design at hand. I don't believe it's fruitful to treat x-height separately from extenders. For one thing increasing only the x-height makes descenders start looking too long compared to the ascenders, and getting people to then fiddle with a Descender axis is just bad usability. It's much more elegant to respect the symbiosis of the various alignment zones.

    Igor's point about the relevance of Apparent Size to multi-script layout is very good.

    I think Capsize is a good one; not just for something like German, but helping to differentiate texts that are meant to be scanned versus read immersively, because large caps help in the former but hinder in the latter. (BTW we might even be able to dispense with the smallcaps complication...)
  • John HudsonJohn Hudson Posts: 2,955
    #grades

    @Hrant H. Papazian

    b) "Static width" would be OK, but "uniwidth" and "duplexed/multiplexed" are already duking it out, and I find the former much more elegant – clear and unencumbered by the old hotmetal kludge. Don't let the person who came up with it turn you off to it... :-)  See also: https://www.fontshop.com/people/david-sudweeks/fontlists/uniwidth-typefaces
    Yes, but 'uni' means 'one', not 'the same', so to me much more strongly suggests monospaced than proportionally spaced glyphs on multiple widths maintaining those widths when subject to other adjustments affecting outlines.


    I think you're wrong about the idea that static width can work as a toggle and the subsequent design adjustments being addressable via other axes such as weight, because the design adjustments for a given width are glyph-specific, not font-level. Also, how are the weight- or whatever-adjusted outlines to be positioned relative to the static width, given that metrics (incl. kerning) would otherwise be changing along those axes? How do you maintain proportional spacing of the adjusted outlines within the static advance widths? It's possible to define a rule for this, but then that requires something in the layout software to apply that rule, which a) is a big ask, and b) takes control of the spacing of the glyphs out of the hands of the font maker. No, it really won't do.

    A grade axis is actually the simpler method, requires nothing that isn't already defined in OT Font Variations, and gives the font maker appropriate control over the outcomes and the interaction with other axes in the design space.


    The difficulty with the grade axis isn't in making the case for it, but in determining what the scale value should be and to what degree that obliges font makers to create grade designs in a particular way. This is the technical problem, and why I think grades are a really good first case for exploring how to go about defining a new registered axis in 'fvar' and 'STAT'.
  • edited October 2016
    I don't get your confusion in the second paragraph. For a font with a Uniwidth axis/toggle, the designer will have decided on the static advance width of each character, and makes one glyph for that character that follows that width, and another glyph that's free to be the "natural" width. For each Weight extreme the former instance of each character will be its uniwidth version, while the latter is free-width. Is there something I'm missing?

    Agnostic of the particular output medium, the most a Grade can be is a modest weight adjustment that's uniwidth. To me this makes it just a Weight axis. The only reason a grade makes sense is font weights are/were discrete, and nobody wants to deal with dozens of finely gradated weights; they'd rather –optionally– tweak the grade/weight of a particular weight step. With a weight axis that becomes moot.

    If you look at the five grades of Bureau Roman below, you can see that the weight range easily spans what we'd consider Regular to Demi (to me even Bold). Which are currently regarded as discrete weights. So if you have a continuous axis, grade becomes irrelevant. Like I said, any difference in approach to contrast between one "grade" and another can be another axis: Contrast. Although at least in the case of Bureau Roman is there even a difference? I guess we would have to compare it to its bona fide Demi. 



    As an aside, I just had this memory come up: there was a difference between how Poynter approached grades versus how Bureau Roman did... I remember making a diagram comparing them, and asking David Berlow the reason for the variance, but I don't think I got a response. I'll try to find the diagram I made.
    br.jpg 65.3K
  • John HudsonJohn Hudson Posts: 2,955
    edited October 2016
    #grades

    @Hrant H. Papazian

    I don't get your confusion in the second paragraph. For a font with a Uniwidth axis/toggle, the designer will have decided on the static advance width of each character, and makes one glyph for that character that follows that width, and another glyph that's free to be the "natural" width. For each Weight extreme the former instance of each character will be its uniwidth version, while the latter is free-width. Is there something I'm missing?

    Yes. You're missing that we're talking about variable fonts, in which glyphs exist in a design space defined by one or more axes. So those two glyphs you describe need to relate to each other within that design space. They don't exist as separate outlines, but as deltas from a single outline.

    The glyph-to-glyph toggle mechanism you describe suggests something like a GSUB substitution between one glyph and another, but that won't work for static widths relative to axis adjustments, because you'd need a separate GSUB lookup for every possible position on the other axes, which are what is determining the specific width of each glyph for a particular instance in the design space.

    The only sensible way of mapping from an arbitrary instance in the design space defined by one or more axes such as Weight and Optical Size to a static width variant is to map to an additional axis. Now, it would indeed be possible to have a 'Static Width' axis, rather than, say, a grade or other axis with a static width behaviour. But it still couldn't work like a toggle, because the outline adjustments for the static widths would still need to correspond to what those widths are, as defined by the other axes.

    Feel free to make fonts with a Static Width axis, but I don't see a benefit in this approach versus a well-defined grade axis that would enable a specific kind of adjustment to glyphs for output conditions that may be akin to weight change on static widths, but that may also involve other kinds of particular adjustment for specific conditions, some of which we can't anticipate. I'd rather have a flexible mechanism than one that presumes things based on a small number of existing font families with grades.

    Agnostic of the particular output medium, the most a Grade can be is a modest weight adjustment that's uniwidth. To me this makes it just a Weight axis. The only reason a grade makes sense is font weights are/were discrete, and nobody wants to deal with dozens of finely gradated weights; they'd rather –optionally– tweak the grade/weight of a particular weight step. With a weight axis that becomes moot.

    No. Grades are specifically adjustments relative to other factors, including weight. They run in parallel to weight, and not always in a linear fashion. So, for example, the grades of a Light weight will likely scale differently from the grades of a Bold weight, excepting that both will maintain the static widths of those weights. This is exactly the sort of thing that variable font axis design space is good at doing.

    As an aside, I just had this memory come up: there was a difference between how Poynter approached grades versus how Bureau Roman did... I remember making a diagram comparing them, and asking David Berlow the reason for the variance, but I don't think I got a response. I'll try to find the diagram I made.

    I'd like to see that, and it may be a useful contribution to understanding the kind of variation that may need to be regularised in a variable font values scale for grades. As I stated at the outset of this thread, this is in part an exercise in understanding what's involved in the process of proposing a new registered axis tag.

  • > They don't exist as separate outlines, but as deltas from a single outline.

    How does that preclude what I explained? The source outline could be the uniwidth one, while the deltas could result in the free-width one.

    > The glyph-to-glyph toggle mechanism you describe suggests something like a GSUB substitution

    What about an axis with uniwidth and free-width extremes, and an intermediary master that abruptly shifts? Or maybe the axis could be a Width Divergence axis, where you get uniwidth when you set it to zero.

    The thing is, if a single font file can include a Roman and completely different Italic, I don't see how it couldn't include uniwidth and free-width cuts. They don't have to interpolate.

    > I don't see a benefit in this approach versus a well-defined grade axis

    I think the benefit is obvious: usability. I maintain that a separate axis that addresses repro fidelity and leaves weight alone is much less confusing.
  • Ray LarabieRay Larabie Posts: 1,376
    The grade axis should be grade only... no stylistic changes, no metrics changes. Ideally, machines will be adjusting the grade, not humans. The grade could adjusted automatically depending on the display. Some examples of how a grade axis with locked metrics would perform differently that a weight axis:

    Black text on white background onscreen. The user selects a block of text which creates inverted white on black.

    Navigation system night mode. It should be able to invert with no metrics changes.

    Closed captions which react to the overall brightness of the scene.
  • Ray, above I wrote: "Even with a single Weight axis you could leave large differences in weight to the user/designer and let software handle small differences." So I agree on that... but it's still just weight plus a uniwidth option.
  • Ray LarabieRay Larabie Posts: 1,376
    edited October 2016
    I don't have a lot of experience font grading but a little bit. Grade differs from weight in crucial way: horizontal metrics distortion. 

    If I change a typeface's weight, I adjust the x-height and make other stylistic changes along the way. The crossbar on the e might get quite thin when it gets heavy. The form of some shapes will change at certain weights, like the tail of the Q, the number of strokes on the $ or *. The widths of the letters change too and not in proportion with one another. If I were to lock in the metrics and adjust the weight axis, the spacing would get all messed up. 

    If I change a typeface's grade, I'm adjusting an overall thickness, almost like a stroke effect in Illustrator. When the grade is heavier, the spacing looks tighter but it's consistent. Like adjusting the tracking. I'm not making optical adjustments. There may be some vertical distortion to avoid going past the font's vertical metric limits and to keep aligned to the base-line, cap-line.

  • Ray LarabieRay Larabie Posts: 1,376
    edited October 2016
    No it's not. If you type HHHHIHIHIHIIII in light, lock the metrics and change the weight to make it heavier, what happens? The spacing around the H might not change much. The I will go right past the sidebearing. You need a separate grade axis. Some kind of metrics lock and weight axis adjustment is not going to work. I've done UI fonts with grade variations/static metrics: it's not the same as weight.

    Sorry for the double post. I had two windows open and I thought I'd lost the other post...same point basically.
  • Kent LewKent Lew Posts: 905
    there was a difference between how Poynter approached grades versus how Bureau Roman did...
    I don’t know if this is the aspect Hrant was focused upon, but one difference between the two is that the x-height of Poynter OS Text varies slightly, while Bureau Roman retains the x-height rigidly consistent across grades.

    It’s hard to demonstrate a comparison of these grade since the adjustments are quite subtle. Here are two zoomed-in screenshots of overlays.




    Note that there are five grades of Bureau Roman (Zero–Four) while only four grades of Poynter OS Text (One–Four), although both seem to cover a similar range of variation.
  • Kent LewKent Lew Posts: 905
    Oh, and for what it’s worth, in both of these series the Bold is a single set of outlines across the grades. Which is to say, the Bold weight is not actually graded. Just the Roman and Italic styles.
  • #contrast

    Some Japanese font families have a contrast axis:
  • Ray LarabieRay Larabie Posts: 1,376
    Insightful; thank you!
  • edited November 2016
    @Kent Lew Thank you for doing that! Those are much better than the comparison I had cobbled together (which I can't find anyway). I'm pretty sure the difference in x-height treatment was in fact what I had noticed.

    Increasing the x-height with weight is an optical trick to maintain apparent size. It seems FB changed its mind about doing that within grades, since Bureau Roman came after Poynter. Assuming the Bold of the former does have a larger x-height than its Regular, that is indeed a difference between Grade and Weight... at FB. But I don't know why you'd want darker grades to appear smaller, and since the Bolds didn't have grades, maybe this was a production convenience issue.

    There also seems to be another difference between the two: it looks like in Poynter contrast is reduced with increasing grade more than in BR. But that might be part of a larger weight strategy (and in any case seems less significant in this discussion).

    BTW the mention of Japanese typefaces with contrast variance reminds me of this fascinating Hangul design:

Sign In or Register to comment.