Graphics

Draw the glyphs,then ship the font

FontForge, on a Void Linux desktop of your own.Outlines, metrics and hinting, out to TTF, OTF or WOFF on the volume.

FontForge 202510092 cores · 4 GBOpens in a browser tab
hub://fontforge

$ dxflow workflow create --identity fontforge hub://fontforge --start --link

01Pick a machinecores, memory and a rate per hour
02Create the workflowpulled from the hub, once
03Run it, then stopstopped when the work is done
The application

An outline editor,and a compiler

Draw the letter, set what it does beside its neighbours, then generate.

Glyphs and outlines

Bézier editing per glyph, with references so an accent is drawn once.

Metrics and kerning

Widths, side bearings and kern pairs, checked in a live metrics window.

Generate the files

TrueType, OpenType, PostScript, SVG and WOFF, written out to the volume.

How you run it

Every defaultis one override away

The session reads its settings from the environment, so you set them on the start line.

VNC_PASSWORDWhat the tab asks for. It ships as dxflow, and everyone reading this knows that.
PANEL and TASKBARBoth hidden, so the font view has the whole screen. Show either one when the glyph windows pile up.
AUDIOOff here. Turn it on and the desktop sound is streamed beside the picture.
start it your way

$ dxflow workflow start fontforge --override env.app.VNC_PASSWORD=something-long

$ dxflow workflow start fontforge --override env.app.PANEL=show --link

The session

The font viewfills the screen

Streamed to your browser, with FontForge already maximized.

6082Browserin the tab, at /vnc.html
5901VNCin a native client
/volumeStorageyour files, kept between runs
Open it from anywhereStart with --link and the session comes back on an HTTPS address.
Set a password firstVNC_PASSWORD defaults to dxflow, and everyone can read this page.
Good to know

It opens on a fontthat does not exist yet

There is no file chooser waiting. You get an empty font called Untitled1, so there is somewhere to work immediately.

Start drawing, or open yours

The blank font is there to be used. An existing one comes in from File and Open, off the volume.

A window per glyph

Editing a character opens its own window. Show the panel when you have more of them open than you can find.

Sources and builds on the volume

Keep the SFD and whatever you generate from it under /volume, and the next start finds both.

The image

Pulled once,then it stays

FontForge arrives as one image. This is what comes down the first time, and what the disk should have free for it.

291Mamd64compressed, the way the registry counts it
290Marm64compressed, the way the registry counts it
20GOn diskunpacked, with room to work beside it
ghcr.io/dxflow-ai/fontforge:latestPublished from the hub, pulled on the first start and kept for the ones after it.
Either architectureamd64 and arm64 are both published, and the machine pulls the one it runs.
What it asks for

What it wants,and what it needs

The definition asks for 2 cores and 4 GB. The image comes up on less than that, and a start given --fit trims the ask to whatever the machine actually has.

2 cores · 4 GBAsks forwhat the definition writes down
2 cores · 2 GBRuns onthe least the image comes up on
Not neededGPUit works on the cores alone
The ask is not the floorThe definition writes down what suits the work. The image itself starts on less, which is what the second figure is.
--fit caps it to the hostA start given --fit trims each step to what the machine actually has, for that start alone. The definition is never rewritten.

Machines that fit it

FontForge asks for 2 cores and 4 GB. Cheapest first.

E2 Medium
$0.042/ hour2 cores · 4 GBStart this machine
T3 Medium
$0.052/ hour2 cores · 4 GBStart this machine
B2s
$0.052/ hour2 cores · 4 GBStart this machine
Run FontForge on your own machinePick a machine that meets it, and it opens about a minute after you ask.