void collectFlowOverflow(RenderBlockFlow& flow, const Layout& layout)
{
    auto resolver = lineResolver(flow, layout);
    for (auto it = resolver.begin(), end = resolver.end(); it != end; ++it) {
        auto rect = *it;
        flow.addLayoutOverflow(rect);
        flow.addVisualOverflow(rect);
    }
}
void collectFlowOverflow(RenderBlockFlow& flow, const Layout& layout)
{
    float strokeOverflow = std::ceil(flow.style().textStrokeWidth());
    for (FloatRect lineRect : lineResolver(flow, layout)) {
        LayoutRect inflatedLineRect(lineRect);
        inflatedLineRect.inflate(strokeOverflow);
        flow.addLayoutOverflow(inflatedLineRect);
        flow.addVisualOverflow(inflatedLineRect);
    }
}
void collectFlowOverflow(RenderBlockFlow& flow, const Layout& layout)
{
    auto resolver = lineResolver(flow, layout);
    float strokeOverflow = ceilf(flow.style().textStrokeWidth());
    for (auto it = resolver.begin(), end = resolver.end(); it != end; ++it) {
        auto rect = LayoutRect(*it);
        rect.inflate(strokeOverflow);
        flow.addLayoutOverflow(rect);
        flow.addVisualOverflow(rect);
    }
}