https://github.com/shift-editor/shift
A cross-platform font editor built in Rust and TypeScript using the Tauri framework
https://github.com/shift-editor/shift
fonts rust tauri typescript
Last synced: 3 months ago
JSON representation
A cross-platform font editor built in Rust and TypeScript using the Tauri framework
- Host: GitHub
- URL: https://github.com/shift-editor/shift
- Owner: shift-editor
- License: gpl-3.0
- Created: 2024-12-09T07:56:14.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-03-28T21:56:36.000Z (3 months ago)
- Last Synced: 2025-04-09T19:16:56.146Z (3 months ago)
- Topics: fonts, rust, tauri, typescript
- Language: TypeScript
- Homepage:
- Size: 6.61 MB
- Stars: 100
- Watchers: 4
- Forks: 5
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
Shift
A modern, cross-platform font editor built with TypeScript and Rust, focused on bringing contemporary technologies and design principles to type design.

## 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.
> [!IMPORTANT]
> Shift is in a pre-alpha state and is currently only suitable for developers interested in contributing to the project## Architecture
Shift uses the Tauri framework:
- **UI**: Uses React and Vite for components around the canvas
- **Rendering**: Webview based UI utilising the HTML canvas and rendered with CanvasKit (Skia) for high-quality graphics
- **State management**: Zustland for global React state mangement
- **Backend**: Rust for high-intensive operations and font related processing## Getting Started
### Prerequisites
- **Rust** (1.70 or later): [Install Rust](https://www.rust-lang.org/tools/install)
- **pnpm** (1.0 or later): [Install pnpm](https://pnpm.io/installation)
- **typescript** (5.8 or later, also known as tsc): [Install typescript](https://www.typescriptlang.org/download)
- **node.js** (23.10 or later): [Install node.js](https://nodejs.org/en/download)
- **System Dependencies**:
- **Windows**: Microsoft Visual C++ Build Tools, WebView2
- **macOS**: Xcode Command Line Tools (`xcode-select --install`)
- **Linux**: WebKit2GTK (`libwebkit2gtk-4.0-dev`) and build essentials### Quick Start
1. **Clone the repository**:
```bash
git clone https://github.com/shift-editor/shift.git
cd shift
```2. **Install dependencies**:
```bash
pnpm install
```3. **Run the development server**:
```bash
pnpm dev:app
```### Build for Production
```bash
pnpm build:app```
### Common Issues
- If you encounter build errors, ensure you have all system dependencies installed
- For Linux users, make sure WebKit2GTK development libraries are installed
- For detailed troubleshooting, check the [Tauri docs](https://v1.tauri.app/v1/guides/getting-started/prerequisites/)## Development Roadmap
We aim to implement the typical features present in font editors such as FontForge, Glyphs, RobotFont etc.
## License
[GNU General Public License (GPL) v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html)
Copyright © 2025 Kostya Farber. All rights reserved.