shift README

The project's README from github.com/shift-editor/shift. As one markdown file: README.md.

image

Shift

A modern, cross-platform font editor built with TypeScript and Rust, focused on bringing contemporary technologies and design principles to type design.

image

Why Shift?

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.

Architecture

┌──────────────────────────────────────────────────────────────┐
│                         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:

Stable IDs are identity. Names and Unicode values are editable metadata.

Getting Started

Prerequisites

Quick Start

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.

Command-line inspection

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.

Roadmap

See ROADMAP.md for current implementation status and planned features. We are planning to ship a production grade font editor.

Security and signing

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.

Community

Join our Discord server to ask questions, report bugs, or contribute!

License

GNU General Public License v3.0 only (GPL-3.0-only)

Copyright © 2026 Kostya Farber.

shift (shift-editor/shift)

Searching Database…

358 ·GitHub
这是什么?Shift 是一款现代化、跨平台的字体编辑器,面向字体设计师和开发者,使用 TypeScript 和 Rust 构建,旨在把当代技术和设计理念带入字体设计领域。
它是桌面应用,还是在浏览器里运行?它是桌面应用:Electron 外壳负责编辑器的交互操作,而 Rust 核心负责实时的字体模型、作为权威数据来源的 SQLite 文档,以及恢复状态。
它能用来做真正的字体工作了吗?还不能——Shift 目前是一个不稳定的开发者预览版(Developer Preview):Alpha 构建只用于早期测试,不适合生产环境的字体工作,所以请在副本上操作,并保留独立的备份。此外,在开源代码签名落实之前,Windows 构建目前尚未签名。
为什么用 Rust 加网页 UI 技术来开发字体编辑器?作者希望把 Rust 在计算密集型字体工作中的性能优势与网页 UI 的灵活性结合起来,追求的是速度、精度和可扩展性,而不是沿用老旧字体编辑器的架构。
Shift 内部是怎么表示一个字体的?一个 Font(字体)拥有多个 glyph(字形)、source(源)、axis(轴)和元数据。每个 Source 是一个可编辑的 designspace 位置,带有名称和坐标;字形数据按 source 分层编写;字形的身份靠稳定的 ID 来标识,而不是靠名称或 Unicode 值。
Size
31.6 MB
Stars
358
Updated
CommitOct 15
Age
1y
Commits · 90 Days