mirror of
https://github.com/servo/servo.git
synced 2025-08-07 14:35:33 +01:00
style: Add ascent-, descent- and line-gap-override descriptors to the style system
Differential Revision: https://phabricator.services.mozilla.com/D109287
This commit is contained in:
parent
5ef832b778
commit
1cd257d54f
2 changed files with 50 additions and 1 deletions
|
@ -19,7 +19,7 @@ use crate::values::specified::font::SpecifiedFontFeatureSettings;
|
||||||
use crate::values::specified::font::SpecifiedFontStyle;
|
use crate::values::specified::font::SpecifiedFontStyle;
|
||||||
#[cfg(feature = "gecko")]
|
#[cfg(feature = "gecko")]
|
||||||
use crate::values::specified::font::SpecifiedFontVariationSettings;
|
use crate::values::specified::font::SpecifiedFontVariationSettings;
|
||||||
use crate::values::specified::font::{AbsoluteFontWeight, FontStretch};
|
use crate::values::specified::font::{AbsoluteFontWeight, FontStretch, MetricsOverride};
|
||||||
use crate::values::specified::url::SpecifiedUrl;
|
use crate::values::specified::url::SpecifiedUrl;
|
||||||
use crate::values::specified::Angle;
|
use crate::values::specified::Angle;
|
||||||
#[cfg(feature = "gecko")]
|
#[cfg(feature = "gecko")]
|
||||||
|
@ -418,6 +418,15 @@ macro_rules! is_descriptor_enabled {
|
||||||
("font-variation-settings") => {
|
("font-variation-settings") => {
|
||||||
static_prefs::pref!("layout.css.font-variations.enabled")
|
static_prefs::pref!("layout.css.font-variations.enabled")
|
||||||
};
|
};
|
||||||
|
("ascent-override") => {
|
||||||
|
static_prefs::pref!("layout.css.font-metrics-overrides.enabled")
|
||||||
|
};
|
||||||
|
("descent-override") => {
|
||||||
|
static_prefs::pref!("layout.css.font-metrics-overrides.enabled")
|
||||||
|
};
|
||||||
|
("line-gap-override") => {
|
||||||
|
static_prefs::pref!("layout.css.font-metrics-overrides.enabled")
|
||||||
|
};
|
||||||
($name:tt) => {
|
($name:tt) => {
|
||||||
true
|
true
|
||||||
};
|
};
|
||||||
|
@ -576,6 +585,15 @@ font_face_descriptors! {
|
||||||
|
|
||||||
/// The language override of this font face.
|
/// The language override of this font face.
|
||||||
"font-language-override" language_override / mFontLanguageOverride: font_language_override::SpecifiedValue,
|
"font-language-override" language_override / mFontLanguageOverride: font_language_override::SpecifiedValue,
|
||||||
|
|
||||||
|
/// The ascent override for this font face.
|
||||||
|
"ascent-override" ascent_override / mAscentOverride: MetricsOverride,
|
||||||
|
|
||||||
|
/// The descent override for this font face.
|
||||||
|
"descent-override" descent_override / mDescentOverride: MetricsOverride,
|
||||||
|
|
||||||
|
/// The line-gap override for this font face.
|
||||||
|
"line-gap-override" line_gap_override / mLineGapOverride: MetricsOverride,
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2205,6 +2205,37 @@ impl Parse for VariationValue<Number> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A metrics override value for a @font-face descriptor
|
||||||
|
///
|
||||||
|
/// https://drafts.csswg.org/css-fonts/#font-metrics-override-desc
|
||||||
|
#[derive(Clone, Copy, Debug, MallocSizeOf, Parse, PartialEq, SpecifiedValueInfo, ToCss, ToShmem)]
|
||||||
|
pub enum MetricsOverride {
|
||||||
|
/// A non-negative `<percentage>` of the computed font size
|
||||||
|
Override(NonNegativePercentage),
|
||||||
|
/// Normal metrics from the font.
|
||||||
|
Normal,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl MetricsOverride {
|
||||||
|
#[inline]
|
||||||
|
/// Get default value with `normal`
|
||||||
|
pub fn normal() -> MetricsOverride {
|
||||||
|
MetricsOverride::Normal
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The ToComputedValue implementation, used for @font-face descriptors.
|
||||||
|
///
|
||||||
|
/// Valid override percentages must be non-negative; we return -1.0 to indicate
|
||||||
|
/// the absence of an override (i.e. 'normal').
|
||||||
|
#[inline]
|
||||||
|
pub fn compute(&self) -> ComputedPercentage {
|
||||||
|
match *self {
|
||||||
|
MetricsOverride::Normal => ComputedPercentage(-1.0),
|
||||||
|
MetricsOverride::Override(percent) => ComputedPercentage(percent.0.get()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(
|
#[derive(
|
||||||
Clone,
|
Clone,
|
||||||
Copy,
|
Copy,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue