• LongCatIsLooong's avatar
    Improve `TextPainter.layout` caching (#118128) · 62e78bf1
    LongCatIsLooong authored
    Improves `TextPainter.layout` caching when only the input constraints change: 
    - removes the double layout calls in `TextPainter._layoutParagraph`: now double layout is only needed when `TextAlign` is not left, and the input `maxWidth == double.infinity`.  
    - skip calls to `ui.Paragraph.layout` when it's guaranteed that there's no soft line breaks before/after the layout call.
    
    This doesn't introduce new APIs but may slightly shift text rendered on screen.
    This reduces the number of `layout` calls but since shaping results are already cached so it only skips the relatively cheap line-breaking process when possible.
    
    528 scuba failures but all of them seem reasonable.
    62e78bf1
text_painter.dart 61.6 KB