mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
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.
This commit is contained in:
parent
d1f2cdfb3d
commit
b1482437b1
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,
|
pub fn cascade_specified_font_size(context: &mut Context,
|
||||||
specified_value: &SpecifiedValue,
|
specified_value: &SpecifiedValue,
|
||||||
computed: Au,
|
mut computed: Au,
|
||||||
parent: &Font) {
|
parent: &Font) {
|
||||||
if let SpecifiedValue::Keyword(kw, fraction)
|
if let SpecifiedValue::Keyword(kw, fraction)
|
||||||
= *specified_value {
|
= *specified_value {
|
||||||
|
@ -914,6 +915,22 @@ ${helpers.single_keyword_system("font-variant-caps",
|
||||||
context.mutate_style().font_size_keyword = None;
|
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()
|
let parent_unconstrained = context.mutate_style()
|
||||||
.mutate_font()
|
.mutate_font()
|
||||||
.apply_font_size(computed,
|
.apply_font_size(computed,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue