style: Avoid double-applying text-zoom for keywords.

Bug: 1412743
Reviewed-by: Manishearth
This commit is contained in:
Emilio Cobos Álvarez 2017-10-31 20:20:55 +01:00
parent 1f6c16ad04
commit ed9cf6b4eb
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
3 changed files with 13 additions and 8 deletions

View file

@ -852,8 +852,7 @@ ${helpers.single_keyword_system("font-variant-caps",
context.builder.get_font().gecko().mGenericID != context.builder.get_font().gecko().mGenericID !=
context.builder.get_parent_font().gecko().mGenericID { context.builder.get_parent_font().gecko().mGenericID {
if let Some(info) = computed.keyword_info { if let Some(info) = computed.keyword_info {
computed.size = context.maybe_zoom_text(info.kw.to_computed_value(context) computed.size = info.to_computed_value(context);
.scale_by(info.factor) + info.offset)
} }
} }
% endif % endif
@ -885,8 +884,7 @@ ${helpers.single_keyword_system("font-variant-caps",
let kw_inherited_size = context.builder.get_parent_font() let kw_inherited_size = context.builder.get_parent_font()
.clone_font_size() .clone_font_size()
.keyword_info.map(|info| { .keyword_info.map(|info| {
context.maybe_zoom_text(SpecifiedValue::Keyword(info) SpecifiedValue::Keyword(info).to_computed_value(context).size
.to_computed_value(context).size)
}); });
let mut font = context.builder.take_font(); let mut font = context.builder.take_font();
font.inherit_font_size_from(context.builder.get_parent_font(), font.inherit_font_size_from(context.builder.get_parent_font(),
@ -904,9 +902,9 @@ ${helpers.single_keyword_system("font-variant-caps",
pub fn cascade_initial_font_size(context: &mut Context) { pub fn cascade_initial_font_size(context: &mut Context) {
// font-size's default ("medium") does not always // font-size's default ("medium") does not always
// compute to the same value and depends on the font // compute to the same value and depends on the font
let mut computed = longhands::font_size::get_initial_specified_value() let computed =
longhands::font_size::get_initial_specified_value()
.to_computed_value(context); .to_computed_value(context);
computed.size = context.maybe_zoom_text(computed.size);
context.builder.mutate_font().set_font_size(computed); context.builder.mutate_font().set_font_size(computed);
% if product == "gecko": % if product == "gecko":
let device = context.builder.device; let device = context.builder.device;

View file

@ -38,6 +38,13 @@ pub struct KeywordInfo {
} }
impl KeywordInfo { impl KeywordInfo {
/// Computes the final size for this font-size keyword, accounting for
/// text-zoom.
pub fn to_computed_value(&self, context: &Context) -> NonNegativeLength {
let base = context.maybe_zoom_text(self.kw.to_computed_value(context));
base.scale_by(self.factor) + context.maybe_zoom_text(self.offset)
}
/// Given a parent keyword info (self), apply an additional factor/offset to it /// Given a parent keyword info (self), apply an additional factor/offset to it
pub fn compose(self, factor: f32, offset: NonNegativeLength) -> Self { pub fn compose(self, factor: f32, offset: NonNegativeLength) -> Self {
KeywordInfo { KeywordInfo {

View file

@ -316,7 +316,7 @@ impl FontSize {
FontSize::Keyword(i) => { FontSize::Keyword(i) => {
// As a specified keyword, this is keyword derived // As a specified keyword, this is keyword derived
info = Some(i); info = Some(i);
context.maybe_zoom_text(i.kw.to_computed_value(context).scale_by(i.factor) + i.offset) i.to_computed_value(context)
} }
FontSize::Smaller => { FontSize::Smaller => {
info = compose_keyword(1. / LARGER_FONT_SIZE_RATIO); info = compose_keyword(1. / LARGER_FONT_SIZE_RATIO);