A cross-platform font editor built in Rust and TypeScript
See the code
A modern, cross-platform font editor built with TypeScript and Rust, focused on bringing contemporary technologies and design principles to type design.
Shift aims to redefine font editing by combining the power of Rust for performance-critical tasks with the flexibility of web-based UI technologies. Whether you're a type designer or a developer, Shift offers a fresh approach to creating and editing fonts with a focus on speed, precision, and extensibility.
[!WARNING] Shift is an unstable Developer Preview. Versioned Alpha builds are for early testing, not production font work. Work on copies and retain independent backups. Installable builds are published through GitHub Releases; the latest complete development snapshot is available as Shift Nightly.
Linux versioned releases are available through signed APT and DNF repositories, with DEB, RPM, and AppImage direct downloads retained as alternatives.
┌──────────────────────────────────────────────────────────────┐
│ Desktop App │
│ Electron shell ←→ React UI ←→ TypeScript Editor │
└───────────────────────────────┬──────────────────────────────┘
│ IPC / native bridge
┌───────────────────────────────┴──────────────────────────────┐
│ Rust Crates │
│ shift-bridge transport adapter │
│ shift-workspace open working state │
│ shift-font live font authoring model │
│ shift-store canonical SQLite documents and recovery │
│ shift-cli document authoring and inspection CLI │
└──────────────────────────────────────────────────────────────┘
The desktop app owns shell and editor interaction. Rust owns the live font authoring model, canonical SQLite documents, durable recovery state, and native transport boundary.
shift-font is the core Rust object model:
Font owns glyphs, sources, axes, metadata, and font-level data.Source is an editable designspace position with a name and location.Glyph is a glyph concept identified by GlyphId.GlyphLayer is authored editable data for one glyph at one source.Stable IDs are identity. Names and Unicode values are editable metadata.
git clone https://github.com/shift-editor/shift.git
cd shift
pnpm install
pnpm dev
pnpm dev builds the Rust addon in debug mode through Turbo before starting Electron. Use pnpm dev:release for representative performance, or pnpm dev:watch / pnpm dev:watch:release to rebuild the addon when Rust changes.
The shift CLI can inspect canonical SQLite .shift documents without modifying them:
cargo run -p shift-cli -- inspect path/to/Family.shift
cargo run -p shift-cli -- inspect --view axes path/to/Family.shift
cargo run -p shift-cli -- inspect --json path/to/Family.shift
See crates/shift-cli/README.md for the supported views and development commands.
See ROADMAP.md for current implementation status and planned features. We are planning to ship a production grade font editor.
Windows releases are currently unsigned while Shift applies for open-source code signing. See the code signing policy for the signing scope, release controls, team roles, and network/privacy disclosures.
Security vulnerabilities can be reported privately to Kostya Farber.
Join our Discord server to ask questions, report bugs, or contribute!
GNU General Public License v3.0 only (GPL-3.0-only)
Copyright © 2026 Kostya Farber.
TypeScript
53.6%
Rust
41.7%
JavaScript
3.0%
A cross-platform font editor built in Rust and TypeScript
See the code
A modern, cross-platform font editor built with TypeScript and Rust, focused on bringing contemporary technologies and design principles to type design.
Shift aims to redefine font editing by combining the power of Rust for performance-critical tasks with the flexibility of web-based UI technologies. Whether you're a type designer or a developer, Shift offers a fresh approach to creating and editing fonts with a focus on speed, precision, and extensibility.
[!WARNING] Shift is an unstable Developer Preview. Versioned Alpha builds are for early testing, not production font work. Work on copies and retain independent backups. Installable builds are published through GitHub Releases; the latest complete development snapshot is available as Shift Nightly.
Linux versioned releases are available through signed APT and DNF repositories, with DEB, RPM, and AppImage direct downloads retained as alternatives.
┌──────────────────────────────────────────────────────────────┐
│ Desktop App │
│ Electron shell ←→ React UI ←→ TypeScript Editor │
└───────────────────────────────┬──────────────────────────────┘
│ IPC / native bridge
┌───────────────────────────────┴──────────────────────────────┐
│ Rust Crates │
│ shift-bridge transport adapter │
│ shift-workspace open working state │
│ shift-font live font authoring model │
│ shift-store canonical SQLite documents and recovery │
│ shift-cli document authoring and inspection CLI │
└──────────────────────────────────────────────────────────────┘
The desktop app owns shell and editor interaction. Rust owns the live font authoring model, canonical SQLite documents, durable recovery state, and native transport boundary.
shift-font is the core Rust object model:
Font owns glyphs, sources, axes, metadata, and font-level data.Source is an editable designspace position with a name and location.Glyph is a glyph concept identified by GlyphId.GlyphLayer is authored editable data for one glyph at one source.Stable IDs are identity. Names and Unicode values are editable metadata.
git clone https://github.com/shift-editor/shift.git
cd shift
pnpm install
pnpm dev
pnpm dev builds the Rust addon in debug mode through Turbo before starting Electron. Use pnpm dev:release for representative performance, or pnpm dev:watch / pnpm dev:watch:release to rebuild the addon when Rust changes.
The shift CLI can inspect canonical SQLite .shift documents without modifying them:
cargo run -p shift-cli -- inspect path/to/Family.shift
cargo run -p shift-cli -- inspect --view axes path/to/Family.shift
cargo run -p shift-cli -- inspect --json path/to/Family.shift
See crates/shift-cli/README.md for the supported views and development commands.
See ROADMAP.md for current implementation status and planned features. We are planning to ship a production grade font editor.
Windows releases are currently unsigned while Shift applies for open-source code signing. See the code signing policy for the signing scope, release controls, team roles, and network/privacy disclosures.
Security vulnerabilities can be reported privately to Kostya Farber.
Join our Discord server to ask questions, report bugs, or contribute!
GNU General Public License v3.0 only (GPL-3.0-only)
Copyright © 2026 Kostya Farber.
TypeScript
53.6%
Rust
41.7%
JavaScript
3.0%