- From: Christopher Slye <cslye@adobe.com>
- Date: Mon, 15 Nov 2010 23:56:47 -0800
- To: John Daggett <jdaggett@mozilla.com>
- CC: "www-style@w3.org" <www-style@w3.org>
I'm getting concerned that this is too complex and unintuitive. I've remarked before that this is something for "type nerds", so the intended audience can withstand some complexity -- but still, I continue to find the syntax daunting (and I am a type nerd). I have to stare at the code and recall everything every time I see it.
One thing that throws me is the order of the various tokens, e.g.
font-variant: name index; /* e.g. swash: swishy 1 */
My brain wants it to be:
name: font-variant index; /* e.g. swishy: swash 1 */
In my head, I think, "The <name> is <feature>'s <index 1>".
In fact, I am also desperately trying to think of a way to simplify the syntax overall. What if the @rules were used to define feature names and their font associations, rather than feature associations for a single font? For example:
@font-feature swishy {
font-variant: swash;
font-index: MyriadPro 1, MinionPro 3;
}
@font-feature alt-g {
font-variant: stylistic;
font-index: MyriadPro 2, MinionPro 1;
}
This "reads" better for me; it says something like, "Define this <name>. It's this kind of <feature>, and it's found in each <font>'s feature <index>."
Forgive me, I'm thinking out loud and using hastily-formed syntax just to get my point across.
-Christopher
On Nov 14, 2010, at 4:49 PM, John Daggett wrote:
> During the CSS WG discussion at TPAC [1], the topic of the syntax of
> the @font-feature-values rule [2] was discussed (see original proposal
> here [3]). This rule has been proposed as a way to deal with the
> problem of font-specific numbers used in conjuction with some values
> of font-variant (e.g. styleset, swash).
>
> A example showing various aspects of the existing proposed syntax:
>
> @font-feature-values Jupiter Sans {
> swash: swishy 1, flowing 2;
> stylistic: long-k 2;
> styleset: alt-g 1, alt-m 3;
> styleset: curly-quotes 5, code-forms 4 7 9; /* additional values */
> }
>
> body { font-family: Jupiter Sans, GreatJapaneseFont, sans-serif; }
> h2 { font-variant-alternates: styleset(alt-m, curly-quotes); }
> h2:first-letter { font-variant-alternates: swash(flowing); }
>
> code { font-variant-alternates: styleset(code-forms); }
> p { font-family: Another Lovely Font; }
>
> Here the @font-feature-values rule defines values for font-specific
> alternates of a single font. When fallback occurs those values are
> ignored unless the same value name has also been defined for the
> fallback fonts.
>
> One point that was made during the F2F discussion was that the
> additive way these value definitions worked was different from the way
> normal CSS style rules function:
>
> p {
> color: red;
> color: blue; /* overrides the property set above */
> }
>
> Two alternative syntax proposals were made to work around this.
>
> Proposal 1: use curly braces to define scopes for specific value definitions:
>
> @font-feature-values Jupiter Sans {
> swash {
> swishy: 1;
> flowing: 2;
> }
> stylistic {
> long-k: 2;
> }
> styleset {
> alt-g: 1;
> alt-m: 3;
> curly-quotes: 5;
> code-forms: 4 7 9;
> }
> }
>
> Proposal 2: use @-marks next to font-specific value names rather than a colon:
>
> @font-feature-values Jupiter Sans {
> @swash swishy 1;
> @swash flowing 2;
> @stylistic long-k 2;
> @styleset alt-g 1;
> @styleset alt-m 3;
> @styleset curly-quotes 5;
> @styleset code-forms 4 7 9;
> }
>
> The first proposal is somewhat verbose but it does remove some of the
> confusion of the initial proposed syntax. The @-syntax makes the
> notation more compact but it feels a little bit like assembler macros.
>
> Questions/comments?
>
> Regards,
>
> John Daggett
>
> [1] http://www.w3.org/2010/11/02-CSS-minutes.html#item03
>
> [2] http://dev.w3.org/cvsweb/~checkout~/csswg/css3-fonts/Fonts.html?rev=1.37&content-type=text/html;%20charset=utf-8#font-feature-values
>
> [3] http://lists.w3.org/Archives/Public/www-style/2010Sep/0473.html
>
Received on Tuesday, 16 November 2010 07:57:22 UTC