With one object that Start Global Edit accepts selected with the Selection
tool, the canvas now highlights the other objects a start would take with the
current Global Edit Options, before Global Edit starts. The outlines are kept
per document revision and options, and none are shown during a drag.
Docs: docs/mcp.md (Global Edit), docs/gaps.md (G5).
- `charpath` in a CIDFont only named, over a predefined CMap, adds the
outlines of the characters its codes stand for, placed as `show` sets
them, and moves the point as `show` does. It added no outlines.
- `cshow` gives its procedure each code of such type, two bytes for a
two-byte code, with the code's width. It split two-byte codes into
single bytes.
- `glyphshow` sets the named character itself. It set the character's
UTF-8 bytes as Latin-1 letters.
- `kshow` runs its procedure between each two codes of such type, with
the two codes' values. It didn't run it. The procedure sees the font
the file set as current, and a font it sets stays current.
- A name that ends in the row-and-cell CMap `H` or `V` splits off the
CMap only when the file defines the CIDFont of that name (as a
resource or with `definefont`), or the name has a hyphen and an
installed face that covers Japanese has it. `Foo-Bold-H` stays a font
of the whole name.
- In a CMap that can't be read (`GBT-H`), each code moves the point one
em, along the line or down the column; a tab or carriage return byte
is a code of its own.
- One parser reads the names of the predefined Unicode CMaps, for EPS
and legacy `.ai` type.
- Outlines added to a path by `charpath` stop at the path's point limit.
- docs/file-format-parity.md, docs/gaps.md and docs/mcp.md describe type
in named CIDFonts over the predefined CMaps.
A linear, radial, conic or diamond gradient has a spread: Pad (the
default, as before), Repeat or Reflect, with a count of 1 to 100
(VectorCraft's own limit). Repeat and Reflect run the stops that many
times along the vector (around the turn for a conic) and keep going past
both ends, Reflect running every other run backwards, as SVG's
spreadMethod does.
The Gradient panel has a Spread menu and a Repeats field, and the
Gradient tool marks where the runs meet. paint.setFill and
paint.editGradient take `spread` and `repeats`; bad values are errors.
Presets, swatches, blends, strokes along or across a path, Outline
Stroke and Object › Expand follow the spread; Expand gives each run the
same whole number of objects, and Outline Stroke's mesh keeps the color
on each side of a sharp step between two stops at one offset.
SVG writes and reads spreadMethod: SVG import now reads a repeating or
reflecting gradient as one that repeats or reflects once, instead of
expanding its stops over the shape. CSS writes repeating gradients.
PDF writes a conic's sweep shading over one run. PDF, EPS, legacy .ai
and the .ai editing data write the other kinds with their stops
repeated across the shape: at most 256 runs and 16,384 stops (256 stops
in .ai files), and for a radial or diamond no farther than 65,536 runs
from its center, with a warning past those. PDF import now finds sharp
steps in any axial or radial shading instead of blurring them.
Docs: docs/mcp.md (Spread), docs/target-app-parity.md, docs/gaps.md.
Review feedback: with no tolerance, pen or trackpad jitter turned a tap
into a drag and the value was no longer selected. A release within 1 pt
of the press is a tap; anything further keeps the caret.
Regression test: a_tap_with_a_pixel_of_jitter_still_selects_all_on_release.
Effect › 3D and Materials › 3D (Classic) › Rotate (Classic)… turns every
fill and stroke as one flat plane, as Rotate does, and shades it with the
classic No Shading or Diffuse surface.
- `effect.apply` with `threeD.classicRotate`: the Position rotation and
Perspective, `surface` (`none` or `diffuse`), the classic lights,
Ambient Light, Blend Steps and Shading Color. It has no highlight, no
Draw Hidden Faces and no shadow.
- The dialog shows Position on the Rotation tab and the surface and
lights on the Lighting tab, with no Object tab.
- Groups and layers turn about one shared center, and the effect also
goes on a fill or stroke, as Rotate's does.
- `effect.lightingPreset` refuses it, as it refuses the other classic
3D effects.
- Unknown parameters, numbers out of range, bad flags, a surface other
than No Shading or Diffuse and bad shading colors are refused with an
error.
Effect › 3D and Materials › 3D (Classic) › Revolve (Classic)… sweeps the
profile round a vertical axis, as Revolve does, and draws every face with
the Wireframe, No Shading, Diffuse and Plastic surfaces of Extrude & Bevel
(Classic).
- `effect.apply` with `threeD.classicRevolve`: Angle (0 to 360), Cap,
Offset (0 to 1000 pt) from the left or right edge of the profile's
bounds, the Position rotation and Perspective, and the classic lights,
Ambient Light, highlight, Blend Steps and Shading Color.
- Groups and layers revolve about one shared axis, and the effect also
goes on a fill or stroke, as Revolve's does.
- `effect.lightingPreset` refuses it, as it refuses Extrude & Bevel
(Classic).
- Revolve faces carry their view-space normal, and
`three_d::revolve_facets` hands them to the classic surface code.
- Unknown parameters, numbers out of range and bad flags, edges,
surfaces and colors are refused with an error.
docs/gaps.md, docs/file-format-parity.md and docs/ui-parity.md still
listed the CNC preset as open after #5500 added it. They now name DXF
Options' Preset menu and dxfPreset: "cnc" on document.exportDxf; VCarve
QA stays open. The ui-parity row also no longer lists native CIRCLE/ARC
export as pending.
Window > Brush Libraries > Dry Media (`dry-media`) holds four art brushes:
Chalk Grain, Graphite Pencil, Wax Crayon and Charcoal Dust. Each is 100 pt
of filled vector paths generated from a fixed seed with integer steps and
plain arithmetic, at most 80 paths and 500 anchors, stretched along the
path with Tints colorization. The chalk and crayon art has even-odd gaps
cut out of its band.
The names, sizes and art are VectorCraft's own. A new i18n test checks
that every complete catalog names each built-in brush library.
The Graphic Styles library menu lists nine libraries. Painted and
Sketched follows Hand-Drawn and holds Washed Blue, Bristle Ochre,
Pastel Heather, Charcoal Shade, Ink Contour, Wet Ink and Fine Pen. Each
style is a solid fill, two with a 1 pt stroke, under one watercolor,
dry brush, rough pastels, charcoal, ink outlines, sumi-e or graphic pen
effect with every setting given. The library and style names have rows
in all 27 catalogs, and docs/mcp.md describes the library.
Window > Brush Libraries > Bristle Brushes holds ten original bristle
brushes generated in code, one for each tip shape: Fine Liner, Pointed
Flat, Stubby Round, Dry Scrub, Soft Dome, Filbert, Angled Round, Angled
Flat, Fan Blender and Grass Fan. Their names and values are VectorCraft's
own, and every value lies inside the range the bristle brush keeps.
A test checks the ranges, that every tip shape is covered, that no name
matches a default brush or another library's brush, that adding the
library is one undo step and a second add adds nothing, and that a saved
library reopens with the same brushes. The library and brush names have
rows in every catalog. docs/mcp.md lists the library.
Window › Graphic Style Libraries › Textures, after Hand-Drawn, holds eight
styles that paint their fills and strokes with the texture effects: Fine
Grain (Grain), Canvas Weave and Burlap Sack (Texturizer), Cracked Glaze
(Craquelure), Mosaic Floor (Mosaic Tiles), Quilted Squares (Patchwork),
Leaded Glass (Stained Glass) and Damp Paper (Water Paper). The styles,
their names and their settings are VectorCraft's own.
Each catalog has rows for the library and style names. Docs: docs/mcp.md,
docs/gaps.md, docs/target-app-parity.md.
Save and Save As as EPS always wrote the chosen artboard as the page and
%%BoundingBox, and the EPS Options hid Use Artboards, so art past the
artboard was left outside the file's bounding box.
The EPS Options of Save As now show Use Artboards with All or Range
under it, unchecked by default. Unchecked, Save writes one file whose
bounding box fits all the visible art, as Export does, without the
artboards' background colors; with no visible art the page is the first
artboard, in its color. Checked with two or more chosen artboards, the
file at the path is the central file of the visible art and each
artboard is also written to <name>_<artboard>.eps beside it. Checked
with one, that artboard is the page of the file at the path, the
behavior Save had since #4293 (mockydevs). The file the document becomes
still carries the whole editable document.
Naming artboards with artboard, artboards or range still turns Use
Artboards on. file.formatOptions now reports it on, with those artboards
as the range, and the Save As dialog opens that way.
Changed default: an EPS saved with Save or Save As, an opened EPS
included, now gets a bounding box around its visible art unless Use
Artboards is checked or the save names artboards; an opened EPS saved
back this way loses the margins its page had. selectedOnly stays an
Export option, and Save refuses it.
Docs: params text of document.save and file.formatOptions, the
useArtboards option text, docs/mcp.md save_file,
docs/file-format-parity.md, docs/target-app-parity.md, and notes on the
earlier EPS Save evidence in docs/gaps.md, docs/roadmap.md and
docs/target-app-parity.md.