Commit Graph
4827 Commits
Author SHA1 Message Date
paaspaas00andClaude Opus 5.5 64242eb5bf Find/Change: Find Format
find.find, find.next and find.change take findFormat {charStyle?,
paraStyle?, chars?}: only matches whose text has the format all through
are found, and with an empty find, each stretch of text with it (the
longest runs, one per paragraph). Resolved attributes are compared to
within rounding; unknown styles and attributes are refused. A changed
Find Format restarts Find Next.

The dialog has InDesign's Find Format box above Change Format, with its
ⓘ beside Find what; Find Format Settings is the Change Format Settings
dialog opened for finding. Found in the Learn Skills Daily course,
chapter 22.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 17:57:02 +02:00
paaspaas00andClaude Opus 5.5 95006e9e9e Find/Change: Change Format, with a character or paragraph style
find.change takes a Change Format: charStyle and paraStyle as well as
the character attributes (attrs) it took. With a Change Format and an
empty change, the found text stays and is only formatted, as InDesign
does; without one an empty change still deletes. The style-apply code of
style.paragraph.apply / style.character.apply moves into helpers that
find.change shares.

The Find/Change dialog has InDesign's Change Format box, with Specify
Attributes (opening Change Format Settings over Find/Change: Style
Options, then the character sections of Character Style Options) and
Clear. An info icon beside Change to says an empty Change to keeps the
text. Found in the Learn Skills Daily course, chapter 22.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 17:44:12 +02:00
paaspaas00andClaude Opus 5.5 9d46967f16 Character styles: a new style from the selected text, applied to it
New Character Style with text selected starts from what the text has of
its own over its paragraph style (its character style's attributes and
its overrides), as InDesign's "[None] + Bold + color", and Apply Style to
Selection (on) gives the text the new style with no override left. A new
style's dialog is titled New Paragraph Style / New Character Style.
type.selectionAttrs reports the text's own character attributes as
ownChars. Found in the Learn Skills Daily course, chapter 22.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 17:15:28 +02:00
Hamza 0fc845750a An underline runs across a tab, as the rest of the line's text (#1466)
A tab draws nothing, so it was left out of the underline and strikethrough
bars: they stopped at the last letter before each tab and began again after it.
Forms rule their fill-in lines with underlined tabs — `Name ⇥⇥⇥⇥, city ⇥⇥⇥⇥` —
so an imported form lost every writing line, and an IDML `Underline="true"` on
a run of tabs drew nothing at all.

A tab is a character with an advance, and InDesign rules its whole width.
`PlacedGlyph::spans_rules` says which glyphs a rule runs across: the drawn
ones, and a tab or a right-indent tab that advances. The spaces a line break
trimmed off the end, the break characters and the markers' carriers are not
part of the line's text and are still skipped, so an underline stops at the
text and not at the frame edge.

Both places that draw the bars from the glyphs use it: the renderer
(`build_line`) and the PDF export (`text_rules`). The HTML and PPTX exports
mark up runs of text, which already included their tabs.

Measured on the repro in the issue, a 420×120 pt page at 2×:

  before   one underline, 63 px: the word "Name"
  now      three, 63 + 219 + 231 px: the word and both tab stretches

and the exported PDF gains the two fills for them. A tab with a leader is one
continuous bar across the leader dots to the right-aligned text after it.

Tests: the renderer's bars and the PDF export's bars for "Name<tab>City" are
one bar covering the tab's width, not two with a gap where it is. Both fail
without the change (two bars, 36→67.7 and 72→93.2, the tab's 67.7–72 unruled).
2026-10-21 20:04:12 +05:00
paaspaas00andClaude Opus 5.5 2c1973a6e4 Control panel (¶): Bulleted and Numbered List, Shading and Border, as InDesign's
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 16:16:25 +02:00
paaspaas00 0ff33bead8 Merge list-buttons-hanging-indent (#1483) into control-panel-lists-shading 2026-10-21 16:09:04 +02:00
paaspaas00andClaude Opus 5.5 d755ea2b09 Properties: Bullets and Numbering's Options opens the Bullets and Numbering dialog
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 16:07:30 +02:00
paaspaas00andClaude Opus 5.5 189cccd2fc Bulleted and Numbered List buttons give InDesign's default hanging indent
The Properties buttons and Type > Bulleted & Numbered Lists > Apply Bullets /
Apply Numbers (list.bullets, list.numbers) apply the list with Left Indent
0.25 in / First Line Indent -0.25 in when the paragraph has no indents, so the
text lines up after the bullet; pressed again, the list and that indent go.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 16:04:31 +02:00
paaspaas00andClaude Opus 5.5 ff5b065faf Place cursor: the thumbnail stays until a drag starts drawing the frame
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 15:33:11 +02:00
paaspaas00andClaude Opus 5.5 a401aba8c4 Clear Fitting Options leaves frames whose options are already clear
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 15:28:11 +02:00
paaspaas00andClaude Opus 5.5 1ffa37aaa5 Opacity slider: shown without a change, it commits the drag's preview at once
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 15:11:47 +02:00
paaspaas00andClaude Opus 5.5 098613b75d Place cursor: a drag under the threshold is a click, with no frame drawn
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 15:05:00 +02:00
paaspaas00andClaude Opus 5.5 03754e381a Paragraph styles: Based On and Next Style must name styles; the dialog resolves over the chosen Based On
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 14:58:44 +02:00
hslrmnp27 3119f292b4 T.DE1: merge German 2006 hyphenation with upstream 0.10.0
Resolve documentation conflicts while preserving upstream updates and the PR's German 2006 implementation. Validation: formatting, PDF dependency check, workspace Clippy, asset attribution, layering and German composition tests pass. Full CI reaches four existing Windows/path-related engine test failures in unchanged upstream files.
2026-10-21 14:47:31 +02:00
paaspaas00andClaude Opus 5.5 8ec58cc1cc Number fields are labelled by the icon that names them (accessibility)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 14:38:28 +02:00
paaspaas00 b768ea789e Merge properties-more-options into control-panel-text-modes 2026-10-21 14:33:32 +02:00
paaspaas00andClaude Opus 5.5 4320235bc6 Space Before / Space After in the shared translation table
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 14:33:10 +02:00
paaspaas00andClaude Opus 5.5 4c5c25c4e4 Swatches: a Paper swatch is editable whatever its name
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 14:24:41 +02:00
paaspaas00andClaude Opus 5.5 ff56cdde4e Clear Fitting Options: no edit, and no undo step, when nothing can change
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 14:22:35 +02:00
paaspaas00 687b96a16f Merge remote-tracking branch 'origin/main' into codex/preserve-cjk-auto-overrides 2026-10-21 14:13:51 +02:00
paaspaas00andClaude Opus 5.5 cd53ae04be Parity: the Text Frame Options Preview with an invalid value, spelt out
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 13:50:38 +02:00
paaspaas00andClaude Opus 5.5 f972cebb96 Paragraph style edits: Reset To Base with a new Based On resolves over it, is checked against it and previewed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 13:47:05 +02:00
paaspaas00andClaude Opus 5.5 46d830cb3b Paragraph rules: gap in Text Color, IDML overrides from the new fields alone, Text Color in the Color menu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 13:33:24 +02:00
paaspaas00andClaude Opus 5.5 3d3bed65b8 Text Frame Options: an invalid value takes the preview off the page; parity entry
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 13:26:56 +02:00
paaspaas00andClaude Opus 5.5 13527f9cb7 Control panel fields: Escape reverts any typed value; parity docs for the text modes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 13:15:51 +02:00
paaspaas00andClaude Opus 5.5 5544efdbdc Effects angle dial: arrow keys and assistive-technology steps turn it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 13:03:03 +02:00
paaspaas00andClaude Opus 5.5 c9e831e732 Effect blend modes: reject an unknown mode; IDML shadows without BlendMode stay Normal
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:58:48 +02:00
paaspaas00andClaude Opus 5.5 e811b65e82 Clear Fitting Options skips locked frames
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:38:29 +02:00
paaspaas00andClaude Opus 5.5 bd8abe3972 Docs: Swatches rows' type columns in the parity overview
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:22:04 +02:00
paaspaas00andClaude Opus 5.5 d9f0d2c004 Direct Selection: a point selection without Shift selects only those points' paths
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:21:42 +02:00
paaspaas00andClaude Opus 5.5 dcc8aed378 Direct Selection: selected points follow added, deleted and reversed points
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:11:06 +02:00
paaspaas00andClaude Opus 5.5 f3800df46b Properties: corner and stroke type rows fit their translated names
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:06:21 +02:00
paaspaas00andClaude Opus 5.5 7c07c883b0 i18n: Object/Convert Point for Edit › Menus
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:02:29 +02:00
Nikolai Nyegaard 5879134502 Preferences: list the languages alphabetically by their own name
- English (and Auto where offered) stays first as the source language and fallback; the rest sort by native name with accents folded, so Čeština is under C and Magyar under M; Cyrillic and CJK names follow the Latin ones
- The list used the registry order, which is the order the languages were added
2026-10-21 12:01:45 +02:00
paaspaas00andClaude Opus 5.5 9892ae0560 Docs: format_measure's precision per unit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:00:18 +02:00
paaspaas00andClaude Opus 5.5 717fcd6dec Type tool: a release away from the press doesn't convert the empty frame
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:00:01 +02:00
paaspaas00andClaude Opus 5.5 ee48326797 i18n: Corner Size and Shape: in Spanish (and the German and Japanese fallbacks)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 11:58:36 +02:00
paaspaas00andClaude Opus 5.5 6cb9466129 Docs: the Properties ••• sections in the UI parity checklist
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 11:57:12 +02:00
paaspaas00andClaude Opus 5.5 5d6f79d325 An ellipse or polygon frame keeps the X across its bounds
The corner-to-corner X is for rectangles (slanted or not): four corner points without handles,
on a Rectangle or Path item. An ellipse frame (four smooth anchors) and a four-sided polygon (a
diamond) would otherwise get a plus through their centre; they keep the X across their bounds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 11:55:46 +02:00
paaspaas00andClaude Opus 5.5 151f54ee46 Paragraph styles: a new style from the selected text, Next Style, Reset To Base
New Paragraph Style with text selected starts from it, as InDesign's: Based On [No Paragraph
Style] and every setting of the text that differs from it, with Apply Style to Selection (on), so
OK gives the paragraph the new style. General has Next Style ([Same style] or a style) and Reset
To Base (the style keeps nothing of its own; edits made in the dialog still apply). Basic
Character Formats is laid out in two columns as InDesign's: the font, then Size | Leading,
Kerning | Tracking, Case | Position.

style.paragraph.edit honours nextStyle (string, or null for [Same style]); it was described but
ignored. It takes resetToBase.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 11:48:16 +02:00
paaspaas00andClaude Opus 5.5 85932f18ab Paragraph rules: Type, Gap Color and Tint, Keep In Frame
A paragraph rule has InDesign's Type: solid, the thick/thin stripes, dashed, dotted, straight hash,
wavy, or a stroke style of the document. Composition draws it as that shape in the rule's box
(dashes and dots as boxes and circles, stripes, waves and hashes as their outlines), with Gap
Color and Gap Tint underneath; a pattern that can't be laid out draws solid. Keep In Frame keeps a
rule above the first line of a frame inside the frame.

The Paragraph Rules page (paragraph style options and the Paragraph Rules dialog) is laid out as
InDesign's: Weight and Type, Color and Tint, Gap Color and Gap Tint, Width and Offset, Left and
Right Indent, Keep In Frame. IDML reads and writes RuleAboveType/RuleBelowType, the gap colour and
tint, and KeepRuleAboveInFrame. A rule's new settings at their defaults stay out of the JSON.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 11:29:19 +02:00
paaspaas00andClaude Opus 5.5 bd340e6648 Text Frame Options: InDesign's layout, Preview and the Paragraph Spacing Limit
The dialog follows InDesign's: General, Column Rules, Baseline Options, Auto-Size; on General,
framed Columns (Number and Width, Gutter and Maximum, Balance Columns), Inset Spacing (Top and
Bottom, the link, Left and Right) and Vertical Justification (Align, Paragraph Spacing Limit),
with spinner fields. With Fixed Number, Width shows each column's width as the number, gutter
and insets change.

Preview shows the options on the page while the dialog is open (redone as fields change); Cancel
puts the frames back, OK sets them once as one undo step.

Vertical Justification › Justify honours the Paragraph Spacing Limit: the extra space goes
between paragraphs, up to the limit each, and what is left spreads over every line (all of it,
with no limit, as before). object.textFrameOptions takes it as paragraphSpacingLimit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 10:54:06 +02:00
paaspaas00andClaude Opus 5.5 e177529f98 Control panel: the text controls have InDesign's Character (A) and Paragraph (¶) modes
A shows the Character Formatting Controls: font and style, size and leading, All Caps,
Superscript, Underline / Small Caps, Subscript, Strikethrough, kerning and tracking, vertical and
horizontal scale, baseline shift and skew, the character style and the language. ¶ shows the
Paragraph Formatting Controls: the nine alignments, left and first line indents, right and last
line indents, space before and after, the drop cap's lines and characters, the paragraph style,
Hyphenate and Align to Baseline Grid. The fields' icons carry their names (tooltip and
accessibility). It used to show a fixed mix of both.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 10:02:03 +02:00
paaspaas00 7a970ca88c Merge remote-tracking branch 'fork/properties-more-options' into control-panel-text-modes
# Conflicts:
#	ROADMAP.md
2026-10-21 09:55:50 +02:00
paaspaas00andClaude Opus 5.5 578a1ce169 Properties: ••• expands Character and Paragraph in place, as in InDesign
Character's ••• shows vertical and horizontal scale, baseline shift, skew, language and
OpenType (the Typography panel), and the All Caps, Small Caps, Superscript, Subscript,
Underline and Strikethrough buttons. Paragraph's ••• shows the left, right, first line and last
line indents, space before and after, the drop cap's lines and characters, Align to Baseline Grid
and Hyphenate. ••• again folds the section. It used to open the Character or Paragraph panel.

The language field moves under •••, where InDesign has it. New icons for the scales, baseline
shift, skew, indents, spacing and drop caps; widgets::checkbox and ••• report their labels to
accessibility.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 09:54:22 +02:00
Dylan M. Taylor 3ce3a24f08 Merge pull request #1110 from dylanmtaylor/ci/shared-nix-workflow
ci: switch to shared nix workflow from craft-common-actions
2026-10-21 03:40:09 -04:00
moppeeerandClaude Opus 5.5 161b359c37 Effects dialog: InDesign's angle dial beside each Angle field
A circle whose radius points where the light comes from; a click or drag on
it sets the angle (0 degrees to the right, counter-clockwise).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 08:33:09 +02:00
moppeeerandClaude Opus 5.5 75d72c69b5 Effects: blend modes for Drop Shadow, Inner Shadow and Outer Glow
As InDesign's Effects dialog › Blending › Mode: the shadows start Multiply
and the outer glow Screen in white; the renderer blends each with what's
behind it, the commands take mode, IDML reads and writes the drop shadow's
BlendMode. Effects saved before read Normal, as they were drawn.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 08:28:10 +02:00
aiongg 8097e2cf4d #1311: group the dock's panel icons as InDesign does 2026-10-21 04:49:27 +00:00
skylar taylor-barrick 9f7504931d Merge pull request #1352 from FredApps/ci-xtask-ci-workflow
CI: run cargo xtask ci on pull requests and pushes to main
2026-10-20 22:40:42 -06:00