Graphical font editor (GTK + Rust)

Overview

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
You might also like...
A Rust library to parse Blueprint files and convert them into GTK UI files

🦀 gtk-ui-builder A Rust library to parse Blueprint files and convert them into GTK UI files Inspired by the Blueprint project Example 1 - blueprints

A powerful color picker and formatter, built with GTK and Rust
A powerful color picker and formatter, built with GTK and Rust

Eyedropper A powerful color picker and formatter. More screenshots Features Pick a Color Enter a color in Hex-Format Parse RGBA/ARGB Hex-Colors View c

GTK 4 front-end to ChatGPT completions written in Rust
GTK 4 front-end to ChatGPT completions written in Rust

ChatGPT GUI Building git clone [email protected]:teunissenstefan/chatgpt-gui.git cd chatgpt-gui cargo build --release Todo Connect insert_text to only al

Reactive components in rust, designed to make GTK more manageable

gflux gflux is a tiny experimental reactive component system for rust, designed to make GTK more manageable. gflux: is about 300 lines of code contain

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

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)]

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

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,

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

Comments
  • Implement `ControlPoint` creation with pen tool

    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
    TODO 
    opened by epilys 1
  • Handle case where gdk_pixbuf can't load an SVG graphic

    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

    opened by erictapen 1
Releases(v0.0.0-alpha-2022-04-11)
Owner
Manos Pitsidianakis
Electrical and Computer Engineering
Manos Pitsidianakis
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

Michael 49 Jan 6, 2023
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 5.5k Jan 1, 2023
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

omar 44.4k Jan 5, 2023
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

Weird Constructor 14 Oct 20, 2022
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

null 2.2k Dec 31, 2022
Provides Rust bindings for GTK libraries

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

null 431 Dec 30, 2022
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

MD Gaziur Rahman Noor 442 Jan 1, 2023
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

Jeremy Letang 124 Jul 10, 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

Jacob Birkett 2 Oct 23, 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

null 431 Dec 30, 2022