aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkkkkkkkk <seankao31@gmail.com>2017-01-21 11:29:36 +0800
committerkkkkkkkk <seankao31@gmail.com>2017-01-21 22:24:12 +0800
commit7c654048d24da4da1ba108f23590bff4cb7cefe8 (patch)
tree15f0508e6e98178f627ea3c128e43ca9972cd6b2
parent1b68f7946858ccd25132fe5e04923f23e269c6b0 (diff)
downloadservo-7c654048d24da4da1ba108f23590bff4cb7cefe8.tar.gz
servo-7c654048d24da4da1ba108f23590bff4cb7cefe8.zip
add font-stretch to font shorthand sub-property
modify to_css_declared function update comment and Err condition use statement split to two lines
-rw-r--r--components/style/properties/shorthand/font.mako.rs23
1 files changed, 18 insertions, 5 deletions
diff --git a/components/style/properties/shorthand/font.mako.rs b/components/style/properties/shorthand/font.mako.rs
index 7742ab11be5..f058c56a777 100644
--- a/components/style/properties/shorthand/font.mako.rs
+++ b/components/style/properties/shorthand/font.mako.rs
@@ -4,21 +4,22 @@
<%namespace name="helpers" file="/helpers.mako.rs" />
-<%helpers:shorthand name="font" sub_properties="font-style font-variant font-weight
+<%helpers:shorthand name="font" sub_properties="font-style font-variant font-weight font-stretch
font-size line-height font-family"
spec="https://drafts.csswg.org/css-fonts-3/#propdef-font">
- use properties::longhands::{font_style, font_variant, font_weight, font_size,
- line_height, font_family};
+ use properties::longhands::{font_style, font_variant, font_weight, font_stretch};
+ use properties::longhands::{font_size, line_height, font_family};
pub fn parse_value(context: &ParserContext, input: &mut Parser) -> Result<Longhands, ()> {
let mut nb_normals = 0;
let mut style = None;
let mut variant = None;
let mut weight = None;
+ let mut stretch = None;
let size;
loop {
// Special-case 'normal' because it is valid in each of
- // font-style, font-weight and font-variant.
+ // font-style, font-weight, font-variant and font-stretch.
// Leaves the values to None, 'normal' is the initial value for each of them.
if input.try(|input| input.expect_ident_matching("normal")).is_ok() {
nb_normals += 1;
@@ -42,6 +43,12 @@
continue
}
}
+ if stretch.is_none() {
+ if let Ok(value) = input.try(|input| font_stretch::parse(context, input)) {
+ stretch = Some(value);
+ continue
+ }
+ }
size = Some(try!(font_size::parse(context, input)));
break
}
@@ -49,7 +56,7 @@
fn count<T>(opt: &Option<T>) -> u8 {
if opt.is_some() { 1 } else { 0 }
}
- if size.is_none() || (count(&style) + count(&weight) + count(&variant) + nb_normals) > 3 {
+ if size.is_none() || (count(&style) + count(&weight) + count(&variant) + count(&stretch) + nb_normals) > 4 {
return Err(())
}
let line_height = if input.try(|input| input.expect_delim('/')).is_ok() {
@@ -62,6 +69,7 @@
font_style: style,
font_variant: variant,
font_weight: weight,
+ font_stretch: stretch,
font_size: size,
line_height: line_height,
font_family: Some(font_family::SpecifiedValue(family))
@@ -86,6 +94,11 @@
try!(write!(dest, " "));
}
+ if let DeclaredValue::Value(ref stretch) = *self.font_stretch {
+ try!(stretch.to_css(dest));
+ try!(write!(dest, " "));
+ }
+
try!(self.font_size.to_css(dest));
if let DeclaredValue::Value(ref height) = *self.line_height {
match *height {