Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/epilys/gerb

Graphical font editor (GTK + Rust)
https://github.com/epilys/gerb

design font font-editor fonts gtk gtk-rs gtk3 gui rust type type-design typeface typography ufo

Last synced: about 1 month ago
JSON representation

Graphical font editor (GTK + Rust)

Awesome Lists containing this project

README

        

# gerb [![License]][gpl3] [![No Maintenance Intended]][no-maintenance] [![Build Status]][actions] [![Latest Version]][crates.io] [![netbsd]][pkgsrc.se] [![aur]][aur-url]

[gpl3]: https://github.com/epilys/gerb/blob/main/LICENSE
[Build Status]: https://img.shields.io/github/actions/workflow/status/epilys/gerb/builds.yaml?branch=main
[actions]: https://github.com/epilys/gerb/actions?query=branch%3Amain
[Latest Version]: https://img.shields.io/crates/v/gerb.svg?color=white
[crates.io]: https://crates.io/crates/gerb
[Top Language]: https://img.shields.io/github/languages/top/epilys/gerb?color=white&logo=rust&logoColor=black
[License]: https://img.shields.io/github/license/epilys/gerb?color=white
[pkgsrc.se]: https://pkgsrc.se/fonts/gerb
[netbsd]: https://img.shields.io/badge/netbsd-pkgsrc%2Ffonts%2Fgerb-%23777777?labelColor=%23ea6410
[aur-url]: https://aur.archlinux.org/packages/gerb-git
[aur]: https://img.shields.io/badge/aur-gerb--git-%23555555?labelColor=%23ecf2f5
[No Maintenance Intended]: https://img.shields.io/badge/No%20Maintenance%20Intended-%F0%9F%97%99-red
[no-maintenance]: https://unmaintained.tech/

| ☛ Development has stopped as of 2023-05-03. [Discussion](https://github.com/epilys/gerb/discussions/44) |
| ---

1. _*gerb ʰ-_: [reconstructed Proto-Indo-European root](https://en.wiktionary.org/wiki/Reconstruction:Proto-Indo-European/gerb%CA%B0-), meaning _to carve_
2. `gerb`: a font editor in gtk3 and Rust



Editing a glyph inside gerb.


Editing a glyph.

See the Screenshots section.

`gerb` is a GUI font editor and IDE.
It is not production ready, but all the basics are implemented.

It uses the [_UFOv3_](https://unifiedfontobject.org/versions/ufo3/index.html) format and can import:[^0]

- _UFOv2_ directories
- _Glyphs_ files

and export:[^1]

- OpenType files (`.otf`)
- TrueType files (`.ttf`)

[^0]: Import is performed with [`fontTools`](https://github.com/fonttools/fonttools) and [`glyphsLib`](https://github.com/googlefonts/glyphsLib).
[^1]: Export is performed with [`ufo2ft`](https://github.com/googlefonts/ufo2ft).

| ℹ️ Interested in contributing? Consult [`CONTRIBUTING.md`](./CONTRIBUTING.md). |
| --- |

## Features

- import from other font source formats
- export to `.otf` and `.ttf`
- configurable shortcuts system
- unlimited undos
- embedded python shell and API for scripting and plugins (work in progress)
- git integration (work in progress)
- themeable (work in progress)

### Future features

- [ ] work with designspaces ([tracking issue #22](https://github.com/epilys/gerb/issues/22))

## Screenshots [^2]

[^2]: The screenshot typeface is [Sporting Grotesque](https://www.velvetyne.fr/fonts/sporting-grotesque/).




## Alternative software

- [FontForge](https://fontforge.org) is the indisputable FOSS font editor.
Realistically this is the only choice one has for making a professional quality typeface with free software.

Some other projects in development are:

- [runebender](https://github.com/linebender/runebender): development seems to have slowed down (as of Wed 15 Mar 2023).
Unfortunately, the project —while excellent— looks like it is encumbered by its UI toolkit's development.
In contrast, **gerb uses the standard FOSS UI toolkit, `gtk`**.
- [MFEK](https://github.com/MFEK): it's focused on splitting every functionality into micro-libraries.
**gerb's technical goal is shipping a font editor**.

## Install

### Packages

Packages are available:

- NetBSD
- Debian / Ubuntu as `.deb` files included with each [release](https://github.com/epilys/gerb/releases)
- Arch Linux

It is also installable from [crates.io](https://crates.io/crates/gerb): ```cargo install gerb```

### Prebuilt GNU/Linux & macos amd64 binaries

See ['Releases'](https://github.com/epilys/gerb/releases) for binaries of tagged releases built in the CI.

## Build

To build, you will need Rust's `cargo` tool.
You can get it from your distribution's packages, or directly with the official [`rustup`](https://rustup.rs) tool.
If the build fails because of missing system libraries, see the [Dependencies](#dependencies) section of the `README`.

Download or clone the git repository with your method of choice, e.g.:

```shell
git clone https://github.com/epilys/gerb.git
cd gerb
cargo build --release
```

### Dependencies

Needs `gtk-3`.
For the `python` feature you'll need `libpython3.9` or greater.

On Debian and relatives:

```shell
apt install libgtk-3-dev
```

On `macOS` you can install dependencies with `Homebrew`:

```shell
brew install librsvg gtk+3 gnome-icon-theme
```

## Run & Configuration

You can open a UFOv3 project from the GUI ( *File->Open* or Ctrl+O ) or directly in the command line with the `-u` flag.
Assuming the project directory is "/path/to/font.ufo":

```shell
# Directly calling the binary:
gerb -u /path/to/font.ufo
# Running through cargo
cargo run --release -- -u /path/to/font.ufo
```

Configuration of various settings is stored at the `$XDG_CONFIG_HOME/gerb` directory in a TOML file.
The usual location would be `$HOME/.config/gerb/config.toml`.
[**dconf**](https://en.wikipedia.org/wiki/Dconf) is not used but PRs that add dconf support are welcome.