Commit Graph
13938 Commits
Author SHA1 Message Date
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 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 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 9fb5abfbc6 Export: hidden PDF layers place symbol art effects when a long page raises the version
A PDF/A-2b export at PDF 1.4 with Create PDF Layers and a page longer
than 14,400 pt is written as PDF 1.6, which has PDF layers. The export
decided which layers place their instances' symbol art before it raised
the version, so a hidden layer, written as a PDF layer that is off, kept
its instances' art without the art's live effects.

The version a long page needs is now settled before the document is
baked. The pages come from the artboards, which baking leaves as they
are.
2026-11-14 13:28:34 -08:00
dotCooCoo 9120268b7e Merge main into fix/tr-message-rows 2026-11-14 13:27:33 -08:00
BFlat 9ddbf25bef Merge pull request #7553 from dotCooCoo/feat/da-complete-messages
i18n: Danish translates status and error messages
2026-11-15 04:23:09 +07:00
BFlat bb59d1c711 Merge pull request #7657 from dotCooCoo/feat/asset-export-panel-menu-options
Asset Export: Create Sub-folders, Open Location after Export and Format Settings in the panel menu
2026-11-15 04:23:01 +07:00
BFlat 3ccafde99f Merge pull request #7466 from dotCooCoo/fix/ai-wrap-options-edge-cases
.ai save: text wrap fixes for cut-away clipping fills and symbols without room
2026-11-15 04:22:46 +07:00
BFlat a901c024e5 Merge pull request #7387 from dotCooCoo/feat/arrange-nest
Cutting Tools: Nest Shapes packs the selected objects onto a sheet or roll
2026-11-15 04:22:37 +07:00
BFlat 20ae675b9b Merge pull request #7622 from dotCooCoo/fix/graph-label-restyle-keeps-plot
Graphs: restyling the labels leaves the plot where it is at the next redraw
2026-11-15 04:22:27 +07:00
BFlat 88dd37d2d9 Merge pull request #7527 from dotCooCoo/fix/3d-masked-cap-graphic-once
3D: a gradient fill with transparent stops and its stroke draw their graphic once
2026-11-15 04:22:18 +07:00
BFlat 88b83a8689 Merge pull request #7546 from dotCooCoo/fix/svg-raster-keeps-resolution
SVG import: a raster stored again as PNG keeps its resolution
2026-11-15 04:22:10 +07:00
BFlat e6b31e00d2 Merge pull request #7458 from dotCooCoo/fix/eps-cshow-composite-codes
EPS import: cshow runs once for each character of a composite font
2026-11-15 04:22:01 +07:00
BFlat 3bab3b6f5b Merge pull request #7444 from dotCooCoo/fix/later-span-taller-line-clears
Type: a taller line in a further span beside a wrap object no longer reaches into the line above
2026-11-15 04:21:51 +07:00
dotCooCoo 0257112158 TIFF: JPEG strips larger than their strip and oversized strip tables are refused before decoding
oversized_tiff now also refuses a TIFF whose JPEG-compressed strip or
tile (Compression 7) declares a frame wider or taller than the strip or
tile, one with more than MAX_TIFF_CHUNKS strips or tiles, and one whose
JPEG headers take more than 16,777,216 steps to read. It reads BigTIFF
directories, follows the layout and the repeated tags the decoder
reads, and refuses offsets of types it does not read.
2026-11-14 13:16:35 -08:00
dotCooCoo 5afe6b3b73 PDF export: a PNG or JPEG profile cut short is left out too
The check before a PNG or JPEG is embedded as it is read the profile's
color space only from a profile of at least 128 bytes, so a gray or RGB
profile cut short after its color space reached the PDF writer. The
color space is now read from bytes 16..20 of any profile that holds
them, and valid_icc rejects the short profile.
2026-11-14 13:12:25 -08:00