| Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Size { width, height } => Size { w, h }
Spec { horizontal, vertical } => Spec { x, y }
Gen { cross, main } => Gen { inline, block }
|
|
Notably:
- Handle aspect ratio in fixed node
- Inline constraint inflation into pad node
|
|
|
|
|
|
|
|
|
|
|
|
This prepares the incremental PR.
Co-Authored-By: Laurenz <laurmaedje@gmail.com>
|
|
|
|
This also makes serialization support non-optional since it's too much feature-management for too little benefit.
|
|
The previous paragraph layout algorithm had a couple of flaws:
- It always produced line break opportunities between runs although on
the textual level there might have been none.
- It didn't handle trailing spacing correctly in some cases.
- It wouldn't have been easily adaptable to Knuth-Plass style optimal
line breaking because it was fundamentally structured first-fit
run-by-run.
The new paragraph layout algorithm fixes these flaws. It proceeds
roughly in the following stages:
1. Collect all text in the paragraph.
2. Compute BiDi embedding levels.
3. Shape all runs, layout all children and store the resulting items in
a reusable (possibly even cacheable) `ParLayout`.
3. Iterate over all line breaks in the concatenated text.
4. Construct lightweight `LineLayout` objects for full lines instead of
runs. These mostly borrow from the `ParLayout` and only reshape the
first and last run if necessary. The design allows to use Harfbuzz's
UNSAFE_TO_BREAK mechanism to make reshaping more efficient. The size
of a `LineLayout` can be measured without building the line's frame.
5. Build only the selected line's frames and stack them.
|
|
- Adds lang function
- Refactors execution context
- Adds StackChild and ParChild enums
|
|
|
|
|
|
|
|
|
|
|
|
- Tests diagnostics
- More and better separated image tests
|
|
|
|
|