Clean up vertical alignment code structure.
Do not pass around text direction unnecessarily.
Add paragraphLines to Rich ParagraphLayout. BREAKING: The paragraphLines field of ParagraphLayout must be preserved for pagination. BREAKING: The width of a rich text ParagraphLayout will now remain unchanged after pagination. BREAKING: Empty space at the top of the first line and at the bottom of the last line in a ParagraphLayout will now be preserved.
Allow overriding font ascender and descender. Provides an easy option for influencing vertical metrics, which may be useful for implementing replaced and inline-block elements.
Remove unused alignment function.
Implement vertical alignment. BREAKING: Boxes now generate struts (CSS), which can make a line taller than is necessary to contain its fragments.
Do not pass around unnecessary data.
Store parent text options in ResolvedBox. This is required for vertically aligning the box with its parent.
Add options for vertical alignment.
Separate vertical alignment from horizontal positioning.
Store vertical offsets inside ProtoFragment. Intended to make these offsets manipulable during layout.
Add internal structure for vertical offsets.
Use more specific name for the LineHeight typeclass.
Fix internal link to non-existent identifier.
Clarify that fragmentContentRect is unstandardised.
Add content rect to Fragment.
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.
Prevent empty shaped runs. This is in preparation for a breaking change that introduces some empty fragments into the output. Since the shaped runs output is not concerned with runs of zero glyphs, these will be proactively removed.
Add forceLeftAlign function for testing.