Skip to content

[css-fonts-4] font-variant-emoji lacks fallback algorithm or outcome definition #9291

@drott

Description

@drott

https://drafts.csswg.org/css-fonts-4/#font-variant-emoji-prop

This property is expected to affect font fallback; however, the exact nature of the interaction of font fallback with font-variant-emoji is explicitly unspecified. However, a variation selector must be included in a previous cluster as defined by the cluster matching section above.

Then further below:

text Code points are rendered as if U+FE0E VARIATION SELECTOR-15 was appended to every Presentation Participating Code Point.
emoji Code points are rendered as if U+FE0F VARIATION SELECTOR-16 was appended to every Presentation Participating Code Point.

I might be missing something, but I don't think Unicode defines the fallback algorithm for VS-15 and VS-16. To my understanding it's only well-defined for what glyphs should be selected within a font according to cmap format 14 in combination with the use of variation selectors.

Unclear sentence

"However, a variation selector must be included in a previous cluster as defined by the cluster matching section above"

I fail to understand what that means - any pointers?

Lack of algorithmic description or precise outcomes

So, if the font-variant-emoji property itself does not specify the fallback but relies on

"as if U+FE0F VARIATION SELECTOR-(15|16) was appended to every Presentation Participating Code Point"

we don't have any well-defined behavior here.

Can we find algorithmic proposals for fallback in combination with variation selectors? I think that would be a valuable addition to the spec.

If we can't succeed or agree on that, can we define a set of clear testable outcomes (preconditions and postconditions) or further details on how fallback should change with respect to this property?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Unslotted

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions