~jaro/balkon

ref: 13b3a637336eb3490d6379a76472c90e54a1c01b balkon/src/Data/Text/ParagraphLayout/Internal d---------
Add start/end paragraph alignment.

In the future, when the paragraph direction is not explicitly set,
start/end options will allow alignment to change line by line,
whereas left/right alignment will be constant.
Add centre/right paragraph alignment.
Internally mark hard line breaks.
Internally allow splitting texts at endpoints.

This is required in order to preserve a hard line break at the end of
the input.
Internally support text breaks in ascending order.

Intended as a workaround to `breaksRight` not including the status of
the end-of-text break.
Separate split list functions into a module.
Fix terminology for box layout bounds.
Make RTL text overflow the left paragraph edge.

This behaviour is consistent with CSS Text Module Level 3.

BREAKING: Previously, all text would overflow the right paragraph edge,
regardless of text direction.
Fix handling of mixed line height.

Displace lines by the height of the tallest fragment in the previous
line, not the shortest one.
Implement unions of lists of rectangles.
Parametrise rectangle union bias.
Remove TODO which would require an API break.
Simplify code since run direction is always known.
Add TODO for end-of-line whitespace.
Improve BiDi handling of numbers and neutrals.
Autodetect text direction for legacy interface.
Propagate BiDi levels to layout algorithm.

BREAKING: Text direction of the root box is now correctly used for
ordering fragments. Previously, the order was always LTR.
Integrate BiDi levels with spanToRuns algorithm.

Span/box boundaries no longer reset directionality.

BREAKING: Text with no strongly directional characters would
previously be treated as having no direction. It will now be
treated as having the direction defined in TextOptions.
This affects calculated positions.
Convert legacy span directions into levels.
Move BiDi Level to separate module.
Next