mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-15 00:09:41 +00:00
Type: the Single-line Composer measures a line's room across its tallest character
In area type of a shape other than a rectangle, or with text wrap, the Single-line Composer placed each line at the metrics of its first character and broke it in the room there. When a later character on the line was taller, the baseline moved down by the difference without measuring the room again, so the line could reach into a narrower part of the frame or into a wrap object. - A line that turns out taller than it was placed is placed again at metrics that hold both and broken again in the room there. - When that leaves the taller character for the next line, the line is set at its own metrics where the room there is no narrower, and takes the words before that character that fit there. Otherwise it stays where it was placed. Tests: crates/text/src/tests/combos.rs (a stepped frame and text wrap; the two mixed-size tests now expect the Single-line Composer to break as the Every-line Composer does there). Docs: docs/mcp.md, docs/target-app-parity.md.
This commit is contained in:
@@ -10448,6 +10448,10 @@ where the lines above it put it, across the line's own height, so a taller line
|
||||
narrower, or beside a wrap object, gets the room there. Such a paragraph falls back to Single-line when the frame has
|
||||
no room for all of it, or when the search for its breaks passes VectorCraft's own limits (1,000,000 lines tried and
|
||||
2,000,000 baseline steps for one paragraph, 2,000,000 lines and 4,000,000 steps for all the paragraphs of a frame).
|
||||
Single-line measures each line's room the same way: a line that takes in a taller character is placed again across its
|
||||
new height and broken again in the room there. When that leaves the taller character for the next line, the line is
|
||||
set at its own height where the room there is no narrower, with the words before that character that fit there, and
|
||||
otherwise stays where it was placed.
|
||||
The UI command `type.lineComposer` (Cmd+Alt+Shift+C, in remote mode `press_key {key: "C", mods: {cmd: true, alt: true,
|
||||
shift: true}}` or `invoke_menu`) sets `singleLine` when every paragraph of the selected type (or every paragraph the
|
||||
Type tool's selection touches) uses Every-line, else `everyLine`, and returns the composer it set.
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user