Commit Graph
13972 Commits
Author SHA1 Message Date
dotCooCoo 098e819a04 Place: Show Import Options asks for each file's import options or uses the last ones
The Place dialog gets a Show Import Options checkbox after Link, Template
and Replace. On (the default, saved with the preferences), each PDF, DXF
or text file asks for its import options before it is placed, also each
file of the place cursor when it is clicked or dragged. Off, each file is
placed with the options last confirmed for its format: the Text Import
Options, the DXF fit, lineweight, centering and layer choices, a PDF's
first page and crop box. An encrypted PDF still asks for its password.

file.place takes showImportOptions (true or false; anything else is an
error). Text Import Options now remembers its options and starts from
them.
2026-11-14 18:08:06 -08:00
BFlat dafd993395 Merge pull request #7658 from dotCooCoo/feat/svg-filter-defaults
Effects: Effect › SVG Filters lists default filters
2026-11-15 06:18:12 +07:00
BFlat 4cf0a4b182 Merge pull request #7474 from dotCooCoo/feat/ai-insert-aki
Type: .ai import reads Insert Aki, and .ai save writes it
2026-11-15 06:18:04 +07:00
BFlat 4e42e2bbb0 Merge pull request #7681 from dotCooCoo/feat/east-asian-glyph-forms
Type: Glyphs panel menu draws the selected characters in an East Asian glyph form
2026-11-15 06:17:55 +07:00
BFlat 9f6edb7239 Merge pull request #7682 from dotCooCoo/fix/graph-outline-stroke-keeps-plot
Graphs: Outline Stroke and a graph left with only labels keep the plot in place
2026-11-15 06:17:47 +07:00
BFlat 3ceba6c56c Merge pull request #7688 from dotCooCoo/fix/js-computed-key-stays-counted
Scripts: a property name converted from an object stays counted while its getter or setter runs
2026-11-15 06:17:40 +07:00
BFlat 6d0c318951 Merge pull request #7689 from dotCooCoo/fix/links-brush-art-thumbnails
Links: rows of images in stored brush art show their thumbnails
2026-11-15 06:17:31 +07:00
BFlat 5872e71651 Merge pull request #7452 from dotCooCoo/feat/trace-preset-defaults
Image Trace: presets trace at Paths 50 with new Corners and Noise
2026-11-15 06:17:23 +07:00
BFlat 4fffbce639 Merge pull request #7614 from dotCooCoo/fix/export-cull-brushed-path-art
PDF, EPS and print: a brushed path just off the page whose brush paints onto it is written
2026-11-15 06:17:15 +07:00
BFlat b0444043bb Merge pull request #7677 from dotCooCoo/fix/tiff-jpeg-strip-budget
TIFF: JPEG strips larger than their strip and oversized strip tables are refused before decoding
2026-11-15 06:17:06 +07:00
BFlat a92993daf9 Merge pull request #7582 from dotCooCoo/fix/clip-effects-hit-test
Selection: clicks in a clip group follow the region its clipping path's effects give it
2026-11-15 06:16:57 +07:00
BFlat 6b947b28a3 Merge pull request #7676 from dotCooCoo/fix/clip-group-paint-bakes-clip-effects
Effects: a clip group with its own paint exports the clip its clipping path's effects shape
2026-11-15 06:16:48 +07:00
BFlat bc2f9d888a Merge pull request #7683 from dotCooCoo/fix/hpgl-art-bounds-dynamic-symbols
Export: an HP-GL plot of the art's bounds leaves out images in dynamic symbols
2026-11-15 06:16:40 +07:00
BFlat 03cca98963 Merge pull request #7673 from dotCooCoo/fix/pdf-layers-long-page-symbol-art
Export: hidden PDF layers place symbol art effects when a long page raises the version
2026-11-15 06:16:33 +07:00
BFlat 7ddeef73d6 Merge pull request #7608 from dotCooCoo/fix/emfplus-import
Metafile import: EMF and WMF are read through craft-metafile, so EMF+ pictures open
2026-11-15 06:16:24 +07:00
BFlat 6f5bf3dd6d Merge pull request #7679 from dotCooCoo/fix/colr-empty-fill-keeps-clip
Text: a COLR fill that paints nothing keeps the clip around the glyph after it
2026-11-15 06:16:16 +07:00
BFlat afca93f151 Merge pull request #7684 from dotCooCoo/fix/japanese-messages-docs
Docs: Japanese messages are listed as partial, with the untranslated report's count
2026-11-15 06:16:08 +07:00
BFlat 8b8daabf3e Merge pull request #7359 from dotCooCoo/fix/tr-message-rows
i18n: Turkish has a row for 1,811 of the messages the untranslated report lists
2026-11-15 06:16:00 +07:00
BFlat 66c73c4b91 Merge pull request #7685 from dotCooCoo/fix/warichu-line-height-block-lines
Type: a warichu line holds the ascent and descent of its outer block lines
2026-11-15 06:15:52 +07:00
FredApps 8f8956f385 CI: FreeBSD builds one crate at a time (the nightly run is killed for memory) (#7636)
* CI: FreeBSD builds with two jobs

The nightly FreeBSD run has been killed for memory (exit 137) while
compiling the workspace's test targets, on both architectures, every
night since at least 9 November. Two rustc processes at a time fit in
the VM's 12 GB.

* CI: one FreeBSD build job at a time

With two jobs the engine and ui-egui test builds were still killed when
they compiled together.
2026-11-14 23:35:26 +01:00
BFlat c290957988 Merge pull request #7483 from dotCooCoo/fix/uk-missing-message-rows
i18n: Ukrainian translates 114 messages that no catalog had a row for
2026-11-15 05:31:03 +07:00
BFlat 0fe02d8544 Merge pull request #7651 from dotCooCoo/feat/smart-punctuation-dialog
Type: Smart Punctuation replaces ligatures, extra spaces and fractions and reports results
2026-11-15 05:30:55 +07:00
BFlat c0ce77a912 Merge pull request #7663 from dotCooCoo/feat/perspective-auto-plane-positioning
Perspective: Perspective Grid Options has Automatic Plane Positioning
2026-11-15 05:30:40 +07:00
BFlat 52ec037f4a Merge pull request #7425 from dotCooCoo/fix/ai-envelope-budget-warped-type
.ai save: images with a Warp count against the envelope limit
2026-11-15 05:30:30 +07:00
BFlat 0e78bfa60c Merge pull request #7580 from dotCooCoo/fix/create-outlines-gradient-layout-bounds
Type: Create Outlines keeps a run's gradient across the whole text
2026-11-15 05:30:22 +07:00
BFlat ada5c74c47 Merge pull request #7203 from dotCooCoo/fix/file-folder-param-classification
Automation: one classification of file and folder params
2026-11-15 05:30:12 +07:00
BFlat 9153900b1f Merge pull request #7322 from dotCooCoo/fix/graph-series-group-opacity
Graphs: the transparency set on a series group is kept
2026-11-15 05:30:04 +07:00
BFlat 8346001971 Merge pull request #7618 from dotCooCoo/fix/opentype-ligature-note-every-frame
OpenType panel: the tracked-ligatures note reads every selected story frame
2026-11-15 05:29:54 +07:00
BFlat 35bf3a7412 Merge pull request #7625 from dotCooCoo/fix/shape-builder-open-path-drawn-fill
Shape Builder: an open path counts as filled by the fill rows that draw
2026-11-15 05:29:46 +07:00
BFlat 2986ddb104 Merge pull request #7462 from dotCooCoo/fix/convert-to-text-locked-frames
Type: Convert to Text and Remove Breaks on a selected story include its locked and hidden frames
2026-11-15 05:29:38 +07:00
BFlat 63e40bca44 Merge pull request #7488 from dotCooCoo/fix/3d-shadow-builds-once
3D: a render with a shadow builds each solid once
2026-11-15 05:29:29 +07:00
BFlat d68b7f3990 Merge pull request #7670 from dotCooCoo/feat/open-pdf-pages-as-links
Import PDF: Import PDF pages as links opens each page linked to its file
2026-11-15 05:29:21 +07:00
BFlat c69375c7f3 Merge pull request #7633 from dotCooCoo/fix/trace-clean-gray-photo-tone
Image Trace: a gray photo with little noise counts as continuous tone
2026-11-15 05:29:13 +07:00
BFlat dcd6e69e83 Merge pull request #7610 from dotCooCoo/fix/text-wrap-offset-refused
Text wrap: an out-of-range or non-number offset is refused
2026-11-15 05:29:05 +07:00
BFlat 007b2b66fb Merge pull request #7540 from dotCooCoo/fix/pdf-tiff-keeps-icc
PDF export: a stored gray or RGB image keeps its ICC profile
2026-11-15 05:28:56 +07:00
BFlat ada1c9263a Merge pull request #7555 from dotCooCoo/fix/tabbed-rtl-negative-tracking-break-bound
Type: a tabbed right-to-left line with negative tracking stops reading after a bounded number of breaks
2026-11-15 05:28:48 +07:00
BFlat ccb62b0912 Merge pull request #7660 from dotCooCoo/fix/svg-use-chain-bounded
SVG import: refuse an SVG whose use copies and styles expand past the limits
2026-11-15 05:27:22 +07:00
BFlat 15ae607c63 Merge pull request #7667 from dotCooCoo/feat/links-sort-by-size
Links: Sort by Size in the panel menu lists the smallest file first
2026-11-15 05:27:12 +07:00
BFlat 052c1b1d77 Merge pull request #7465 from dotCooCoo/fix/blend-reversed-key-stroke-direction
Blend: stroke gradients and dashes follow a key path the blend turns
2026-11-15 05:27:01 +07:00
BFlat f90f65736b Merge pull request #7253 from ncic/pencil-no-guides
Pencil: ignores Smart Guides and Snap to Point
2026-11-15 05:26:52 +07:00
dotCooCoo aaae3fe378 Links: rows of images in stored brush art show their thumbnails
The panel collected the objects for its nested rows from the document
as it is between commands, where the art of the stored brushes is not
set, so rows whose owner is a brush found no object and drew a blank
thumbnail. When an id is not found otherwise, the panel now sets that
art on a copy of the document, as links.list does, and collects the
objects from it. A recheck of the files at the same revision keeps the
objects collected before.
2026-11-14 13:56:22 -08:00
dotCooCoo a750c997be Scripts: a property name converted from an object stays counted while its getter or setter runs
A computed name such as o[key], where key's toString returns a rope,
is flattened into a copy that only native code held. A getter or
setter that started a collection dropped that copy from the heap
estimate, so the live heap could pass the limit by one name per
nested access. Indexed reads, ++ and -- on an indexed property, and
Object.defineProperty now keep the converted name reachable while the
accessor runs.
2026-11-14 13:51:09 -08:00
dotCooCoo dfc4db7a9b Docs: Japanese messages are listed as partial, with the report's count
The Japanese row in docs/localization-parity.md said every message is
translated, and the Japanese catalog line in docs/target-app-parity.md
said 38 messages were missing, one of them waiting on #7214, which has
merged. On main the untranslated report lists 98 messages without a
Japanese row, 77 of which every complete-message language lacks. Both
lines now give the counted rows and the report's count, and name the
open pull requests that translate part of them.
2026-11-14 13:47:36 -08:00
dotCooCoo f1cffdd8c0 Type: a warichu line holds the ascent and descent of its outer block lines
A block's line took the tallest ascent and deepest descent of its
characters, or the height of the stack's em boxes, whichever was larger.
The top block line's characters reach above the stack by their ascent
past the em box, and the bottom line's below it by their descent, so with
a wide Line Gap the line was too short for them. The line's ascent and
descent now also take in each character's reach from its own block line's
baseline.
2026-11-14 13:46:56 -08:00
dotCooCoo b12c78a731 Graphs: Outline Stroke and a graph left with only labels keep the plot in place
- Outline Stroke on a graph's strokes, including Object > Expand with
  Stroke on, adjusts the bounds the graph keeps, the same way
  Create Outlines on its labels does. Before, the stroke outlines
  changed the bounds of the art without type, and the next redraw
  stretched the plot by the width the outlines added.
- A graph that keeps `placedArt` and has no art other than type left
  is no longer measured on the bounds of all its art. A label edit on
  such a graph moved and stretched the plot at the next redraw; the
  plot now stays where it is.
- A redraw no longer measures a move or scale on art that has no width
  or no height now, such as a graph left with one axis line. Before,
  the plot collapsed to no width.
- A clipping group in a graph that holds type is measured on its clip
  when the clip does not depend on type, so moving art outside the clip
  does not change the bounds. Blends, envelopes and repeats are
  measured whole, as they are drawn.
- The doc crate's helper is named `graph_art_without_type` and sits
  with the file's other free functions.
- docs/mcp.md lists Outline Stroke and states that moving an outlined
  label, a swatch, an axis or a tick mark on its own can move or scale
  the plot, and that a graph left with only labels, or with art that
  has no width or height, does not follow a move.
- Tests: a scale of the graph made before outlining a label, a move of
  a graph opened from `.ai` after its label is restyled and moved,
  Outline Stroke after a move, a graph left with only its labels or
  with one line, and clipping groups holding type.
2026-11-14 13:45:46 -08:00
dotCooCoo c61d27b825 Metafile import: hidden WMF records leave the scale alone, and a far stroke keeps the strokes before it
A WMF without a placeable box picks its scale from the map mode its
drawing records are played in. Lines and shapes drawn under R2_NOP or
R2_XORPEN, and PATBLT records the reader does not fill, no longer count,
with the mix mode saved and restored with SAVEDC and RESTOREDC.

An open stroke that reaches far outside the picture is left out before
it joins the strokes waiting to be joined, so the strokes drawn before
it are still added.
2026-11-14 13:39:05 -08:00
dotCooCoo 2212af9653 Text: a COLR fill that paints nothing keeps the clip around the glyph after it
A fill in a glyph's clip marked the clip as filled before the fill was
added. When the fill painted nothing (a palette index past the palette,
or a radial gradient that draws no circle), the next glyph painted in
the same clip became the clip's only child, and closing the clip kept
that glyph on its own, so it drew outside the clip.

The clip is now marked filled only when the fill adds the clip's first
child, and a fill that adds nothing leaves the mark as it was.
2026-11-14 13:38:31 -08:00
dotCooCoo 25b451acec Effects: a clip group with its own paint exports the clip its clipping path's effects shape
A clip group with a fill or stroke of its own and no geometry effect is
baked through bake_pieces, which baked the clipping path like any other
member instead of applying the geometry effects in it as the canvas clips
by it. A compound clipping path whose member has a Transform effect with
copies then baked into nested compound paths, and SVG, PDF and the other
exports dropped the moved member and its copies from the clip.

bake_pieces now applies with_clip_effects_applied to the clipping path
first, as the plain clip group route already does. Clipping type keeps
its own handling.
2026-11-14 13:34:22 -08:00
dotCooCoo 55615be12c Export: an HP-GL plot of the art's bounds leaves out images in dynamic symbols
A plot of the art's bounds now leaves placed images, objects at 0%
opacity and unpainted paths out of the art of a dynamic symbol, as it
does for other symbols. An object that an instance's fill, stroke or
opacity makes the plot draw is measured for that instance only, and an
instance whose symbol holds nothing else is left out, so a document
with only such instances is refused.
2026-11-14 13:34:13 -08:00
dotCooCoo f4a5d65f6b Type: Glyphs panel menu draws the selected characters in an East Asian glyph form
With Show East Asian Options on, the Glyphs panel menu lists Traditional
Forms, Expert Forms, JIS 04, JIS 90, JIS 78 and JIS 83 Forms, Monospaced
Full-Width, Half-Width, Third-Width and Quarter-Width Forms, and Revert
To Default Forms. Each form draws the selected characters with the
font's OpenType feature for it (trad, expt, jp04, jp90, jp78, jp83,
fwid, hwid, twid or qwid). A form is checked when every selected
character has it and disabled when none of the faces that draw the
selected text, fallback faces included, has the feature.

The form is a new character attribute, glyphForm, one form at a time
(text.setFormat, text.setRangeStyle). It is saved only when set,
character styles carry it, and runs that differ only in their form
shape as one piece of text. SVG writes it in font-feature-settings;
PDF draws the glyphs from the layout.
2026-11-14 13:29:30 -08:00