~jaro/balkon

ref: ca37c6e309c0e50ea21dbc823c34b4f21c38c977 balkon/test/Data/Text/ParagraphLayout/Internal d---------
Add helper function to strut empty boxes.
Allow trimmed whitespace to generate empty fragments.

BREAKING: Output may now contain more fragments with zero glyphs,
representing runs of whitespace that was trimmed away. These runs may
also start a box at the end of a line, instead of the beginning of the
next line.

BREAKING: Trimmed whitespace now affects line height.
Allow generating an empty run.
Store default level in BiDiLevels.

This will be required for handling empty text sequences.
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.
Simplify code since run direction is always known.
Improve BiDi handling of numbers and neutrals.
Add tests for mixed text direction.
Test spanToRuns independently for scripts/directions.
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.
Add expected run lengths to test data.
Add more sample texts.
Deduplicate emptyFont in RunSpec.
Generalise text from SpanData for other tests.
Add Arabic examples to spanToRuns tests.
Consolidate tree types into one.
Implement finding box edges.
Next