Skip to content

[css-fonts] font-synthesis-style is too blunt #9390

Open
@frivoal

Description

@frivoal

(this is a follow up from #8914 (comment))

The main use case for font-synthesis-style: none is to be used in conjunction with font-style: italic, when the author does not want to get a oblique font as a fallback.

However, while it generally works for that purpose, it does a little too much, and a little not enough:

  • if there is a non-synthetic oblique font face, is will be used as a fallback from italic regardless font-synthesis-style. This is unlikely to be what the author want.
  • font-synthesis-style: none also turns off the fallback from font-style: oblique to synthetic oblique. This might be desired in some cases where the author is extremely picky, but unlike with italic, which is a distinctive style, synthetic oblique fonts are often close to indistinguishable from non-synthetic ones.

What we have is a system where, if italic is missing, we always fall back to oblique, but within oblique, we can turn off synthesis, regardless of whether oblique was specifically requested or is being used as a fallback.

What I think we need is a system where if italic is missing, authors can chose whether to fall back to oblique or not, and if yes, synthetic oblique is always acceptable when non-synthetic oblique is not available. Also, we might want an ability to turn off synthetic oblique when font-style: oblique has been requested, though I doubt there's much demand for that.

Even though I'd probably name such a switch differently if we were doing it from scratch, for compat reasons, I'd suggest repurposing the existing font-synthesis-style: none to become this request not to fallback from italic to oblique. That's what it's being used for anyway.

If we do need the extra switch for turning off synthetic oblique when font-style: oblique has been requested, I'd suggest expanding the syntax of that property to font-synthesis-style: auto | none || no-oblique or some such.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Unsorted regular

    Status

    Thursday morning

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions