Skip to main content

css_ast/values/fonts/
mod.rs

1// AUTO-GENERATED from w3c/csswg-drafts
2// Commit: https://github.com/w3c/csswg-drafts/commit/e8f0279ce0beff5d70e59fa4165a668e1527fff6
3// Do not edit this file directly.
4#![allow(warnings)]
5//! https://drafts.csswg.org/css-fonts-5/
6
7mod impls;
8use super::prelude::*;
9use impls::*;
10// /// Represents the style value for `font` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font).
11// ///
12// /// The font CSS property shorthand sets multiple font properties, including style, weight, size, and font family.
13// ///
14// /// The grammar is defined as:
15// ///
16// /// ```text,ignore
17// /**[ [ <'font-style'> ||
18// <font-variant-css2> ||
19// <'font-weight'> ||
20// <font-width-css3> ]? <'font-size'> [ / <'line-height'> ]?
21// <'font-family'># ] |
22// <system-font-family-name>*/
23// /// ```
24// ///
25// /// https://drafts.csswg.org/css-fonts-5/#font
26// #[syntax(
27//     " [ [ <'font-style'> || <font-variant-css2> || <'font-weight'> || <font-width-css3> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'># ] | <system-font-family-name> "
28// )]
29// #[derive(
30//     Parse,
31//     Peek,
32//     ToSpan,
33//     ToCursors,
34//     DeclarationMetadata,
35//     SemanticEq,
36//     Debug,
37//     Clone,
38//     PartialEq,
39//     Eq,
40//     PartialOrd,
41//     Ord,
42//     Hash,
43// )]
44// #[declaration_metadata(
45//     initial = "see individual properties",
46//     inherits,
47//     applies_to = Elements|Text,
48//     animation_type = Unknown,
49//     percentages = Unknown,
50//     longhands = FontFamily|FontSize|FontStretch|FontStyle|FontVariant|FontVariantAlternates|FontVariantCaps|FontVariantEastAsian|FontVariantEmoji|FontVariantLigatures|FontVariantNumeric|FontVariantPosition|FontWeight|LineHeight,
51//     property_group = Fonts,
52//     computed_value_type = Unknown,
53//     canonical_order = "per grammar",
54// )]
55// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
56// #[cfg_attr(
57//     feature = "css_feature_data",
58//     derive(ToCSSFeature),
59//     css_feature("css.properties.font")
60// )]
61// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
62// #[derive(csskit_derives::NodeWithMetadata)]
63// pub enum FontStyleValue<'a> {}
64
65/// Represents the style value for `font-family` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-family).
66///
67/// The font-family CSS property sets the desired font face for text, along with optional fallback font faces.
68///
69/// The grammar is defined as:
70///
71/// ```text,ignore
72/// [ <font-family-name> | <generic-font-family> ]#
73/// ```
74///
75/// https://drafts.csswg.org/css-fonts-5/#font-family
76#[syntax(" [ <font-family-name> | <generic-font-family> ]# ")]
77#[derive(
78	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
79)]
80#[declaration_metadata(
81    initial = "depends on user agent",
82    inherits,
83    applies_to = Elements|Text,
84    animation_type = Discrete,
85    shorthand_group = Font,
86    property_group = Fonts,
87    computed_value_type = Unknown,
88    canonical_order = "per grammar",
89)]
90#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
91#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-family"))]
92#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
93#[derive(csskit_derives::NodeWithMetadata)]
94pub struct FontFamilyStyleValue<'a>;
95
96/// Represents the style value for `font-feature-settings` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-feature-settings).
97///
98/// The font-feature-settings CSS property sets low-level OpenType feature tags for a font. When possible, use font-variant instead.
99///
100/// The grammar is defined as:
101///
102/// ```text,ignore
103/// normal | <feature-tag-value>#
104/// ```
105///
106/// https://drafts.csswg.org/css-fonts-5/#font-feature-settings
107#[syntax(" normal | <feature-tag-value># ")]
108#[derive(
109	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
110)]
111#[declaration_metadata(
112    initial = "normal",
113    inherits,
114    applies_to = Elements|Text,
115    animation_type = Discrete,
116    property_group = Fonts,
117    computed_value_type = AsSpecified,
118    canonical_order = "per grammar",
119)]
120#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
121#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-feature-settings"))]
122#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
123#[derive(csskit_derives::NodeWithMetadata)]
124pub struct FontFeatureSettingsStyleValue<'a>;
125
126/// Represents the style value for `font-kerning` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-kerning).
127///
128/// The font-kerning CSS property sets whether kerning data from a font is used to adjust the space between letters.
129///
130/// The grammar is defined as:
131///
132/// ```text,ignore
133/// auto | normal | none
134/// ```
135///
136/// https://drafts.csswg.org/css-fonts-5/#font-kerning
137#[syntax(" auto | normal | none ")]
138#[derive(
139	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
140)]
141#[declaration_metadata(
142    initial = "auto",
143    inherits,
144    applies_to = Elements|Text,
145    animation_type = Discrete,
146    property_group = Fonts,
147    computed_value_type = AsSpecified,
148    canonical_order = "per grammar",
149)]
150#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
151#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-kerning"))]
152#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
153#[derive(csskit_derives::NodeWithMetadata)]
154pub enum FontKerningStyleValue {}
155
156/// Represents the style value for `font-language-override` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-language-override).
157///
158/// The font-language-override CSS property sets which language-specific glyphs are displayed.
159///
160/// The grammar is defined as:
161///
162/// ```text,ignore
163/// normal | <string>
164/// ```
165///
166/// https://drafts.csswg.org/css-fonts-5/#font-language-override
167#[syntax(" normal | <string> ")]
168#[derive(
169	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
170)]
171#[declaration_metadata(
172    initial = "normal",
173    inherits,
174    applies_to = Elements|Text,
175    animation_type = Discrete,
176    property_group = Fonts,
177    computed_value_type = Unknown,
178    canonical_order = "per grammar",
179)]
180#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
181#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-language-override"))]
182#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
183#[derive(csskit_derives::NodeWithMetadata)]
184pub struct FontLanguageOverrideStyleValue;
185
186/// Represents the style value for `font-optical-sizing` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-optical-sizing).
187///
188/// The font-optical-sizing CSS property sets whether text rendering is optimized for viewing at different sizes.
189///
190/// The grammar is defined as:
191///
192/// ```text,ignore
193/// auto | none
194/// ```
195///
196/// https://drafts.csswg.org/css-fonts-5/#font-optical-sizing
197#[syntax(" auto | none ")]
198#[derive(
199	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
200)]
201#[declaration_metadata(
202    initial = "auto",
203    inherits,
204    applies_to = Elements|Text,
205    animation_type = Discrete,
206    property_group = Fonts,
207    computed_value_type = Unknown,
208    canonical_order = "per grammar",
209)]
210#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
211#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-optical-sizing"))]
212#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
213#[derive(csskit_derives::NodeWithMetadata)]
214pub enum FontOpticalSizingStyleValue {}
215
216// /// Represents the style value for `font-palette` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-palette).
217// ///
218// /// The font-palette CSS property selects a color palette from the font, optionally overriding individual colors in the @font-palette-values at-rule.
219// ///
220// /// The grammar is defined as:
221// ///
222// /// ```text,ignore
223// /// normal | light | dark | <palette-identifier> | <palette-mix()>
224// /// ```
225// ///
226// /// https://drafts.csswg.org/css-fonts-5/#font-palette
227// #[syntax(" normal | light | dark | <palette-identifier> | <palette-mix()> ")]
228// #[derive(
229//     Parse,
230//     Peek,
231//     ToSpan,
232//     ToCursors,
233//     DeclarationMetadata,
234//     SemanticEq,
235//     Debug,
236//     Clone,
237//     PartialEq,
238//     Eq,
239//     PartialOrd,
240//     Ord,
241//     Hash,
242// )]
243// #[declaration_metadata(
244//     initial = "normal",
245//     inherits,
246//     applies_to = Elements|Text,
247//     animation_type = ByComputedValue,
248//     property_group = Fonts,
249//     computed_value_type = Unknown,
250//     canonical_order = "per grammar",
251// )]
252// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
253// #[cfg_attr(
254//     feature = "css_feature_data",
255//     derive(ToCSSFeature),
256//     css_feature("css.properties.font-palette")
257// )]
258// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
259// #[derive(csskit_derives::NodeWithMetadata)]
260// pub enum FontPaletteStyleValue {}
261
262/// Represents the style value for `font-size` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-size).
263///
264/// The font-size CSS property sets the text height.
265///
266/// The grammar is defined as:
267///
268/// ```text,ignore
269/// <absolute-size> | <relative-size> | <length-percentage [0,∞]> | math
270/// ```
271///
272/// https://drafts.csswg.org/css-fonts-5/#font-size
273#[syntax(" <absolute-size> | <relative-size> | <length-percentage [0,∞]> | math ")]
274#[derive(
275	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
276)]
277#[declaration_metadata(
278    initial = "medium",
279    inherits,
280    applies_to = Elements|Text,
281    animation_type = ByComputedValue,
282    percentages = Unknown,
283    shorthand_group = Font,
284    property_group = Fonts,
285    computed_value_type = AbsoluteLength,
286    canonical_order = "per grammar",
287)]
288#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
289#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-size"))]
290#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
291#[derive(csskit_derives::NodeWithMetadata)]
292pub enum FontSizeStyleValue {}
293
294/// Represents the style value for `font-size-adjust` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-size-adjust).
295///
296/// The font-size-adjust CSS property preserves apparent text size, regardless of the font used, by scaling fonts to the same size with respect to a specific metric, such as x-height. This can help make fallback fonts look the same size.
297///
298/// The grammar is defined as:
299///
300/// ```text,ignore
301/// none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number [0,∞]> ]
302/// ```
303///
304/// https://drafts.csswg.org/css-fonts-5/#font-size-adjust
305#[syntax(" none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number [0,∞]> ] ")]
306#[derive(
307	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
308)]
309#[declaration_metadata(
310    initial = "none",
311    inherits,
312    applies_to = Elements|Text,
313    animation_type = Discrete,
314    property_group = Fonts,
315    computed_value_type = Unknown,
316    canonical_order = "per grammar",
317)]
318#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
319#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-size-adjust"))]
320#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
321#[derive(csskit_derives::NodeWithMetadata)]
322pub enum FontSizeAdjustStyleValue {}
323
324/// Represents the style value for `font-style` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-style).
325///
326/// The font-style CSS property sets the text style, with normal, italic, and oblique options.
327///
328/// The grammar is defined as:
329///
330/// ```text,ignore
331/// normal | italic | left | right | oblique <angle [-90deg,90deg]>?
332/// ```
333///
334/// https://drafts.csswg.org/css-fonts-5/#font-style
335#[syntax(" normal | italic | left | right | oblique <angle [-90deg,90deg]>? ")]
336#[derive(
337	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
338)]
339#[declaration_metadata(
340    initial = "normal",
341    inherits,
342    applies_to = Elements|Text,
343    animation_type = ByComputedValue,
344    shorthand_group = Font,
345    property_group = Fonts,
346    computed_value_type = Unknown,
347    canonical_order = "per grammar",
348)]
349#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
350#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-style"))]
351#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
352#[derive(csskit_derives::NodeWithMetadata)]
353pub enum FontStyleStyleValue {}
354
355/// Represents the style value for `font-synthesis` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-synthesis).
356///
357/// The font-synthesis CSS shorthand property disables all font synthesis except the given kinds. To disable a specific kind of font synthesis, instead use the longhand properties such as font-synthesis-style and font-synthesis-weight.
358///
359/// The grammar is defined as:
360///
361/// ```text,ignore
362/// none | [ weight || style || small-caps || position]
363/// ```
364///
365/// https://drafts.csswg.org/css-fonts-5/#font-synthesis
366#[syntax(" none | [ weight || style || small-caps || position] ")]
367#[derive(
368	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
369)]
370#[declaration_metadata(
371    initial = "weight style small-caps position",
372    inherits,
373    applies_to = Elements|Text,
374    animation_type = Discrete,
375    longhands = FontSynthesisPosition|FontSynthesisSmallCaps|FontSynthesisStyle|FontSynthesisWeight,
376    property_group = Fonts,
377    computed_value_type = Unknown,
378    canonical_order = "per grammar",
379)]
380#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
381#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-synthesis"))]
382#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
383#[derive(csskit_derives::NodeWithMetadata)]
384pub struct FontSynthesisStyleValue;
385
386/// Represents the style value for `font-synthesis-position` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-synthesis-position).
387///
388/// The font-synthesis-position CSS property sets whether or not the browser should synthesize subscript and superscript typefaces when they're missing from the font.
389///
390/// The grammar is defined as:
391///
392/// ```text,ignore
393/// auto | none
394/// ```
395///
396/// https://drafts.csswg.org/css-fonts-5/#font-synthesis-position
397#[syntax(" auto | none ")]
398#[derive(
399	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
400)]
401#[declaration_metadata(
402    initial = "auto",
403    inherits,
404    applies_to = Elements|Text,
405    animation_type = Discrete,
406    shorthand_group = FontSynthesis,
407    property_group = Fonts,
408    computed_value_type = Unknown,
409    canonical_order = "per grammar",
410)]
411#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
412#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-synthesis-position"))]
413#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
414#[derive(csskit_derives::NodeWithMetadata)]
415pub enum FontSynthesisPositionStyleValue {}
416
417/// Represents the style value for `font-synthesis-small-caps` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-synthesis-small-caps).
418///
419/// The font-synthesis-small-caps CSS property sets whether or not the browser should synthesize small caps typefaces when they're missing from the font.
420///
421/// The grammar is defined as:
422///
423/// ```text,ignore
424/// auto | none
425/// ```
426///
427/// https://drafts.csswg.org/css-fonts-5/#font-synthesis-small-caps
428#[syntax(" auto | none ")]
429#[derive(
430	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
431)]
432#[declaration_metadata(
433    initial = "auto",
434    inherits,
435    applies_to = Elements|Text,
436    animation_type = Discrete,
437    shorthand_group = FontSynthesis,
438    property_group = Fonts,
439    computed_value_type = Unknown,
440    canonical_order = "per grammar",
441)]
442#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
443#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-synthesis-small-caps"))]
444#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
445#[derive(csskit_derives::NodeWithMetadata)]
446pub enum FontSynthesisSmallCapsStyleValue {}
447
448/// Represents the style value for `font-synthesis-style` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-synthesis-style).
449///
450/// The font-synthesis-style CSS property sets whether or not the browser should synthesize italic and oblique typefaces when they're missing from the font.
451///
452/// The grammar is defined as:
453///
454/// ```text,ignore
455/// auto | none | oblique-only
456/// ```
457///
458/// https://drafts.csswg.org/css-fonts-5/#font-synthesis-style
459#[syntax(" auto | none | oblique-only ")]
460#[derive(
461	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
462)]
463#[declaration_metadata(
464    initial = "auto",
465    inherits,
466    applies_to = Elements|Text,
467    animation_type = Discrete,
468    shorthand_group = FontSynthesis,
469    property_group = Fonts,
470    computed_value_type = Unknown,
471    canonical_order = "per grammar",
472)]
473#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
474#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-synthesis-style"))]
475#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
476#[derive(csskit_derives::NodeWithMetadata)]
477pub enum FontSynthesisStyleStyleValue {}
478
479/// Represents the style value for `font-synthesis-weight` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-synthesis-weight).
480///
481/// The font-synthesis-weight CSS property sets whether or not the browser should synthesize bold typefaces when they're missing from the font.
482///
483/// The grammar is defined as:
484///
485/// ```text,ignore
486/// auto | none
487/// ```
488///
489/// https://drafts.csswg.org/css-fonts-5/#font-synthesis-weight
490#[syntax(" auto | none ")]
491#[derive(
492	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
493)]
494#[declaration_metadata(
495    initial = "auto",
496    inherits,
497    applies_to = Elements|Text,
498    animation_type = Discrete,
499    shorthand_group = FontSynthesis,
500    property_group = Fonts,
501    computed_value_type = Unknown,
502    canonical_order = "per grammar",
503)]
504#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
505#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-synthesis-weight"))]
506#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
507#[derive(csskit_derives::NodeWithMetadata)]
508pub enum FontSynthesisWeightStyleValue {}
509
510// /// Represents the style value for `font-variant` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variant).
511// ///
512// /// The font-variant CSS property is a shorthand for font-variant-alternates, font-variant-caps, font-variant-east-asian, font-variant-emoji, font-variant-ligatures, font-variant-numeric, and font-variant-position.
513// ///
514// /// The grammar is defined as:
515// ///
516// /// ```text,ignore
517// /// normal | none | [ [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ] || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || [ stylistic(<font-feature-value-name>) || historical-forms || styleset(<font-feature-value-name>#) || character-variant(<font-feature-value-name>#) || swash(<font-feature-value-name>) || ornaments(<font-feature-value-name>) || annotation(<font-feature-value-name>) ] || [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ] || [ <east-asian-variant-values> || <east-asian-width-values> || ruby ] || [ sub | super ] || [ text | emoji | unicode ] ]
518// /// ```
519// ///
520// /// https://drafts.csswg.org/css-fonts-5/#font-variant
521// #[syntax(
522//     " normal | none | [ [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ] || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || [ stylistic(<font-feature-value-name>) || historical-forms || styleset(<font-feature-value-name>#) || character-variant(<font-feature-value-name>#) || swash(<font-feature-value-name>) || ornaments(<font-feature-value-name>) || annotation(<font-feature-value-name>) ] || [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ] || [ <east-asian-variant-values> || <east-asian-width-values> || ruby ] || [ sub | super ] || [ text | emoji | unicode ] ] "
523// )]
524// #[derive(
525//     Parse,
526//     Peek,
527//     ToSpan,
528//     ToCursors,
529//     DeclarationMetadata,
530//     SemanticEq,
531//     Debug,
532//     Clone,
533//     PartialEq,
534//     Eq,
535//     PartialOrd,
536//     Ord,
537//     Hash,
538// )]
539// #[declaration_metadata(
540//     initial = "normal",
541//     inherits,
542//     applies_to = Elements|Text,
543//     animation_type = Discrete,
544//     shorthand_group = Font,
545//     longhands = FontVariantAlternates|FontVariantCaps|FontVariantEastAsian|FontVariantEmoji|FontVariantLigatures|FontVariantNumeric|FontVariantPosition,
546//     property_group = Fonts,
547//     computed_value_type = AsSpecified,
548//     canonical_order = "per grammar",
549// )]
550// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
551// #[cfg_attr(
552//     feature = "css_feature_data",
553//     derive(ToCSSFeature),
554//     css_feature("css.properties.font-variant")
555// )]
556// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
557// #[derive(csskit_derives::NodeWithMetadata)]
558// pub enum FontVariantStyleValue<'a> {}
559
560// /// Represents the style value for `font-variant-alternates` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variant-alternates).
561// ///
562// /// The font-variant-alternates CSS property, along with the @font-feature-values at-rule, chooses when to use a font's alternate glyphs.
563// ///
564// /// The grammar is defined as:
565// ///
566// /// ```text,ignore
567// /**normal | [ stylistic(<font-feature-value-name>) ||
568// historical-forms ||
569// styleset(<font-feature-value-name>#) ||
570// character-variant(<font-feature-value-name>#) ||
571// swash(<font-feature-value-name>) ||
572// ornaments(<font-feature-value-name>) ||
573// annotation(<font-feature-value-name>) ]*/
574// /// ```
575// ///
576// /// https://drafts.csswg.org/css-fonts-5/#font-variant-alternates
577// #[syntax(
578//     " normal | [ stylistic(<font-feature-value-name>) || historical-forms || styleset(<font-feature-value-name>#) || character-variant(<font-feature-value-name>#) || swash(<font-feature-value-name>) || ornaments(<font-feature-value-name>) || annotation(<font-feature-value-name>) ] "
579// )]
580// #[derive(
581//     Parse,
582//     Peek,
583//     ToSpan,
584//     ToCursors,
585//     DeclarationMetadata,
586//     SemanticEq,
587//     Debug,
588//     Clone,
589//     PartialEq,
590//     Eq,
591//     PartialOrd,
592//     Ord,
593//     Hash,
594// )]
595// #[declaration_metadata(
596//     initial = "normal",
597//     inherits,
598//     applies_to = Elements|Text,
599//     animation_type = Discrete,
600//     shorthand_group = Font,
601//     property_group = Fonts,
602//     computed_value_type = AsSpecified,
603//     canonical_order = "per grammar",
604// )]
605// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
606// #[cfg_attr(
607//     feature = "css_feature_data",
608//     derive(ToCSSFeature),
609//     css_feature("css.properties.font-variant-alternates")
610// )]
611// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
612// #[derive(csskit_derives::NodeWithMetadata)]
613// pub struct FontVariantAlternatesStyleValue<'a>;
614
615/// Represents the style value for `font-variant-caps` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variant-caps).
616///
617/// The font-variant-caps CSS property sets whether text should be displayed in small caps, petite caps, or with capital letters designed for titles.
618///
619/// The grammar is defined as:
620///
621/// ```text,ignore
622/// normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps
623/// ```
624///
625/// https://drafts.csswg.org/css-fonts-5/#font-variant-caps
626#[syntax(" normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ")]
627#[derive(
628	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
629)]
630#[declaration_metadata(
631    initial = "normal",
632    inherits,
633    applies_to = Elements|Text,
634    animation_type = Discrete,
635    shorthand_group = Font,
636    property_group = Fonts,
637    computed_value_type = AsSpecified,
638    canonical_order = "per grammar",
639)]
640#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
641#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-variant-caps"))]
642#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
643#[derive(csskit_derives::NodeWithMetadata)]
644pub enum FontVariantCapsStyleValue {}
645
646// /// Represents the style value for `font-variant-east-asian` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variant-east-asian).
647// ///
648// /// The font-variant-east-asian CSS property controls glyph substitution and sizing in East Asian text.
649// ///
650// /// The grammar is defined as:
651// ///
652// /// ```text,ignore
653// /// normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ]
654// /// ```
655// ///
656// /// https://drafts.csswg.org/css-fonts-5/#font-variant-east-asian
657// #[syntax(
658//     " normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ] "
659// )]
660// #[derive(
661//     Parse,
662//     Peek,
663//     ToSpan,
664//     ToCursors,
665//     DeclarationMetadata,
666//     SemanticEq,
667//     Debug,
668//     Clone,
669//     PartialEq,
670//     Eq,
671//     PartialOrd,
672//     Ord,
673//     Hash,
674// )]
675// #[declaration_metadata(
676//     initial = "normal",
677//     inherits,
678//     applies_to = Elements|Text,
679//     animation_type = Discrete,
680//     shorthand_group = Font,
681//     property_group = Fonts,
682//     computed_value_type = AsSpecified,
683//     canonical_order = "per grammar",
684// )]
685// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
686// #[cfg_attr(
687//     feature = "css_feature_data",
688//     derive(ToCSSFeature),
689//     css_feature("css.properties.font-variant-east-asian")
690// )]
691// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
692// #[derive(csskit_derives::NodeWithMetadata)]
693// pub struct FontVariantEastAsianStyleValue;
694
695/// Represents the style value for `font-variant-emoji` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variant-emoji).
696///
697/// The font-variant-emoji CSS property sets the default presentation for emoji characters.
698///
699/// The grammar is defined as:
700///
701/// ```text,ignore
702/// normal | text | emoji | unicode
703/// ```
704///
705/// https://drafts.csswg.org/css-fonts-5/#font-variant-emoji
706#[syntax(" normal | text | emoji | unicode ")]
707#[derive(
708	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
709)]
710#[declaration_metadata(
711    initial = "normal",
712    inherits,
713    applies_to = Elements|Text,
714    animation_type = Discrete,
715    shorthand_group = Font,
716    property_group = Fonts,
717    computed_value_type = Unknown,
718    canonical_order = "per grammar",
719)]
720#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
721#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-variant-emoji"))]
722#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
723#[derive(csskit_derives::NodeWithMetadata)]
724pub enum FontVariantEmojiStyleValue {}
725
726// /// Represents the style value for `font-variant-ligatures` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variant-ligatures).
727// ///
728// /// The font-variant-ligatures CSS property sets how characters can be visually combined for readability or stylistic reasons.
729// ///
730// /// The grammar is defined as:
731// ///
732// /// ```text,ignore
733// /// normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]
734// /// ```
735// ///
736// /// https://drafts.csswg.org/css-fonts-5/#font-variant-ligatures
737// #[syntax(
738//     " normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ] "
739// )]
740// #[derive(
741//     Parse,
742//     Peek,
743//     ToSpan,
744//     ToCursors,
745//     DeclarationMetadata,
746//     SemanticEq,
747//     Debug,
748//     Clone,
749//     PartialEq,
750//     Eq,
751//     PartialOrd,
752//     Ord,
753//     Hash,
754// )]
755// #[declaration_metadata(
756//     initial = "normal",
757//     inherits,
758//     applies_to = Elements|Text,
759//     animation_type = Discrete,
760//     shorthand_group = Font,
761//     property_group = Fonts,
762//     computed_value_type = AsSpecified,
763//     canonical_order = "per grammar",
764// )]
765// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
766// #[cfg_attr(
767//     feature = "css_feature_data",
768//     derive(ToCSSFeature),
769//     css_feature("css.properties.font-variant-ligatures")
770// )]
771// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
772// #[derive(csskit_derives::NodeWithMetadata)]
773// pub enum FontVariantLigaturesStyleValue {}
774
775// /// Represents the style value for `font-variant-numeric` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variant-numeric).
776// ///
777// /// The font-variant-numeric CSS property sets how numeric characters are displayed. For example, you can align columns of numbers or use zeroes that have a slash.
778// ///
779// /// The grammar is defined as:
780// ///
781// /// ```text,ignore
782// /// normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]
783// /// ```
784// ///
785// /// https://drafts.csswg.org/css-fonts-5/#font-variant-numeric
786// #[syntax(
787//     " normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ] "
788// )]
789// #[derive(
790//     Parse,
791//     Peek,
792//     ToSpan,
793//     ToCursors,
794//     DeclarationMetadata,
795//     SemanticEq,
796//     Debug,
797//     Clone,
798//     PartialEq,
799//     Eq,
800//     PartialOrd,
801//     Ord,
802//     Hash,
803// )]
804// #[declaration_metadata(
805//     initial = "normal",
806//     inherits,
807//     applies_to = Elements|Text,
808//     animation_type = Discrete,
809//     shorthand_group = Font,
810//     property_group = Fonts,
811//     computed_value_type = AsSpecified,
812//     canonical_order = "per grammar",
813// )]
814// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
815// #[cfg_attr(
816//     feature = "css_feature_data",
817//     derive(ToCSSFeature),
818//     css_feature("css.properties.font-variant-numeric")
819// )]
820// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
821// #[derive(csskit_derives::NodeWithMetadata)]
822// pub struct FontVariantNumericStyleValue;
823
824/// Represents the style value for `font-variant-position` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variant-position).
825///
826/// The font-variant-position CSS property sets whether to use alternate glyphs for subscript and superscript text.
827///
828/// The grammar is defined as:
829///
830/// ```text,ignore
831/// normal | sub | super
832/// ```
833///
834/// https://drafts.csswg.org/css-fonts-5/#font-variant-position
835#[syntax(" normal | sub | super ")]
836#[derive(
837	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
838)]
839#[declaration_metadata(
840    initial = "normal",
841    inherits,
842    applies_to = Elements|Text,
843    animation_type = Discrete,
844    shorthand_group = Font,
845    property_group = Fonts,
846    computed_value_type = AsSpecified,
847    canonical_order = "per grammar",
848)]
849#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
850#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-variant-position"))]
851#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
852#[derive(csskit_derives::NodeWithMetadata)]
853pub enum FontVariantPositionStyleValue {}
854
855/// Represents the style value for `font-variation-settings` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variation-settings).
856///
857/// The font-variation-settings CSS property sets an "axis of variability" on a variable font, such as weight, optical size, or a custom axis defined by the typeface designer. When possible, use other CSS font properties, such as font-weight: bold. Also known as variable fonts.
858///
859/// The grammar is defined as:
860///
861/// ```text,ignore
862/// normal | [ <opentype-tag> <number> ]#
863/// ```
864///
865/// https://drafts.csswg.org/css-fonts-5/#font-variation-settings
866#[syntax(" normal | [ <opentype-tag> <number> ]# ")]
867#[derive(
868	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
869)]
870#[declaration_metadata(
871    initial = "normal",
872    inherits,
873    applies_to = Elements|Text,
874    animation_type = Unknown,
875    property_group = Fonts,
876    computed_value_type = Unknown,
877    canonical_order = "per grammar",
878)]
879#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
880#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-variation-settings"))]
881#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
882#[derive(csskit_derives::NodeWithMetadata)]
883pub struct FontVariationSettingsStyleValue<'a>;
884
885/// Represents the style value for `font-weight` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-weight).
886///
887/// The font-weight CSS property controls the thickness of a font. It is set explicitly with the keyword bold or a number, or relative to the inherited thickness with the keywords bolder or lighter.
888///
889/// The grammar is defined as:
890///
891/// ```text,ignore
892/// <font-weight-absolute> | bolder | lighter
893/// ```
894///
895/// https://drafts.csswg.org/css-fonts-5/#font-weight
896#[syntax(" <font-weight-absolute> | bolder | lighter ")]
897#[derive(
898	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
899)]
900#[declaration_metadata(
901    initial = "normal",
902    inherits,
903    applies_to = Elements|Text,
904    animation_type = ByComputedValue,
905    shorthand_group = Font,
906    property_group = Fonts,
907    computed_value_type = Unknown,
908    canonical_order = "per grammar",
909)]
910#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
911#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-weight"))]
912#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
913#[derive(csskit_derives::NodeWithMetadata)]
914pub enum FontWeightStyleValue {}
915
916/// Represents the style value for `font-width` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-width).
917///
918/// The font-width CSS property selects a font face from a font family based on width, either by a keyword such as condensed or a percentage.
919///
920/// The grammar is defined as:
921///
922/// ```text,ignore
923/// normal | <percentage [0,∞]> | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded
924/// ```
925///
926/// https://drafts.csswg.org/css-fonts-5/#font-width
927#[syntax(
928	" normal | <percentage [0,∞]> | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded "
929)]
930#[derive(
931	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
932)]
933#[declaration_metadata(
934    initial = "normal",
935    inherits,
936    applies_to = Elements|Text,
937    animation_type = ByComputedValue,
938    percentages = None,
939    property_group = Fonts,
940    computed_value_type = Unknown,
941    canonical_order = "per grammar",
942)]
943#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
944#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-width"))]
945#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
946#[derive(csskit_derives::NodeWithMetadata)]
947pub enum FontWidthStyleValue {}