Brush files
Exporting and importing brush packages, and what a Photoshop .abr pack does and does not bring with it.
Reference
- Tool
- Draw
- Panel
- Sub Tool
A brush can be written to a file and read back, on this device or another. Two formats are
readable: Alekhya's own brush package, and Photoshop .abr brush packs.
Both are reached from the action row at the foot of the Sub Tool panel.
Exporting a brush
Export this brush writes the selected brush to a single file, named after the brush. Only brushes you saved yourself can be exported.
The file is a JSON brush package. It carries the complete brush — every numeric parameter, including the tip set, texture, ribbon and scatter settings — and every asset the brush references, embedded in the file: tips, paint textures, ribbon motifs and captured meshes. The package is self-contained, so a brush built from a photograph you captured opens on another device with that photograph intact.
Only assets that are actually files travel. The procedural tips, motifs and textures are generated at runtime, so a brush using them refers to them by name and the package stays small.
The list of assets to embed is taken from the brush itself rather than from a hand-written list, so a brush using a system added later carries its assets automatically instead of quietly dropping them.
Importing a brush
Import a brush file reads either format. The format is determined by reading the bytes, not
by the file's extension: Alekhya's own package is tried first, and anything else is handed to the
.abr parser. A file with the wrong extension, or none at all, imports correctly.
An imported brush becomes a custom brush. Its identifier is replaced if it is empty or collides with a shipped brush, so an import can never overwrite a built-in.
Assets are restored under their original identifiers. Because an identifier is the hash of the asset's own bytes, re-storing identical bytes produces an identical identifier — so every reference inside the brush resolves with no rewriting, and importing the same tip twice is a deduplication rather than a copy. A package whose declared identifier does not match its actual bytes is treated as tampered with or truncated and rejected, rather than filed under a name other strokes trust.
Photoshop .abr packs
Photoshop .abr brush packs import as brushes. This is a tip importer, not a preset emulator,
and the distinction is deliberate.
| Imports | Does not import |
|---|---|
| The sampled tip bitmap | Dual brush |
| The tip's name | Texture modes |
| The tip's spacing | Transfer curves |
| Brush poses, and every other preset field |
A brush that claimed to reproduce Photoshop's engine and quietly did not would be worse than one that honestly imports the shape and lets you retune it. What arrives is the shape; the dynamics are yours to set in Brush Settings.
What lands in the library
Every sampled tip in the pack becomes its own brush — an .abr is a pack of presets, not a tip
set for one brush.
| Property | Value |
|---|---|
| Category | The file's base name, so the pack arrives as its own category in Sub Tool. A file with no usable name lands in Imported. |
| Name | The tip's name from the pack, or Brush n where the pack gives none. |
| Size | The tip's native pixel size. A Photoshop tip is authored at a particular size, and that is the brush's size — a 1,700px splatter and a 50px pencil are not the same brush at different sizes. |
| Spacing | Converted from Photoshop's percentage of tip diameter. |
| Grain | 0 — the imported tip carries its own texture. |
| Everything else | The application's default pencil state: 75% hardness, 50% opacity, pressure on size. |
The first imported brush is selected automatically. At most 200 brushes are imported from one pack; beyond that the remainder are skipped and the import message says so.
Naming
Names are joined to bitmaps by the tip's identifier, not by position. Preset order and bitmap order agree in a minority of real packs, and presets routinely outnumber bitmaps — Photoshop stores one bitmap per distinct shape and derives variants by resampling, and some presets have no bitmap at all. Where a bitmap is referenced only indirectly and has no name of its own, it arrives as Brush n.
Naming is best-effort by design: a failure here produces duller names, never a failed import.
Versions
| Version | Behaviour |
|---|---|
| 6 | Supported, both subversions. |
| 10 | Read through the same path. An unrecognised layout fails safely and the record is dropped rather than decoding noise. |
| 1, 2 | Refused. These use a genuinely different, much older layout. |
| Anything else | Refused. |
If a pack is refused for its version, the message names it: "That's a Photoshop … brush file, which is too old to read. Re-save it from a recent Photoshop and try again."
A pack whose brushes are all built from Photoshop's own round tip contains no shapes to sample, and reports: "That Photoshop pack has no brush shapes in it — its brushes are built from Photoshop's own round tip, which doesn't transfer."
Which brush files import
.abr is the only external brush format Alekhya reads. Brush files from other drawing
applications have no import path.
Where brush files live
Custom brushes and their assets are stored in the application's own support directory, separate from your projects. The asset store has exactly two operations — store and read — and no delete: deleting a brush can never orphan the artwork drawn with it, because the tip, texture or mesh that artwork re-rasterizes from is still there.
Brush assets also travel inside .alekhya and .alekhyashot files, so a project opens with its
strokes intact on a device whose library never had the brush.
