[csswg-drafts] [css-fonts-4] @font-face src tech() multiple value syntax (#9054)

vitorroriz has just created a new issue for https://github.com/w3c/csswg-drafts:

== [css-fonts-4] @font-face src tech() multiple value syntax  ==
`tech()` accepts multiple values, being `@font-face src` descriptor syntax:

`<url> [ format(<font-format>)]? [ tech( <font-tech>#)]? | local(<font-face-name>)`

Spec says:

> If a component value is parsed correctly and is of a [font format](https://www.w3.org/TR/css-fonts-4/#font-format-definitions) or [font tech](https://www.w3.org/TR/css-fonts-4/#font-tech-definitions) that the UA supports, add it to the list of supported sources. If parsing a component value results in a parsing error or its format or tech are unsupported, do not add it to the list of supported sources.

However, I'm confused if an engine should validate `tech(A, B)` only if it supports both `A` **and** `B` technologies, or if it supports `A` **or** `B` techonologies.

I think it makes more sense to be `A` **and** `B` although I've interpreted as `A` **or** `B` at first and implemented it that way for WebKit. This resulted in a bug filed at https://bugs.webkit.org/show_bug.cgi?id=258948.

I've added a test case locally on [font-face-src-tech](https://github.com/web-platform-tests/wpt/blob/master/css/css-fonts/parsing/font-face-src-tech.html) enforcing the `and` behavior. It seems that Blink  behavior is already `and` but  Gecko behavior is `or`, but it can be that it is failing for another reason for Gecko.

WPT export _attempt_ : https://github.com/web-platform-tests/wpt/pull/40950

I'd like to clarify what's the expected behavior here. 

Use case:

```
@font face {
...
src: url("font1.otf") tech(A, B)
src: url("font2.otf") tech(A)
}
```

Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/9054 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Tuesday, 11 July 2023 11:24:38 UTC