~jaro/balkon

ref: b7e2da83c6eaeb921f5113e58f2f1fa4e580e292 balkon/src/Data/Text/ParagraphLayout/Internal/Plain.hs -rw-r--r-- 10.3 KiB
Slightly decompose the Plain module.
Update documentation and derived instances.
Use internal library to hide non-public modules.
Move non-public modules into Internal namespace.
Represent line breaks directly without offsets.
Remove I8/Int distinction.

The distinction was meant to provide additional type safety, but
inconsistency with other used libraries required too many workarounds
for this to be beneficial.
Define SeparableTextContainer as its own class.
Minimise working with Data.Text.Internal.
Use ICU to find line break boundaries.
Implement line breaking on code point boundaries.
Use top edge for placing lines.
Implement run splitting.
Lay out Runs independently of Spans.
Store span index in ResolvedSpan.
Link to Span using a generic wrapper.
Calculate fragment position continuously.

This merges the various "arrange" functions into the layout functions,
which will be used to detect overflows for line breaking.
Implement absolute line heights with half-leadings.
Calculate "normal" line height and pen position.
Use CSS-compatible line height settings.
Upgrade Fragment to contain pen position.
Next