Graphical font editor (GTK + Rust)

Last update: Jun 1, 2022

gerb

  1. *gerb ʰ-: reconstructed Proto-Indo-European root, meaning to carve
  2. gerb: a WIP font editor in gtk3 and rust

Introduction

gerb is an experimental, developed for fun GUI font editor. Still in prototype phase, it opens fonts in UFOv3 format but hasn't implemented saving modifications or exporting to otf/ttf files yet.

Goals

  • Fun
  • Good UX not necessarily tied to prior art
  • Reasonable performance
  • Configurability
  • Use visual feedback for all kinds of operations to inform the user of the current state (for example, a Bézier path tool that shows you the current curve's degree and progress).

Roadmap to a minimum working prototype

Running the demo

Expects a folder "font.ufo" to be defined in the command line:

cargo run --release -- -u ./font.ufo

I got mine from the Regular instance at the Source Sans repository.

./screenshot.png

./screenshot2.png

Dependencies

Needs gtk-3.

On Debian and relatives:

apt install libgtk-3-dev

On macOS you can install dependencies with Homebrew:

brew install librsvg gtk+3 gnome-icon-theme

GitHub

https://github.com/epilys/gerb
You might also like...

An example of searching iBeacon using gtk-rs and btleplug.

An example of searching iBeacon using gtk-rs and btleplug.

Beacon Searcher Screenshot Compile & Run Install GTK 3 dev packages: macOS: $ brew install gtk+3 $ brew install gnome-icon-theme Debian / Ubuntu: $ s

Dec 21, 2021

Test bed for gtk-rs-core experiments

Rust GObject Experiments class macro #[gobject::class(final)] mod obj { #[derive(Default)] pub struct MyObj { #[property(get, set)]

May 28, 2022

A simple, clean, and beautiful WYSIWYG Markdown editor and content-management system

A simple, clean, and beautiful WYSIWYG Markdown editor and content-management system

ScribeDown Current version: v0.0.1 Feature level: See the roadmap Beautiful, Clean, Writer-Oriented The goal of ScribeDown is to make Markdown the bes

Feb 22, 2022

A simple, cross-platform GUI automation module for Rust.

AutoPilot AutoPilot is a Rust port of the Python C extension AutoPy, a simple, cross-platform GUI automation library for Python. For more information,

Jun 23, 2022

A data-first Rust-native UI design toolkit.

A data-first Rust-native UI design toolkit.

Druid A data-first Rust-native UI toolkit. Druid is an experimental Rust-native UI toolkit. Its main goal is to offer a polished user experience. Ther

Jun 26, 2022

The Rust UI-Toolkit.

The Rust UI-Toolkit.

The Orbital Widget Toolkit is a cross-platform (G)UI toolkit for building scalable user interfaces with the programming language Rust. It's based on t

Jun 20, 2022

An easy-to-use, 2D GUI library written entirely in Rust.

Conrod An easy-to-use, 2D GUI library written entirely in Rust. Guide What is Conrod? A Brief Summary Screenshots and Videos Feature Overview Availabl

Jun 24, 2022

Rust bindings to Core Foundation and other low level libraries on Mac OS X and iOS

core-foundation-rs Compatibility Targets macOS 10.7 by default. To enable features added in macOS 10.8, set Cargo feature mac_os_10_8_features. To hav

Jun 26, 2022

Rust bindings for the FLTK GUI library.

Rust bindings for the FLTK GUI library.

fltk-rs Rust bindings for the FLTK Graphical User Interface library. The FLTK crate is a crossplatform lightweight gui library which can be statically

Jun 25, 2022
Comments
  • 1. Implement `ControlPoint` creation with pen tool

    • [x] implement a tool mode for GlyphState
    • [x] implement Manipulate tool that inherits the current path modification functionality
    • [x] implement Bezier Pen that creates new Bezier paths
    Reviewed by epilys at 2022-02-19 15:56
  • 2. Handle case where gdk_pixbuf can't load an SVG graphic

    Hey :)

    For some reason my system often has problems with GTK applications. I'm running Sway on NixOS.

    One ususal problem I face is that icons are not loaded. This is the case with gerb as well, but this time I had to make this small change in order to be able to open a glyph.

    $ cargo run
    ...
    (gerb:2399975): Gtk-WARNING **: 03:45:15.166: Could not find the icon 'object-select-symbolic-ltr'. The 'hicolor' theme
    was not found either, perhaps you need to install it.
    You can get a copy from:
            http://icon-theme.freedesktop.org/releases
    
    (gerb:2399975): Gtk-WARNING **: 03:45:15.652: Could not load a pixbuf from /org/gtk/libgtk/theme/Adwaita/assets/bullet-symbolic.svg.
    This may indicate that pixbuf loaders or the mime database could not be found.
    open-glyph-edit received!
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error { domain: gdk-pixbuf-error-quark, code: 3, message: "Unrecognized image file format" }', src/resources.rs:35:69
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    

    I have no clue what's the culprit here, but figured not crashing with broken icons is preferable to crashing.

    Cheers, Kerstin

    Reviewed by erictapen at 2022-02-11 02:46
Marko Editor is a simple WYSIWYG editor for note taking.
Marko Editor is a simple WYSIWYG editor for note taking.

Marko Editor Marko Editor is a simple WYSIWYG editor for note taking written in Rust and GTK 4. It uses Markdown as storage format and can read simple

Jun 21, 2022
SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++ or JavaScript.
SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++ or JavaScript.

SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++ or JavaScript.

Jun 21, 2022
Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies

Dear ImGui (This library is available under a free and permissive license, but needs financial support to sustain its continued improvements. In addit

Jun 25, 2022
A graphical user interface toolkit for audio plugins.

HexoTK - A graphic user interface toolkit for audio plugins State of Development Super early! Building cargo run --example demo TODO / Features Every

Jan 7, 2022
Idiomatic, GTK+-based, GUI library, inspired by Elm, written in Rust
Idiomatic, GTK+-based, GUI library, inspired by Elm, written in Rust

Relm Asynchronous, GTK+-based, GUI library, inspired by Elm, written in Rust. This library is in beta stage: it has not been thoroughly tested and its

Jun 18, 2022
Provides Rust bindings for GTK libraries

The gtk-rs organization aims to provide safe Rust binding over GObject-based libraries

Jun 17, 2022
Highly customizable finder with high performance. Written in Rust and uses GTK
Highly customizable finder with high performance. Written in Rust and uses GTK

Findex Highly customizable finder with high performance. Written in Rust and uses GTK Installation Automatic Binary Clone from https://aur.archlinux.o

Jun 5, 2022
Rust bindings and wrappers for GLib, GDK 3, GTK+ 3 and Cairo.

THIS REPOSITORY IS DEPRECATED SEE: https://github.com/rust-gnome rgtk Rust bindings and wrappers for GLib, GDK 3, GTK+ 3 and Cairo. Building rgtk expe

Apr 8, 2022
A GUI for NordVPN on Linux that maintains feature parity with the official clients, written with Rust and GTK.

Viking for NordVPN This project aims to provide a fully usable and feature-complete graphical interface for NordVPN on Linux. While it attempts to clo

Jan 12, 2022
Provides Rust bindings for GTK libraries

gtk3-rs The gtk-rs organization aims to provide safe Rust binding over GObject-based libraries. You can find more about it on https://gtk-rs.org. This

Jun 17, 2022