LYH Studio episode 6 colours the "1969" headline (8:28) and the loop's
stroke (9:15) from the Swatches panel, whose header holds InDesign's
Fill/Stroke proxy, Formatting Affects Container/Text and the Tint field.
- Header: a Fill/Stroke proxy showing the colours of what colour edits
apply to (panels::color_target; a click brings the other to the front,
as X does), the container/text buttons (app.formattingAffectsText) and
the tint of the colour in front.
- The Tint field sends only the tint, so each selected object (or run of
text) keeps its own swatch: object.fill takes a tint without a swatch,
and a stroke tint alone doesn't give a stroke-less object a stroke.
- Clicking a swatch applies it to the fill or stroke in front
(panels::apply_swatch, to the text when colours affect text); that row
is highlighted.
- Bottom row: New Color Group, New Swatch, Delete Swatch (the swatch last
clicked). Rows and the proxy are named for accessibility (and tests).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The Pages panel menu in Chris Cicchino's "Adobe InDesign – Page Tool
and Liquid Layout" (0:47) reads: Insert Pages…, Move Pages…, Duplicate
Spread, Duplicate Spread at End of Document, Delete Spread, … New
Parent…, Apply Parent to Pages…, Override All Parent Page Items, Parent
Pages ▸, Create Alternate Layout…, Numbering & Section Options…, Allow
Selected Spread to Shuffle. DesignCraft's menu (and the page thumbnails'
context menu) had Insert Page After, Delete Page, Duplicate Spread, Add
to Previous Spread, Allow Spread to Shuffle and the parent items in
another order.
- Pages panel menu and page context menu in InDesign's order and labels:
Insert Pages… and Move Pages… open their dialogs for the page; Delete
Spread for a spread of several pages; Parent Pages ▸ holds Remove All
Local Overrides and Detach All Objects from Parent; Create Alternate
Layout… and Numbering & Section Options… open theirs. Add to Previous
Spread stays last (InDesign drags pages into spreads instead).
- Translations (pt-BR gains the existing items it lacked).
Builds on #869 (Duplicate Spread at End of Document).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Chris Cicchino's "Adobe InDesign – Page Tool and Liquid Layout" (0:42,
2:06) holds Option and drags a page in the Pages panel to copy it,
drags a page onto the New Page button to duplicate it ("click and drag
onto my plus sign I can duplicate that"), and resizes pages; InDesign's
panel also has an Edit page size button. DesignCraft's panel only moved
pages on drag, had no Edit page size button, and duplicating a page gave
the copy the size of the page before it (not its own) without its
liquid rule or guides. A page of its own size also drew its thumbnail
at the document's scale, over the panel's footer.
- Pages panel: Alt-drag copies the page to where it's dropped; a page
dropped on Create new page is duplicated at the end of the document;
Edit page size lists the presets (in the page's orientation) and
Custom Page Size…; InDesign's tooltips (Create new page, Delete
selected pages).
- Thumbnails share one scale (the document's page size, smaller when a
taller page would pass 1.8 times the usual height); rows fit their
spread's tallest page.
- engine: layout.pages.duplicateSpread copies the pages' size, margins,
columns, guides and liquid rule, takes `atEnd`, and returns the copy's
first page.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Chris Cicchino's "Adobe InDesign – Page Tool and Liquid Layout" (11:00–
13:30) drags guides out of the rulers with the Page tool on a
guide-based page: "these guides are a little bit different... they are a
dashed line, a cyan dashed line" - liquid guides, which let the objects
they cross stretch with the page. DesignCraft drew liquid guides dashed
and applied them, but a guide could only become liquid through the
Liquid Layout panel's list: ruler drags always made ruler guides.
- canvas: with the Page tool, a page guide dragged from a ruler is a
liquid guide; its preview is dashed while it's dragged.
- engine: guide.add takes `liquid`.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Chris Cicchino's "Adobe InDesign – Page Tool and Liquid Layout" (2:47,
7:24) uses the Liquid Layout panel: "Liquid Page Rule:" with "Page: n",
Content › Auto-Fit, and Object Constraints › Resize with Page (Height,
Width) and Pin (Top, Left, Bottom, Right), greyed until an object on an
object-based page is selected. DesignCraft's panel had a "Page 1" label,
the rule, six wrapped checkboxes ("Resize width", "Pin top"…) only once
an object was selected, and a Create Alternate Layout form.
- Liquid Layout panel: InDesign's layout and labels; the page is the one
the Page tool selected (else the page in view); Auto-Fit (graphic
frames) runs object.fittingOptions; the constraints apply on
object-based pages (also through Controlled by Parent) and stay
greyed otherwise. The page's liquid guides stay listed below for now.
- Layout menu: Create Alternate Layout… (as in InDesign).
- Translations for the new labels.
Builds on #864 (rule list, Controlled by Parent) and #862.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Chris Cicchino's "Adobe InDesign – Page Tool and Liquid Layout" (6:32–
9:58) clicks an object with the Page tool on an object-based page and
gets InDesign's on-canvas liquid controls: a pin outside each edge
("Object is pinned relative to the page edge. Click to release.") and a
padlock on the width and height lines ("The object's width is locked.
Click to let the object change width as the page changes width."). The
pins and resize settings existed (liquid.object, the Liquid Layout
panel) but the canvas showed none of it.
- tools: on an object-based page a Page tool click selects the object
with its page (layout.selectPage takes `ids`); its pins (14 px outside
each edge's middle) and width/height locks (beside the centre) toggle
liquid.object on click, show InDesign's tooltips on hover and a hand
cursor.
- canvas: LiquidPins (orange dashed width/height lines with padlocks,
open when the object follows the page; hollow pins, or a line to the
page edge when pinned) and Tip overlays; tooltip translations.
Builds on the Page tool PR (#862).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Chris Cicchino's "Adobe InDesign – Page Tool and Liquid Layout" (1:02–
2:06, 13:47) sizes pages from the Control panel with the Page tool
selected: X/Y, W/H, the page-size preset ("US Business Card"),
orientation, Liquid Page Rule ("Controlled by Parent"), Objects Move with
Page and Show Parent Page Overlay. DesignCraft's Control panel showed the
(empty) object controls.
- ui: with the Page tool, the Control panel shows the selected page (or
the page in view): the reference point (W/H, preset and orientation
keep it in place via layout.pageSize's anchor), X/Y (read-only),
W/H, the preset dropdown, portrait/landscape, Liquid Page Rule, Objects
Move with Page (always on: pages don't move within spreads yet) and
Show Parent Page Overlay.
- doc: LiquidRule::ControlledByParent (the parent page's rule, Off
without one; resolved by liquid::effective_rule); Page.show_parent_overlay.
- engine: layout.pageOptions {pages, showParentOverlay}; liquid.pageRule
takes controlledByParent.
- canvas: the parent page's size over a page with the overlay on.
- Liquid Layout panel and Control panel share InDesign's rule list
(Off, Scale, Re-center, Object-based, Guide-based, Controlled by
Parent); "US Business Card" preset; translations.
Builds on the Page tool PR (#862) for the selected page.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Chris Cicchino's "Adobe InDesign – Page Tool and Liquid Layout" (0:42–
2:06) selects a page with the Page tool, gets its bounding box with
handles, drags a handle (the page springs back: a liquid-rule preview),
holds Option to really resize it, Shift for proportions, and reads the
size in a tooltip by the cursor. DesignCraft's Page tool only opened a
generic Page Size dialog on click.
- tools: the Page tool selects the page under a click (none on the
pasteboard); the selected page shows its outline, eight handles and
its liquid page rule ("Scale", "Object-Based"…) above it. Dragging a
handle previews layout.pageSize (the liquid rule re-flows the
objects) and springs back on release; Alt resizes, Shift keeps the
proportions; a W/H readout follows the pointer; resize cursors on the
handles. Double-click a page for the Page Size dialog.
- doc: Selection.page (the Page tool's page); engine: layout.selectPage
(no undo step).
- layout.pageSize `anchor` (0-8): the page grows away from the
reference point and its objects and guides keep their place relative
to it (a handle drag anchors the opposite edge); liquid rules work
from that.
- canvas: PageHandles and Tag overlays; translations for the tags and
the Resize Page undo label.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
LYH Studio episode 6 (7:00) fills its photo frames with the caption
"Fit Content to Frame (Ctrl + Shift + Alt + C)", InDesign's shortcut for
Fill Frame Proportionally. DesignCraft's Fitting items were object.fit
variants without shortcuts (a menu shortcut belongs to a command id, and
the five modes share one).
- Five UI commands, one per mode, with InDesign's keys:
fit.fillFrameProportionally Cmd+Alt+Shift+C,
fit.contentProportionally Cmd+Alt+Shift+E, fit.frameToContent
Cmd+Alt+C, fit.contentToFrame Cmd+Alt+E, fit.centerContent
Cmd+Shift+E (Ctrl on Windows and Linux); each runs object.fit.
- Object > Fitting lists them (with their shortcuts), enabled as
object.fit is.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
LYH Studio episode 6 builds every gradient from C=0 M=100 Y=0 K=0 to
C=100 M=0 Y=0 K=0. InDesign blends a gradient's process stops as inks:
halfway is C 50 M 50, a light lilac. DesignCraft converted both ends to
RGB and blended there, so the middle came out a darker violet (117, 88,
189 instead of 135, 119, 181), and every Episode 6 gradient looked
different. A midpoint between CMYK stops also became an RGB colour, so
the PDF shading turned RGB with a conversion warning.
- color: `Color::lerp` blends CMYK with CMYK (or grey), and grey with
grey, in ink space; anything with RGB still blends in RGB.
- `Gradient::display_stops`: the expanded stops plus samples through
each span that isn't RGB at both ends, for renderers that interpolate
in RGB; the screen renderer uses it.
- pdf: a midpoint's expanded stop now keeps the stops' space; the
colour-space test expects no conversion for CMYK or grey midpoints.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The Type tool's clicks, drags and double-clicks on type on a path went to
the character at the same spot of the straightened line, and the caret
and highlight were drawn straight. A click now finds the character where
its nearest point along the path is (compose::PathTextMap, from the line
to the path and back, as path_glyphs places the glyphs); the caret stands
across the path there and the highlight bends with the text. A click on
the letters, above the path, hits the frame.
Depends on #636 (PathWarp::nearest).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Selected type on a path shows its start and end brackets across the path,
as in InDesign, and the Selection and Direct Selection tools drag them
along it (Move Bracket, one undo step): the text starts and ends where
they are, and text past the end bracket is overset.
- doc: PathType.end (None: the path's end)
- geom: PathWarp::nearest, the arc length of the nearest point
- engine: type.pathOptions {end}; brackets stay on the path and can't cross
- compose: the line runs from the start to the end bracket
- idml: EndBracket read and written
- tools: Cursor::PathBracket
Co-Authored-By: Claude Opus 5.5 <[email protected]>
As in InDesign, the Pen over an end point of an open path (selected, or
under the pointer) shows a continue cursor; clicking it carries on drawing
that path, new anchors going on its subpath, and clicking its other end
closes it. Dragging from the end point first reshapes its direction
lines. From the first anchor the subpath is reversed first.
- engine: path.reverse (Object > Paths > Reverse Path), path.setAnchor;
path.appendAnchor and path.close take a subpath, and appendAnchor
refuses a closed subpath
- tools: Cursor::PenContinue
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Straight sides were trimmed through inv_arclen at 1e-3 accuracy, so a
rectangle's corner points landed up to about 1e-4 pt off. Lines are now
measured and trimmed along the chord, exactly; curves still use arc length.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Corners were applied only where two straight segments meet, and every
other segment was redrawn as a straight line: a Pathfinder quarter
circle with rounded corners rendered as a triangle with one round
corner. Corner points are now where the path turns; the sides next to a
corner are trimmed along their length, curves included, and stay
curves. Smooth points are left alone; rectangles are unchanged.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
With several objects selected, InDesign's Properties panel shows
Pathfinder: Add, Subtract, Intersect, Exclude Overlap and Minus Back.
DesignCraft had them only in Object › Pathfinder and the Pathfinder
panel. The section sits after Align, with code-drawn icons.
Section titles and icon buttons in Properties now have accessible names
(the title; the button's tooltip), so screen readers can tell them apart.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
View › Screen Mode showed no check mark (checked() had no view.screenMode
arm), so with the Normal/Preview row gone nothing showed the current
mode. ja.rs still translated the old Type/Proof Setup, Type/Rotate Spread
and Type/Separations Preview paths; it now has the View/… paths,
Screen Mode, Extras and Structure included.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Rotate Spread, Proof Setup, Proof Colors, Flattener Preview, Show Tag
Markers, Separations Preview and Show/Hide Tagged Frames were at the end
of the Type menu. They are in View now, which follows InDesign's order:
Overprint Preview and proofing, zoom, Rotate Spread, Screen Mode,
Display Performance, rulers, Extras (frame edges, text threads), Grids &
Guides and Structure (tagged frames, tag markers). Show Hidden
Characters stays in Type, as in InDesign; W still toggles Preview.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The canvas drew an underline (and a strikethrough) as one rectangle per
glyph; where two anti-aliased edges met at a fractional pixel they left
a lighter seam between the letters. Contiguous bars of the same colour
and position are merged into one, as the PDF export already does.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
InDesign's Properties › Transform shows, under X/Y/W/H, the rotation
and shear angles beside the X and Y scale, then buttons to rotate a
quarter turn either way and to flip horizontally or vertically.
DesignCraft's showed only X/Y/W/H; the rest was in the Control bar
and Object › Transform. The fields set totals through transform.set
around the reference point; the buttons run transform.rotate and
transform.flip. Rotate and flip icons are original drawings.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
In InDesign a double-click on the Tools panel's Fill or Stroke box opens
the Color Picker; DesignCraft opened the Swatches panel. It now opens
the Color Picker for that box, with the selection's colour (the selected
text's when text is selected). The Stroke box also reports its name to
screen readers.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Edit > Step and Repeat opened the generic command form (Count 1..1000, Dx, Dy, Rows, Columns, Ids). It now has InDesign's dialog: Repeat (Count, or Rows and Columns when Create as a grid is on), Offset (Vertical, Horizontal, in the document's ruler units or any unit typed) and Preview, which shows the copies on the page while the dialog is open. Cancel, Esc and ui.dialog.cancel take the preview away; OK makes the copies once, as one undo step. A value that isn't a number keeps the dialog open and says so.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
InDesign's Hyphenation Zone ("the white space allowed at the end of a
line of unjustified text before hyphenation begins") applies only with the
Single-line Composer. The Paragraph Composer, the default, weighs every
break of the paragraph instead. DesignCraft applied the default 3p0 zone
to both, so ragged paragraphs under the Paragraph Composer refused
hyphens InDesign makes. In LYH Studio's poster tutorial the placeholder
text breaks "aper-natem" and "mosticsia-tur"; ours ran a line longer.
The breaker now gets the zone only for unjustified Single-line Composer
paragraphs.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
note.edit was the one story-text command still reading `text` without
text_param. The progress-log line held real CR and CRLF characters where
it meant to show the escapes; it reads `\r` and `\r\n` now.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
frame.create and text.insert turned \r and \r\n into paragraph returns,
but story.replaceRange, story.setText, note.new, footnote and endnote
text, type on a path and table cells kept the CR in the text, where it
drew as a missing glyph and joined the paragraphs. They all use
text_param now.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
type.selectionAttrs copied the whole selection to a string before taking
the first 60 characters, so selecting a long story copied all of it on
every query. It now skips leading blanks and stops after 60 characters.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
ScopedFonts::family_kind reads a family's format, class, PANOSE and file
date from its Regular face. A loaded face is asked; an installed family
that isn't loaded is read from its file, which is let go afterwards,
instead of loading every family the font menu's filters look at for the
rest of the session. Files over MAX_DOCUMENT_FONT_BYTES are skipped.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Paste Into gives a frame nested content, but it isn't a group: the Effects
panel showed "Group:" and enabled Isolate Blending and Knockout Group for
it. It now asks Item::is_group, so such a frame shows "Object:" with the
group options disabled.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The Effects panel had the blend mode, opacity and Drop Shadow only. Like InDesign's it now names the level the settings apply to with its blend mode and opacity (Group: Color Dodge 100%, Object: Normal 100%), and has Isolate Blending and Knockout Group, enabled for a selected group, through object.transparencyGroup.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A placed PDF, EPS or SVG under the Eyedropper matches attributes again,
as before, instead of failing with "no placed image under the point"
(Asset::is_raster, shared by the tool and color.sample). color.sample
hands its colour to object.color, which now colours selected text, the
text of selected frames ({text: true}), or the typing colour of an empty
story; a caret in existing text is refused before a swatch or undo step.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The Eyedropper on a placed image now does what InDesign does: with text
selected, clicking the photo colours the text with the image's colour under
the pointer; with objects selected, it fills them. The colour is an unnamed
colour (reused when the same colour is sampled again). Images on locked
layers can be sampled, and unfilled frames over the image let it show through.
- color.sample {at, spread?, target?: fill|stroke, ids?} samples the frontmost
visible raster image at a spread point; one undo step; a caret or a point
with no image is refused without an edit.
- object.color shares its swatch lookup with it.
- The Eyedropper tool sends color.sample over an image, matchAttributes
elsewhere as before.
Co-Authored-By: Claude Opus 5.5 <[email protected]>