Normalizing OpenType feature defaults in CSS

Hey everyone,

I’m new relatively new here, would really appreciate some feedback on a small CSS project.

Normalize.css is a popular CSS file that makes HTML elements appear more consistently across browsers, in line with modern standards. I’m working on an extension to that, which sets OpenType features defaults through CSS’ font-feature-settings property.

I wrote about it here: Introducing Normalize-OpenType.css

It’s available on GitHub for free under the MIT License.

Thanks for looking!


  • Interesting, and a good explanation of how font-feature settings technically work, though for me personally you almost take too many design desicions out of the hand of the designer by automating them. I could see a total overuse of ligatures where they are not needed (like in your examples actually) or over the top (every single contextual liga possible). Also, how are you handling all the prefix stuff?

    That said, this whole topic goes more in the direction of design and is probably much more interesting to web designers than belonging in a forum of typeface designers, so we should perhaps better have this discussion elsewhere.
  • PabloImpallariPabloImpallari Posts: 502
    edited June 2014
    Great project. Congrats!
    You may want to have a look at
    There is and Open Type panel that also show suggested CSS settings for each feature.
  • Indra, thanks for the feedback. I avoided any contextual alternates, stylistic sets, stylistic alternates because they’re too presumptuous, you’re right, but maybe the first example made that unclear. If someone does want to use those things (or change anything else), you can add them on top of Noramlize-OpenType.css and my defaults will be overwritten!

    My goal was definitely to take some of the decisions out of the hands of the designer, making typographic conventions there by default. I think many designers writing CSS would be fine with use these features, but not necessarily know what to use where.

    I appreciate you taking a look at it, it’s helped me for my next post about it for sure!

    Pablo, thank very much. I appreciate the resource, too. Normalize-OpenType.css actually has its own test suite, you can check it out on GitHub if you want. It’s not particularly useful for other projects, but it is how I make sure things work for this project itself.
  • Kent LewKent Lew Posts: 602
    I avoided any contextual alternates,
    FWIW, the UI suggestion for {calt} in the OpenType Layout tag registry is that it be implemented by default.

  • What Kent said. Common publishing-related apps such as Adobe InDesign, Photoshop and Illustrator all have them on by default. I think QuarkXPress does as well.

    Note that for some fonts, contextual alternates are necessary just to get default good behavior. The fonts were built with the assumption that proper typesetting would happen.

    So they really ought to be on by default.
  • This is true, and I agree about alternates, and in principle also about cligs for languages like English. It’s just that German for instance has spelling/typesetting rules that “forbid” the use of ligatures across a “word joint” in compound words. This is pretty easy to handle in manual typesetting but not as easy in automated environments. Just a tiny quibble, and not saying that I regard this German rule as ideal, though it does make reading and comprehension of long words easier. (I do think that ligatures are overrated and some overdesigned these days though.)
  • I'm increasinly looking for fonts with great spacing/fit over ligatures. I realise sometimes a lig helps with the fit, but these days it seems that the ligs ruin the spacing in some fonts.
  • John HudsonJohn Hudson Posts: 1,132
    Kenneth, I'm not sure if you've seen this yet:

    You might find the table 'State' entries (page 6) useful in determining which features are expected to be on by default.

    Ideally, of course, default typographic feature settings would be implemented at the browser level, but in the meantime your normalisation CSS is a good idea.
  • John HudsonJohn Hudson Posts: 1,132
    edited June 2014
    PS. The last section of that document, on topographical features, can be ignored. Following the layout engine developer meeting in Seattle, in April, I'm revising my thinking on this.

    Also, my general model needs to be extended in both directions: back to a step 0 script itemisation stage, and forward to a linebreaking and post-justification layout stage. But you don't need to worry about those. :)
  • D. Epar tedD. Epar ted Posts: 694
    edited June 2014
    From John's Link! "...typography is concerned with all aspects of text, from the shape of individual characters and their immediate interaction within words, up to the design of whole..."

    Opentype is only concerned with the portion of the typographic mantra of Script/Language/Character/Glyph and on to Word, where everything before that, like Glyph Feature and Size on up to Family/style are broken, and everything from Word on, is broken, then "all the way up to the design of whole documents, publication series, [Operating System User Interfaces], and dynamic text presentation systems", is pretty distant, where broken means implemented to cause the requirement for fonts or no particular import.

    A whole generation of type designers have heard of and/or met one stubborn product manager after another, (who apparently run the show), and have now fairly totally pre-ruined the landscape for simple solutions. Though I love your document, the fact of OT's failure on simple adjacency and the failure of all adjacent typographic technologies is staggering, and actually no longer approachable.

    ( I Mean: some people are celebrating fonts that still work after 30 years. I am not celebrating fonts that still work after 30 years, I mourn the apps these fonts work in, and the users for whom this is possible.)

    What's left, IMHO is to make sure the type designer has the ability to complete a source(s) satisfying the entire mantra if they need to, i.e. being an effective "first typographer", and waiting... I'm glad you have other ideas.
Sign In or Register to comment.