Bug 935862 p1 - add flag for ex/ch unit usage. r=heycam

This commit is contained in:
John Daggett 2015-03-06 17:44:14 +09:00
parent a89929ad29
commit facc85116e
4 changed files with 14 additions and 0 deletions

View File

@ -1852,6 +1852,7 @@ nsPresContext::RebuildAllStyleData(nsChangeHint aExtraHint,
}
mUsesRootEMUnits = false;
mUsesExChUnits = false;
mUsesViewportUnits = false;
RebuildUserFontSet();
RebuildCounterStyles();

View File

@ -1026,6 +1026,14 @@ public:
mUsesRootEMUnits = aValue;
}
bool UsesExChUnits() const {
return mUsesExChUnits;
}
void SetUsesExChUnits(bool aValue) {
mUsesExChUnits = aValue;
}
bool UsesViewportUnits() const {
return mUsesViewportUnits;
}
@ -1348,6 +1356,8 @@ protected:
// Does the associated document use root-em (rem) units?
unsigned mUsesRootEMUnits : 1;
// Does the associated document use ex or ch units?
unsigned mUsesExChUnits : 1;
// Does the associated document use viewport units (vw/vh/vmin/vmax)?
unsigned mUsesViewportUnits : 1;

View File

@ -231,6 +231,7 @@ nsMathMLFrame::CalcLength(nsPresContext* aPresContext,
return NSToCoordRound(aCSSValue.GetFloatValue() * (float)font->mFont.size);
}
else if (eCSSUnit_XHeight == unit) {
aPresContext->SetUsesExChUnits(true);
nsRefPtr<nsFontMetrics> fm;
nsLayoutUtils::GetFontMetricsForStyleContext(aStyleContext,
getter_AddRefs(fm),

View File

@ -508,12 +508,14 @@ static nscoord CalcLengthWith(const nsCSSValue& aValue,
return ScaleCoordRound(aValue, float(aFontSize));
}
case eCSSUnit_XHeight: {
aPresContext->SetUsesExChUnits(true);
nsRefPtr<nsFontMetrics> fm =
GetMetricsFor(aPresContext, aStyleContext, styleFont,
aFontSize, aUseUserFontSet);
return ScaleCoordRound(aValue, float(fm->XHeight()));
}
case eCSSUnit_Char: {
aPresContext->SetUsesExChUnits(true);
nsRefPtr<nsFontMetrics> fm =
GetMetricsFor(aPresContext, aStyleContext, styleFont,
aFontSize, aUseUserFontSet);