Forum How do I...?

column-float "starvation"

chrisryland
We have a two-column Prince layout with semantic tables emitted as floated <figure> wrappers. Some are column floats, some are full-width page floats.

Current CSS is roughly:

.document-body {
column-count: 2;
}

figure.docpress-float {
-prince-float: column;
}

figure.docpress-float[data-float-width="full"] {
-prince-float: page;
}

And the HTML pattern is:

<h1>Title</h1>
<p>Intro...</p>

<figure class="docpress-float docpress-table">Table 1...</figure>
<figure class="docpress-float docpress-table" data-float-width="full">Table 2...</figure>
<figure class="docpress-float docpress-table">Table 3...</figure>
<figure class="docpress-float docpress-table" data-float-width="full">Table 4...</figure>

Observed behavior:

the page floats (Table 2, Table 4) get placed before the earlier column floats (Table 1, Table 3)
in our repro, Table 1 ends up on page 3 and Table 3 on page 4, even though they occur earlier in source,'

-prince-float-policy: in-order does not change this.

Allowing table { break-inside: auto } does not change this either, presumably because the outer floated figure remains the placement unit.

So the question is, in a mixed two-column setup with -prince-float: column and -prince-float: page, is there any way to force earlier column floats to be placed before later page floats when source order requires it?

Related question: Does -prince-float-policy: in-order only order floats within the same effective float queue/reference context, rather than across mixed column and page floats?