The text block's bounds within the cell box, after vertical + horizontal alignment. A consumer positions the first line (and the editor positions its input) against this. When rotation is present this is the rotated footprint (the strip union), which may exceed the cell box — rotated text overflows.
The content box: the cell box inset by the cell's ICell.getInsets. Text lives inside this — nothing else (no border fudge). Wrapping flows to its width.
The laid-out text frame (wrapped to content width when the cell wraps).
The first line's height (logical px) — used to match line rhythm (e.g. by the editor).
OptionalrotationPresent when the cell's text is rotated (angle not a multiple of 180°): per-line rotated strip geometry — each laid-out line is an independent strip drawn at TextRotation.RotatedLayout.angle, wrapped against the content height and marching horizontally. See TextRotation.layoutLines for the model.
OptionalstackedPresent when the cell's text is stacked ("vertical text"): per-column slot geometry — every glyph upright in its own slot of the line pitch, columns from line breaks (and from wrapping against the content height), each column aligned on its own. See TextStacked.layoutColumns for the model. bounds is then the column group.
The placed geometry of a cell's text within a cell box — see ICell.getTextPlacement. All values are logical (un-zoomed) px in cell-local coordinates (origin = the cell top-left).