mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-31 21:27:00 -06:00
Type: threaded frames do not repeat a continued paragraph's first-line indent or list marker
A paragraph split between two threaded frames took its first-line indent again at the top of the next frame, and a list paragraph drew its bullet or number there again. Each frame is laid out on its own, and its first paragraph kept every paragraph attribute there. A text object now marks a frame whose first paragraph continues from the frame before (first_para_continues, not saved). The thread re-flow sets the mark where each frame's share starts inside a paragraph and measures each share with it, and a restored document reads the marks from its saved text. Area type and type on a path set the first line of such a paragraph as a wrapped line: no first-line indent and no bullet or number. The paragraph after it takes the next number. Release Selection, Remove Threading, Convert To Point Type and copies of a frame clear the mark, so the first paragraph there has its indent and bullet or number again. When Create Outlines, Expand or Expand Appearance takes frames out of a thread, a frame that stays keeps the mark only while it is threaded and the frames before it end inside a paragraph. A frame whose mark changes lays out its first line again, and when it is still threaded, its thread re-flows. When the outlined frame is the last one, the text it has no room for is measured as the frame lays it out: without the first-line indent when it continues a paragraph, and with its numbers counted on from the frames before it. The frame before it now takes exactly the text the last frame has no room for. Duplicates, copies dragged in the Layers panel, the copies that Release to Layers (Build), Release Opacity Mask and Edit Opacity Mask make, and Draw Inside's clipping copy then have their cached bounds computed again, as paste already does for pasted type. Docs: docs/mcp.md, docs/target-app-parity.md.
This commit is contained in:
+8
-2
@@ -4205,6 +4205,12 @@ that doesn't exist, a `from` that is point type, a `to` that is an open path, `f
|
||||
or already in a thread (`from` may be threaded already: the frame goes in beside it), coordinates that aren't finite
|
||||
numbers and a `before` that isn't true or false.
|
||||
|
||||
In every thread, a paragraph that continues from one frame into the next has its first line, first-line indent and
|
||||
bullet or number in the frame where it starts. In the next frame its first line starts where its wrapped lines start,
|
||||
and it has no bullet or number. In a frame that is no longer threaded (after `text.thread.releaseSelection` or
|
||||
`text.thread.remove`), in a copy of a frame and in point type converted from one, the first paragraph has its first-line
|
||||
indent and bullet or number again.
|
||||
|
||||
```json
|
||||
{"name":"run_command","arguments":{"command":"text.thread.add","params":{"from":42,"at":[300,120]}}}
|
||||
```
|
||||
@@ -4398,8 +4404,8 @@ bullets and numbers. In a horizontal right-to-left list paragraph the indents ar
|
||||
indents are measured from the right edge, and the right indent from the left edge. Its marker starts the first line at
|
||||
the right, and the lines it wraps to start at the right where the first line's text starts after the marker. A
|
||||
right-to-left paragraph without a list keeps its left and first-line indents at the left, and vertical type keeps its
|
||||
indents as they are. In threaded type, a list paragraph that continues into the next frame starts that frame with its
|
||||
bullet or number again, as it starts it with its first-line indent.
|
||||
indents as they are. In threaded type, a list paragraph that continues into the next frame starts that frame where its
|
||||
wrapped lines start, without the bullet or number, and the paragraph after it takes the next number.
|
||||
|
||||
The layout draws the marker (the bullet, or the number and its period) before the first line of each list paragraph
|
||||
that has text, in the font, size, scales and color of the paragraph's first character, without that character's
|
||||
|
||||
@@ -763,6 +763,7 @@ Moved from the ROADMAP's "Shipped so far" on 2026-10-10. Update it when a featur
|
||||
For Auto Size area type in columns, the bisection for the frame's height runs on the lines of the one-column layout, and its result is checked with at most two layouts of the columns. When the text wraps around objects or does not fit the one-column layout, or when the check fails, the columns are laid out at every step of the bisection, as before. Typing at the start of a story of 50,000 characters in 2 columns took 1,670 ms a keystroke and now takes 292 ms (release build, `auto_height_in_columns_typing_timing`).
|
||||
Exports to PDF, EPS, SVG, EMF, WMF and the raster formats warn about the area type and type on a path that they draw without the text that doesn't fit, and give their ids, as Print and Print Preview do.
|
||||
An edit copies a thread's story only when it changes one of the thread's frames: with a story of 50,000 characters threaded through 8 frames with a style change at every word, moving another object took 7.8 ms and now takes 0.013 ms, and a frame of a drag took 7.2 ms and now takes 0.012 ms (release build, `threaded_story_edit_timing`).
|
||||
A paragraph that continues from one threaded frame into the next has its first-line indent and bullet or number in the frame where it starts; in the next frame its first line starts where its wrapped lines start. In frames that are no longer threaded, copies of a frame and point type converted from one, the first paragraph has its indent and bullet or number again.
|
||||
Type › Convert To Point Type on a frame of threaded text makes point type of the text that frame holds and takes it out of the thread; the story flows through the other frames without that text, so each character is in the document once.
|
||||
Type › Create Outlines, Object › Expand and Object › Expand Appearance on a frame of threaded text take it out of the thread with the text it shows, which the outlines draw, and the other frames keep the text they hold. When the last frame is outlined, the text it has no room for goes after the text of the last frame that stays. When Expand Appearance keeps the frame as type in a group with its shadow, outer glow or Crop Marks, the type stays in the thread.
|
||||
With Optical Margin Alignment on, or Roman Hanging Punctuation on in the first paragraph, the glyphs at the ends of left-to-right type on a path hang outside its brackets, measured along the path. The type hangs at the start bracket when its line is placed there, hangs at the end bracket when the line is placed there, and hangs at both when it is centered. Glyphs that hang past the end bracket do not make the type overflow, and a hang stops at an open path's end. SVG export writes such type as outlines.
|
||||
|
||||
Reference in New Issue
Block a user