Skip to content
Alekhya
DocsPainting

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.

ImportsDoes not import
The sampled tip bitmapDual brush
The tip's nameTexture modes
The tip's spacingTransfer 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.

PropertyValue
CategoryThe file's base name, so the pack arrives as its own category in Sub Tool. A file with no usable name lands in Imported.
NameThe tip's name from the pack, or Brush n where the pack gives none.
SizeThe 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.
SpacingConverted from Photoshop's percentage of tip diameter.
Grain0 — the imported tip carries its own texture.
Everything elseThe 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

VersionBehaviour
6Supported, both subversions.
10Read through the same path. An unrecognised layout fails safely and the record is dropped rather than decoding noise.
1, 2Refused. These use a genuinely different, much older layout.
Anything elseRefused.

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.

See also