mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
Auto merge of #16824 - Manishearth:font-size-generic-changed, r=heycam
Recalculate font-size when generic changes With the MathML refactorings this feature got lost. It would still get recalculated when explicitly specified as a keyword, but not otherwise. To avoid hitting the font metrics provider too often, we only do this when the generic changes. Otherwise we trust the existing calculated font. I swear, once Stylo lands I'm going to campaign to remove font-size from CSS entirely. 😩 <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/16824) <!-- Reviewable:end -->
This commit is contained in:
commit
29f5b226ac
1 changed files with 18 additions and 1 deletions
|
@ -891,9 +891,10 @@ ${helpers.single_keyword_system("font-variant-caps",
|
|||
}
|
||||
}
|
||||
|
||||
#[allow(unused_mut)]
|
||||
pub fn cascade_specified_font_size(context: &mut Context,
|
||||
specified_value: &SpecifiedValue,
|
||||
computed: Au,
|
||||
mut computed: Au,
|
||||
parent: &Font) {
|
||||
if let SpecifiedValue::Keyword(kw, fraction)
|
||||
= *specified_value {
|
||||
|
@ -914,6 +915,22 @@ ${helpers.single_keyword_system("font-variant-caps",
|
|||
context.mutate_style().font_size_keyword = None;
|
||||
}
|
||||
|
||||
// we could use clone_language and clone_font_family() here but that's
|
||||
// expensive. Do it only in gecko mode for now.
|
||||
% if product == "gecko":
|
||||
use gecko_bindings::structs::nsIAtom;
|
||||
// if the language or generic changed, we need to recalculate
|
||||
// the font size from the stored font-size origin information.
|
||||
if context.style().get_font().gecko().mLanguage.raw::<nsIAtom>() !=
|
||||
context.inherited_style().get_font().gecko().mLanguage.raw::<nsIAtom>() ||
|
||||
context.style().get_font().gecko().mGenericID !=
|
||||
context.inherited_style().get_font().gecko().mGenericID {
|
||||
if let Some((kw, ratio)) = context.style().font_size_keyword {
|
||||
computed = kw.to_computed_value(context).scale_by(ratio);
|
||||
}
|
||||
}
|
||||
% endif
|
||||
|
||||
let parent_unconstrained = context.mutate_style()
|
||||
.mutate_font()
|
||||
.apply_font_size(computed,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue