aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoris Zbarsky <bzbarsky@mit.edu>2017-05-24 14:23:03 -0400
committerBoris Zbarsky <bzbarsky@mit.edu>2017-05-24 16:29:50 -0400
commit8125cf89b46d0ca4d38348d9d15ee177258e0fec (patch)
tree277d980fc6f38fb04b5a703f7828ce37b5f3134c
parent98edf5d54d2c8269395379c68c1342bd867c8cf9 (diff)
downloadservo-8125cf89b46d0ca4d38348d9d15ee177258e0fec.tar.gz
servo-8125cf89b46d0ca4d38348d9d15ee177258e0fec.zip
mathvariant attributes should affect computed font style and weight in stylo.
-rw-r--r--components/style/properties/longhand/font.mako.rs3
-rw-r--r--components/style/style_adjuster.rs17
2 files changed, 19 insertions, 1 deletions
diff --git a/components/style/properties/longhand/font.mako.rs b/components/style/properties/longhand/font.mako.rs
index cd60b303436..853b6f88362 100644
--- a/components/style/properties/longhand/font.mako.rs
+++ b/components/style/properties/longhand/font.mako.rs
@@ -2191,7 +2191,7 @@ ${helpers.single_keyword("-moz-math-display",
need_clone="True")}
${helpers.single_keyword("-moz-math-variant",
- """normal bold italic bold-italic script bold-script
+ """none normal bold italic bold-italic script bold-script
fraktur double-struck bold-fraktur sans-serif
bold-sans-serif sans-serif-italic sans-serif-bold-italic
monospace initial tailed looped stretched""",
@@ -2200,6 +2200,7 @@ ${helpers.single_keyword("-moz-math-variant",
products="gecko",
spec="Internal (not web-exposed)",
animation_value_type="none",
+ need_clone="True",
needs_conversion=True)}
<%helpers:longhand name="-moz-script-min-size" products="gecko" animation_value_type="none"
diff --git a/components/style/style_adjuster.rs b/components/style/style_adjuster.rs
index 78d44c8007e..8d148c5360c 100644
--- a/components/style/style_adjuster.rs
+++ b/components/style/style_adjuster.rs
@@ -174,6 +174,22 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> {
}
}
+ /// When mathvariant is not "none", font-weight and font-style are
+ /// both forced to "normal".
+ #[cfg(feature = "gecko")]
+ fn adjust_for_mathvariant(&mut self) {
+ use properties::longhands::_moz_math_variant::computed_value::T as moz_math_variant;
+ use properties::longhands::font_style::computed_value::T as font_style;
+ use properties::longhands::font_weight::computed_value::T as font_weight;
+ if self.style.get_font().clone__moz_math_variant() != moz_math_variant::none {
+ let mut font_style = self.style.mutate_font();
+ // Sadly we don't have a nice name for the computed value
+ // of "font-weight: normal".
+ font_style.set_font_weight(font_weight::Weight400);
+ font_style.set_font_style(font_style::normal);
+ }
+ }
+
/// This implements an out-of-date spec. The new spec moves the handling of
/// this to layout, which Gecko implements but Servo doesn't.
///
@@ -299,6 +315,7 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> {
{
self.adjust_for_table_text_align();
self.adjust_for_contain();
+ self.adjust_for_mathvariant();
}
#[cfg(feature = "servo")]
{