Bug 1225018 part 2 - Ensure leading for emphasis marks of text directly inside block. r=jfkthame

--HG--
extra : source : ec7d4f32bc6ba7c8ea0e0f0441fabbf6f4e15672
This commit is contained in:
Xidorn Quan 2015-12-04 11:58:59 +11:00
parent e0157f6d78
commit c66c20fcbf

View File

@ -2323,6 +2323,31 @@ nsLineLayout::VerticalAlignFrames(PerSpanData* psd)
lineWM.IsLineInverted());
nscoord blockEnd = blockStart + minimumLineBSize;
if (mStyleText->HasTextEmphasis()) {
nscoord fontMaxHeight = fm->MaxHeight();
nscoord emphasisHeight = fontMaxHeight / 2;
nscoord delta = fontMaxHeight + emphasisHeight - minimumLineBSize;
if (delta > 0) {
if (minimumLineBSize < fontMaxHeight) {
// If the leadings are negative, fill them first.
nscoord ascent = fm->MaxAscent();
nscoord descent = fm->MaxDescent();
if (lineWM.IsLineInverted()) {
Swap(ascent, descent);
}
blockStart = -ascent;
blockEnd = descent;
delta = emphasisHeight;
}
LogicalSide side = mStyleText->TextEmphasisSide(lineWM);
if (side == eLogicalSideBStart) {
blockStart -= delta;
} else {
blockEnd += delta;
}
}
}
if (blockStart < minBCoord) minBCoord = blockStart;
if (blockEnd > maxBCoord) maxBCoord = blockEnd;