mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-07 09:54:42 +00:00
Bug 1696721 part 3 - Fix intrinsic isize calculation for ruby frame. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D109228
This commit is contained in:
parent
91de536124
commit
735ba70f94
@ -16,6 +16,7 @@
|
||||
#include "mozilla/WritingModes.h"
|
||||
#include "nsLineLayout.h"
|
||||
#include "nsPresContext.h"
|
||||
#include "nsContainerFrameInlines.h"
|
||||
#include "nsRubyBaseContainerFrame.h"
|
||||
#include "nsRubyTextContainerFrame.h"
|
||||
|
||||
@ -59,23 +60,25 @@ nsresult nsRubyFrame::GetFrameName(nsAString& aResult) const {
|
||||
/* virtual */
|
||||
void nsRubyFrame::AddInlineMinISize(gfxContext* aRenderingContext,
|
||||
nsIFrame::InlineMinISizeData* aData) {
|
||||
for (nsIFrame* frame = this; frame; frame = frame->GetNextInFlow()) {
|
||||
auto handleChildren = [aRenderingContext](auto frame, auto data) {
|
||||
for (RubySegmentEnumerator e(static_cast<nsRubyFrame*>(frame)); !e.AtEnd();
|
||||
e.Next()) {
|
||||
e.GetBaseContainer()->AddInlineMinISize(aRenderingContext, aData);
|
||||
e.GetBaseContainer()->AddInlineMinISize(aRenderingContext, data);
|
||||
}
|
||||
}
|
||||
};
|
||||
DoInlineIntrinsicISize(aData, handleChildren);
|
||||
}
|
||||
|
||||
/* virtual */
|
||||
void nsRubyFrame::AddInlinePrefISize(gfxContext* aRenderingContext,
|
||||
nsIFrame::InlinePrefISizeData* aData) {
|
||||
for (nsIFrame* frame = this; frame; frame = frame->GetNextInFlow()) {
|
||||
auto handleChildren = [aRenderingContext](auto frame, auto data) {
|
||||
for (RubySegmentEnumerator e(static_cast<nsRubyFrame*>(frame)); !e.AtEnd();
|
||||
e.Next()) {
|
||||
e.GetBaseContainer()->AddInlinePrefISize(aRenderingContext, aData);
|
||||
e.GetBaseContainer()->AddInlinePrefISize(aRenderingContext, data);
|
||||
}
|
||||
}
|
||||
};
|
||||
DoInlineIntrinsicISize(aData, handleChildren);
|
||||
aData->mLineIsEmpty = false;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,54 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ja">
|
||||
<meta charset="utf-8">
|
||||
<title>Intrinsic ISize calculation of ruby</title>
|
||||
<link rel="author" title="Xidorn Quan" href="https://www.upsuper.org">
|
||||
<style>
|
||||
.ruby {
|
||||
border-left: 5px solid blue;
|
||||
border-right: 10px solid blue;
|
||||
padding: 0 20px 0 10px;
|
||||
margin: 0 10px 0 20px;
|
||||
}
|
||||
div {
|
||||
display: inline-block;
|
||||
border: 1px solid black;
|
||||
font-kerning: none; /* disable kerning, because in the reference file
|
||||
it might occur across <span> boundaries */
|
||||
}
|
||||
.ruby > span {
|
||||
white-space: nowrap;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div style="width: min-content">
|
||||
<span class="ruby"><span>ABC</span><span>DEF</span></span>
|
||||
</div>
|
||||
<div style="width: max-content">
|
||||
<span class="ruby"><span>ABC</span><span>DEF</span></span>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div style="width: min-content">
|
||||
XYZ<span class="ruby"><span>ABC</span><span>DEF</span></span>XYZ
|
||||
</div>
|
||||
<div style="width: max-content">
|
||||
XYZ<span class="ruby"><span>ABC</span><span>DEF</span></span>XYZ
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div style="width: min-content">
|
||||
<span class="ruby"><span>あい</span><span>うえ</span></span>
|
||||
</div>
|
||||
<div style="width: max-content">
|
||||
<span class="ruby"><span>あい</span><span>うえ</span></span>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div style="width: min-content">
|
||||
お<span class="ruby"><span>あい</span><span>うえ</span></span>お
|
||||
</div>
|
||||
<div style="width: max-content">
|
||||
お<span class="ruby"><span>あい</span><span>うえ</span></span>お
|
||||
</div>
|
||||
<br>
|
@ -0,0 +1,53 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ja">
|
||||
<meta charset="utf-8">
|
||||
<title>Intrinsic ISize calculation of ruby</title>
|
||||
<link rel="author" title="Xidorn Quan" href="https://www.upsuper.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-ruby-1/#line-breaks">
|
||||
<link rel="match" href="ruby-intrinsic-isize-003-ref.html">
|
||||
<style>
|
||||
ruby {
|
||||
border-left: 5px solid blue;
|
||||
border-right: 10px solid blue;
|
||||
padding: 0 20px 0 10px;
|
||||
margin: 0 10px 0 20px;
|
||||
}
|
||||
div {
|
||||
display: inline-block;
|
||||
border: 1px solid black;
|
||||
font-kerning: none; /* disable kerning, because in the reference file
|
||||
it might occur across <span> boundaries */
|
||||
}
|
||||
</style>
|
||||
|
||||
<div style="width: min-content">
|
||||
<ruby><rb>ABC<rb>DEF</ruby>
|
||||
</div>
|
||||
<div style="width: max-content">
|
||||
<ruby><rb>ABC<rb>DEF</ruby>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div style="width: min-content">
|
||||
XYZ<ruby><rb>ABC<rb>DEF</ruby>XYZ
|
||||
</div>
|
||||
<div style="width: max-content">
|
||||
XYZ<ruby><rb>ABC<rb>DEF</ruby>XYZ
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div style="width: min-content">
|
||||
<ruby><rb>あい<rb>うえ</ruby>
|
||||
</div>
|
||||
<div style="width: max-content">
|
||||
<ruby><rb>あい<rb>うえ</ruby>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div style="width: min-content">
|
||||
お<ruby><rb>あい<rb>うえ</ruby>お
|
||||
</div>
|
||||
<div style="width: max-content">
|
||||
お<ruby><rb>あい<rb>うえ</ruby>お
|
||||
</div>
|
||||
<br>
|
Loading…
Reference in New Issue
Block a user