css_ast/values/fonts/
mod.rs

1// AUTO-GENERATED from w3c/csswg-drafts
2// Commit: https://github.com/w3c/csswg-drafts/commit/58eb9b3f45e73a3e4ae51b253a25fa2a11ad142c
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-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-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/// [ <family-name> | <generic-family> ]#
73/// ```
74///
75/// https://drafts.csswg.org/css-fonts-5/#font-family
76#[syntax(" [ <family-name> | <generic-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(
306//     " none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number [0,∞]> ] "
307// )]
308// #[derive(
309//     Parse,
310//     Peek,
311//     ToSpan,
312//     ToCursors,
313//     DeclarationMetadata,
314//     SemanticEq,
315//     Debug,
316//     Clone,
317//     PartialEq,
318//     Eq,
319//     PartialOrd,
320//     Ord,
321//     Hash,
322// )]
323// #[declaration_metadata(
324//     initial = "none",
325//     inherits,
326//     applies_to = Elements|Text,
327//     animation_type = Discrete,
328//     property_group = Fonts,
329//     computed_value_type = Unknown,
330//     canonical_order = "per grammar",
331// )]
332// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
333// #[cfg_attr(
334//     feature = "css_feature_data",
335//     derive(ToCSSFeature),
336//     css_feature("css.properties.font-size-adjust")
337// )]
338// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
339// #[derive(csskit_derives::NodeWithMetadata)]
340// pub struct FontSizeAdjustStyleValue;
341
342/// Represents the style value for `font-style` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-style).
343///
344/// The font-style CSS property sets the text style, with normal, italic, and oblique options.
345///
346/// The grammar is defined as:
347///
348/// ```text,ignore
349/// normal | italic | left | right | oblique <angle [-90deg,90deg]>?
350/// ```
351///
352/// https://drafts.csswg.org/css-fonts-5/#font-style
353#[syntax(" normal | italic | left | right | oblique <angle [-90deg,90deg]>? ")]
354#[derive(
355	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
356)]
357#[declaration_metadata(
358    initial = "normal",
359    inherits,
360    applies_to = Elements|Text,
361    animation_type = ByComputedValue,
362    shorthand_group = Font,
363    property_group = Fonts,
364    computed_value_type = Unknown,
365    canonical_order = "per grammar",
366)]
367#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
368#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-style"))]
369#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
370#[derive(csskit_derives::NodeWithMetadata)]
371pub enum FontStyleStyleValue {}
372
373// /// Represents the style value for `font-synthesis` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-synthesis).
374// ///
375// /// 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.
376// ///
377// /// The grammar is defined as:
378// ///
379// /// ```text,ignore
380// /// none | [ weight || style || small-caps || position]
381// /// ```
382// ///
383// /// https://drafts.csswg.org/css-fonts-5/#font-synthesis
384// #[syntax(" none | [ weight || style || small-caps || position] ")]
385// #[derive(
386//     Parse,
387//     Peek,
388//     ToSpan,
389//     ToCursors,
390//     DeclarationMetadata,
391//     SemanticEq,
392//     Debug,
393//     Clone,
394//     PartialEq,
395//     Eq,
396//     PartialOrd,
397//     Ord,
398//     Hash,
399// )]
400// #[declaration_metadata(
401//     initial = "weight style small-caps position",
402//     inherits,
403//     applies_to = Elements|Text,
404//     animation_type = Discrete,
405//     longhands = FontSynthesisPosition|FontSynthesisSmallCaps|FontSynthesisStyle|FontSynthesisWeight,
406//     property_group = Fonts,
407//     computed_value_type = Unknown,
408//     canonical_order = "per grammar",
409// )]
410// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
411// #[cfg_attr(
412//     feature = "css_feature_data",
413//     derive(ToCSSFeature),
414//     css_feature("css.properties.font-synthesis")
415// )]
416// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
417// #[derive(csskit_derives::NodeWithMetadata)]
418// pub struct FontSynthesisStyleValue;
419
420/// Represents the style value for `font-synthesis-position` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-synthesis-position).
421///
422/// 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.
423///
424/// The grammar is defined as:
425///
426/// ```text,ignore
427/// auto | none
428/// ```
429///
430/// https://drafts.csswg.org/css-fonts-5/#font-synthesis-position
431#[syntax(" auto | none ")]
432#[derive(
433	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
434)]
435#[declaration_metadata(
436    initial = "auto",
437    inherits,
438    applies_to = Elements|Text,
439    animation_type = Discrete,
440    shorthand_group = FontSynthesis,
441    property_group = Fonts,
442    computed_value_type = Unknown,
443    canonical_order = "per grammar",
444)]
445#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
446#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-synthesis-position"))]
447#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
448#[derive(csskit_derives::NodeWithMetadata)]
449pub enum FontSynthesisPositionStyleValue {}
450
451/// 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).
452///
453/// 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.
454///
455/// The grammar is defined as:
456///
457/// ```text,ignore
458/// auto | none
459/// ```
460///
461/// https://drafts.csswg.org/css-fonts-5/#font-synthesis-small-caps
462#[syntax(" auto | none ")]
463#[derive(
464	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
465)]
466#[declaration_metadata(
467    initial = "auto",
468    inherits,
469    applies_to = Elements|Text,
470    animation_type = Discrete,
471    shorthand_group = FontSynthesis,
472    property_group = Fonts,
473    computed_value_type = Unknown,
474    canonical_order = "per grammar",
475)]
476#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
477#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-synthesis-small-caps"))]
478#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
479#[derive(csskit_derives::NodeWithMetadata)]
480pub enum FontSynthesisSmallCapsStyleValue {}
481
482/// Represents the style value for `font-synthesis-style` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-synthesis-style).
483///
484/// 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.
485///
486/// The grammar is defined as:
487///
488/// ```text,ignore
489/// auto | none | oblique-only
490/// ```
491///
492/// https://drafts.csswg.org/css-fonts-5/#font-synthesis-style
493#[syntax(" auto | none | oblique-only ")]
494#[derive(
495	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
496)]
497#[declaration_metadata(
498    initial = "auto",
499    inherits,
500    applies_to = Elements|Text,
501    animation_type = Discrete,
502    shorthand_group = FontSynthesis,
503    property_group = Fonts,
504    computed_value_type = Unknown,
505    canonical_order = "per grammar",
506)]
507#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
508#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-synthesis-style"))]
509#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
510#[derive(csskit_derives::NodeWithMetadata)]
511pub enum FontSynthesisStyleStyleValue {}
512
513/// Represents the style value for `font-synthesis-weight` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-synthesis-weight).
514///
515/// The font-synthesis-weight CSS property sets whether or not the browser should synthesize bold typefaces when they're missing from the font.
516///
517/// The grammar is defined as:
518///
519/// ```text,ignore
520/// auto | none
521/// ```
522///
523/// https://drafts.csswg.org/css-fonts-5/#font-synthesis-weight
524#[syntax(" auto | none ")]
525#[derive(
526	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
527)]
528#[declaration_metadata(
529    initial = "auto",
530    inherits,
531    applies_to = Elements|Text,
532    animation_type = Discrete,
533    shorthand_group = FontSynthesis,
534    property_group = Fonts,
535    computed_value_type = Unknown,
536    canonical_order = "per grammar",
537)]
538#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
539#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-synthesis-weight"))]
540#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
541#[derive(csskit_derives::NodeWithMetadata)]
542pub enum FontSynthesisWeightStyleValue {}
543
544// /// Represents the style value for `font-variant` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variant).
545// ///
546// /// 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.
547// ///
548// /// The grammar is defined as:
549// ///
550// /// ```text,ignore
551// /// 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(<feature-value-name>) || historical-forms || styleset(<feature-value-name>#) || character-variant(<feature-value-name>#) || swash(<feature-value-name>) || ornaments(<feature-value-name>) || annotation(<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 ] ]
552// /// ```
553// ///
554// /// https://drafts.csswg.org/css-fonts-5/#font-variant
555// #[syntax(
556//     " 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(<feature-value-name>) || historical-forms || styleset(<feature-value-name>#) || character-variant(<feature-value-name>#) || swash(<feature-value-name>) || ornaments(<feature-value-name>) || annotation(<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 ] ] "
557// )]
558// #[derive(
559//     Parse,
560//     Peek,
561//     ToSpan,
562//     ToCursors,
563//     DeclarationMetadata,
564//     SemanticEq,
565//     Debug,
566//     Clone,
567//     PartialEq,
568//     Eq,
569//     PartialOrd,
570//     Ord,
571//     Hash,
572// )]
573// #[declaration_metadata(
574//     initial = "normal",
575//     inherits,
576//     applies_to = Elements|Text,
577//     animation_type = Discrete,
578//     shorthand_group = Font,
579//     longhands = FontVariantAlternates|FontVariantCaps|FontVariantEastAsian|FontVariantEmoji|FontVariantLigatures|FontVariantNumeric|FontVariantPosition,
580//     property_group = Fonts,
581//     computed_value_type = AsSpecified,
582//     canonical_order = "per grammar",
583// )]
584// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
585// #[cfg_attr(
586//     feature = "css_feature_data",
587//     derive(ToCSSFeature),
588//     css_feature("css.properties.font-variant")
589// )]
590// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
591// #[derive(csskit_derives::NodeWithMetadata)]
592// pub enum FontVariantStyleValue<'a> {}
593
594// /// Represents the style value for `font-variant-alternates` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variant-alternates).
595// ///
596// /// The font-variant-alternates CSS property, along with the @font-feature-values at-rule, chooses when to use a font's alternate glyphs.
597// ///
598// /// The grammar is defined as:
599// ///
600// /// ```text,ignore
601// /**normal | [ stylistic(<feature-value-name>) ||
602// historical-forms ||
603// styleset(<feature-value-name>#) ||
604// character-variant(<feature-value-name>#) ||
605// swash(<feature-value-name>) ||
606// ornaments(<feature-value-name>) ||
607// annotation(<feature-value-name>) ]*/
608// /// ```
609// ///
610// /// https://drafts.csswg.org/css-fonts-5/#font-variant-alternates
611// #[syntax(
612//     " normal | [ stylistic(<feature-value-name>) || historical-forms || styleset(<feature-value-name>#) || character-variant(<feature-value-name>#) || swash(<feature-value-name>) || ornaments(<feature-value-name>) || annotation(<feature-value-name>) ] "
613// )]
614// #[derive(
615//     Parse,
616//     Peek,
617//     ToSpan,
618//     ToCursors,
619//     DeclarationMetadata,
620//     SemanticEq,
621//     Debug,
622//     Clone,
623//     PartialEq,
624//     Eq,
625//     PartialOrd,
626//     Ord,
627//     Hash,
628// )]
629// #[declaration_metadata(
630//     initial = "normal",
631//     inherits,
632//     applies_to = Elements|Text,
633//     animation_type = Discrete,
634//     shorthand_group = Font,
635//     property_group = Fonts,
636//     computed_value_type = AsSpecified,
637//     canonical_order = "per grammar",
638// )]
639// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
640// #[cfg_attr(
641//     feature = "css_feature_data",
642//     derive(ToCSSFeature),
643//     css_feature("css.properties.font-variant-alternates")
644// )]
645// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
646// #[derive(csskit_derives::NodeWithMetadata)]
647// pub struct FontVariantAlternatesStyleValue<'a>;
648
649/// Represents the style value for `font-variant-caps` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variant-caps).
650///
651/// The font-variant-caps CSS property sets whether text should be displayed in small caps, petite caps, or with capital letters designed for titles.
652///
653/// The grammar is defined as:
654///
655/// ```text,ignore
656/// normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps
657/// ```
658///
659/// https://drafts.csswg.org/css-fonts-5/#font-variant-caps
660#[syntax(" normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ")]
661#[derive(
662	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
663)]
664#[declaration_metadata(
665    initial = "normal",
666    inherits,
667    applies_to = Elements|Text,
668    animation_type = Discrete,
669    shorthand_group = Font,
670    property_group = Fonts,
671    computed_value_type = AsSpecified,
672    canonical_order = "per grammar",
673)]
674#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
675#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-variant-caps"))]
676#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
677#[derive(csskit_derives::NodeWithMetadata)]
678pub enum FontVariantCapsStyleValue {}
679
680// /// 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).
681// ///
682// /// The font-variant-east-asian CSS property controls glyph substitution and sizing in East Asian text.
683// ///
684// /// The grammar is defined as:
685// ///
686// /// ```text,ignore
687// /// normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ]
688// /// ```
689// ///
690// /// https://drafts.csswg.org/css-fonts-5/#font-variant-east-asian
691// #[syntax(
692//     " normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ] "
693// )]
694// #[derive(
695//     Parse,
696//     Peek,
697//     ToSpan,
698//     ToCursors,
699//     DeclarationMetadata,
700//     SemanticEq,
701//     Debug,
702//     Clone,
703//     PartialEq,
704//     Eq,
705//     PartialOrd,
706//     Ord,
707//     Hash,
708// )]
709// #[declaration_metadata(
710//     initial = "normal",
711//     inherits,
712//     applies_to = Elements|Text,
713//     animation_type = Discrete,
714//     shorthand_group = Font,
715//     property_group = Fonts,
716//     computed_value_type = AsSpecified,
717//     canonical_order = "per grammar",
718// )]
719// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
720// #[cfg_attr(
721//     feature = "css_feature_data",
722//     derive(ToCSSFeature),
723//     css_feature("css.properties.font-variant-east-asian")
724// )]
725// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
726// #[derive(csskit_derives::NodeWithMetadata)]
727// pub struct FontVariantEastAsianStyleValue;
728
729/// Represents the style value for `font-variant-emoji` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variant-emoji).
730///
731/// The font-variant-emoji CSS property sets the default presentation for emoji characters.
732///
733/// The grammar is defined as:
734///
735/// ```text,ignore
736/// normal | text | emoji | unicode
737/// ```
738///
739/// https://drafts.csswg.org/css-fonts-5/#font-variant-emoji
740#[syntax(" normal | text | emoji | unicode ")]
741#[derive(
742	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
743)]
744#[declaration_metadata(
745    initial = "normal",
746    inherits,
747    applies_to = Elements|Text,
748    animation_type = Discrete,
749    shorthand_group = Font,
750    property_group = Fonts,
751    computed_value_type = Unknown,
752    canonical_order = "per grammar",
753)]
754#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
755#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-variant-emoji"))]
756#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
757#[derive(csskit_derives::NodeWithMetadata)]
758pub enum FontVariantEmojiStyleValue {}
759
760// /// Represents the style value for `font-variant-ligatures` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variant-ligatures).
761// ///
762// /// The font-variant-ligatures CSS property sets how characters can be visually combined for readability or stylistic reasons.
763// ///
764// /// The grammar is defined as:
765// ///
766// /// ```text,ignore
767// /// normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]
768// /// ```
769// ///
770// /// https://drafts.csswg.org/css-fonts-5/#font-variant-ligatures
771// #[syntax(
772//     " normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ] "
773// )]
774// #[derive(
775//     Parse,
776//     Peek,
777//     ToSpan,
778//     ToCursors,
779//     DeclarationMetadata,
780//     SemanticEq,
781//     Debug,
782//     Clone,
783//     PartialEq,
784//     Eq,
785//     PartialOrd,
786//     Ord,
787//     Hash,
788// )]
789// #[declaration_metadata(
790//     initial = "normal",
791//     inherits,
792//     applies_to = Elements|Text,
793//     animation_type = Discrete,
794//     shorthand_group = Font,
795//     property_group = Fonts,
796//     computed_value_type = AsSpecified,
797//     canonical_order = "per grammar",
798// )]
799// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
800// #[cfg_attr(
801//     feature = "css_feature_data",
802//     derive(ToCSSFeature),
803//     css_feature("css.properties.font-variant-ligatures")
804// )]
805// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
806// #[derive(csskit_derives::NodeWithMetadata)]
807// pub enum FontVariantLigaturesStyleValue {}
808
809// /// Represents the style value for `font-variant-numeric` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variant-numeric).
810// ///
811// /// 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.
812// ///
813// /// The grammar is defined as:
814// ///
815// /// ```text,ignore
816// /// normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]
817// /// ```
818// ///
819// /// https://drafts.csswg.org/css-fonts-5/#font-variant-numeric
820// #[syntax(
821//     " normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ] "
822// )]
823// #[derive(
824//     Parse,
825//     Peek,
826//     ToSpan,
827//     ToCursors,
828//     DeclarationMetadata,
829//     SemanticEq,
830//     Debug,
831//     Clone,
832//     PartialEq,
833//     Eq,
834//     PartialOrd,
835//     Ord,
836//     Hash,
837// )]
838// #[declaration_metadata(
839//     initial = "normal",
840//     inherits,
841//     applies_to = Elements|Text,
842//     animation_type = Discrete,
843//     shorthand_group = Font,
844//     property_group = Fonts,
845//     computed_value_type = AsSpecified,
846//     canonical_order = "per grammar",
847// )]
848// #[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
849// #[cfg_attr(
850//     feature = "css_feature_data",
851//     derive(ToCSSFeature),
852//     css_feature("css.properties.font-variant-numeric")
853// )]
854// #[cfg_attr(feature = "visitable", derive(Visitable), visit)]
855// #[derive(csskit_derives::NodeWithMetadata)]
856// pub struct FontVariantNumericStyleValue;
857
858/// Represents the style value for `font-variant-position` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variant-position).
859///
860/// The font-variant-position CSS property sets whether to use alternate glyphs for subscript and superscript text.
861///
862/// The grammar is defined as:
863///
864/// ```text,ignore
865/// normal | sub | super
866/// ```
867///
868/// https://drafts.csswg.org/css-fonts-5/#font-variant-position
869#[syntax(" normal | sub | super ")]
870#[derive(
871	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
872)]
873#[declaration_metadata(
874    initial = "normal",
875    inherits,
876    applies_to = Elements|Text,
877    animation_type = Discrete,
878    shorthand_group = Font,
879    property_group = Fonts,
880    computed_value_type = AsSpecified,
881    canonical_order = "per grammar",
882)]
883#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
884#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-variant-position"))]
885#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
886#[derive(csskit_derives::NodeWithMetadata)]
887pub enum FontVariantPositionStyleValue {}
888
889/// Represents the style value for `font-variation-settings` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-variation-settings).
890///
891/// 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.
892///
893/// The grammar is defined as:
894///
895/// ```text,ignore
896/// normal | [ <opentype-tag> <number> ]#
897/// ```
898///
899/// https://drafts.csswg.org/css-fonts-5/#font-variation-settings
900#[syntax(" normal | [ <opentype-tag> <number> ]# ")]
901#[derive(
902	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
903)]
904#[declaration_metadata(
905    initial = "normal",
906    inherits,
907    applies_to = Elements|Text,
908    animation_type = Unknown,
909    property_group = Fonts,
910    computed_value_type = Unknown,
911    canonical_order = "per grammar",
912)]
913#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
914#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-variation-settings"))]
915#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
916#[derive(csskit_derives::NodeWithMetadata)]
917pub struct FontVariationSettingsStyleValue<'a>;
918
919/// Represents the style value for `font-weight` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-weight).
920///
921/// 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.
922///
923/// The grammar is defined as:
924///
925/// ```text,ignore
926/// <font-weight-absolute> | bolder | lighter
927/// ```
928///
929/// https://drafts.csswg.org/css-fonts-5/#font-weight
930#[syntax(" <font-weight-absolute> | bolder | lighter ")]
931#[derive(
932	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
933)]
934#[declaration_metadata(
935    initial = "normal",
936    inherits,
937    applies_to = Elements|Text,
938    animation_type = ByComputedValue,
939    shorthand_group = Font,
940    property_group = Fonts,
941    computed_value_type = Unknown,
942    canonical_order = "per grammar",
943)]
944#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
945#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-weight"))]
946#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
947#[derive(csskit_derives::NodeWithMetadata)]
948pub enum FontWeightStyleValue {}
949
950/// Represents the style value for `font-width` as defined in [css-fonts-5](https://drafts.csswg.org/css-fonts-5/#font-width).
951///
952/// 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.
953///
954/// The grammar is defined as:
955///
956/// ```text,ignore
957/// normal | <percentage [0,∞]> | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded
958/// ```
959///
960/// https://drafts.csswg.org/css-fonts-5/#font-width
961#[syntax(
962	" normal | <percentage [0,∞]> | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded "
963)]
964#[derive(
965	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
966)]
967#[declaration_metadata(
968    initial = "normal",
969    inherits,
970    applies_to = Elements|Text,
971    animation_type = ByComputedValue,
972    percentages = None,
973    property_group = Fonts,
974    computed_value_type = Unknown,
975    canonical_order = "per grammar",
976)]
977#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
978#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.font-width"))]
979#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
980#[derive(csskit_derives::NodeWithMetadata)]
981pub enum FontWidthStyleValue {}