The Hindi localization page said the untranslated report has no Hindi
section, and the language table said Hindi has no gaps in it. On main
f793044f83 the report lists 608 missing Hindi rows (28 menu strings,
30 tl! strings, 11 undo labels and 539 messages) and 68 more that every
checked language lacks (10 menu strings, 2 undo labels and 56 messages).
Both pages now give these counts, and the table's remaining work for
Hindi includes the reported rows.
Indonesian had a row in both tables with different counts. Keep the row
in the key-language table and give it the counts on main at a47d7eec91.
Bosnian was described as having complete messages, but `bs` is not in
COMPLETE_MESSAGES. Its row now gives its counts and the menu, `tl!`
and undo gaps the untranslated report lists, and the measurement note
names Bosnian with the other languages outside COMPLETE_MESSAGES.
Paste read a file copied in a file manager whole with std::fs::read,
with no size limit. It now checks the opened file's size against
MAX_BYTES (64 MiB, the limit the Wayland clipboard reads already use,
now shared) before reading its first bytes, and reads the rest with a
bounded reader, so a file that grows after the check is read to at
most one byte past the limit and skipped. A skipped file lets the next
copied file that is art paste, as an unreadable one does.
A path's Drop Shadow, glow, blur, Feather or pixel filter listed before a
Transform effect that makes copies was drawn once under all the copies, at
the object's own distances. Each copy now carries those raster effects,
scaled by the copy's mean scale, with a Drop Shadow's offset turned,
reflected and scaled with the copy. Raster effects listed after the
Transform effect still paint once around all the copies. Copies that stop
at the effect budget keep their effects, and a Transform effect without
copies draws as before.
The canvas, the object's bounds, export, baking and Expand Appearance use
the same art. Type, images, symbol instances, groups, a fill's or stroke's
own copying Transform effect, and paths with Rasterize or an SVG filter
before the copying effect keep one set of raster effects.
The From the code bullet in docs/target-app-parity.md listed SVG Filters,
Graph › Column, Live Paint Gap Options, Optical Margin Alignment, the
global and video rulers, Window › Arrange, SVG Interactivity, Other
Script… and Start Global Edit as menu stubs, and repeated half the list
on two broken lines. All of those are bound to commands or panels now.
The list names the three menu items that are still todo entries:
Effect › 3D and Materials › Materials, Edit › Spelling › Check Spelling
and Help › VectorCraft Help. The dated counts are unchanged.
With useArtboards off, PDF, .ai and HP-GL exports sized their one page
by every visible object, including art they then leave out. A PDF
without includeNonPrinting or createLayers drops non-printing layers, so
art on such a layer made the page larger than what was drawn, and a
document whose only visible art did not print came out as a blank page.
An HP-GL plot draws nothing of non-printing layers, objects at 0%
opacity, placed images, gradient meshes whose every point is at 0%
opacity and paths that paint nothing, and such art moved the plot's
origin.
The page is now measured with that art hidden, and a document with no
other visible art is refused. A .ai file is measured with the PDF
options it is written with, so it keeps non-printing layers unless both
createLayers and includeNonPrinting are off. The PDF writer's own
non-printing filter uses the same helper, and the HP-GL writer's
plots_nothing says which objects a plot draws nothing of. Export As
measures an HP-GL plot of the art's bounds the same way, so a document
with nothing the plot draws stays in the dialog before the save panel.