iosevka

Iosevka Font Builder

Adam Kruszewski blog

Step by step guide in compiling a custom Iosevka font on Ubuntu/Debian

posted on 2019-10-27

My last post on how to build a custom Iosevka font got completely out of date as Iosevka changed the build system and moved away from Makefiles. I thought I’ll write an update with additional step-by-step guide on how to make it work on more popular GNU/Linux distribution - Ubuntu (it is pretty straightforward on Arch or Gentoo as every dependency can be installed by distro’s package/port manager).

2019-10-27-iosevka.png

Custom Iosevka font you can have today!


Through the whole guide I assume we’ll clone most of the repositories used inside ~/Src/opensource/ directory.

* EDIT *

Just use the main workspace folder in gitpod.io. For example, in this case it is /workspace/iosevka-font-builder

There are three major dependencies for building Iosevka, NodeJS/NPM and ttfautohint are available as binaries in Ubuntu/Debian repositories so it is quite easy to install them running the following from terminal:

Otfcc requires premake5 build system to build and we need to compile it from sources:

We’ll not install premake system-wide, just execute it from otfcc’s source directory and build otfcc’s binaries.

Now we can finally clone Iosevka’s source repository.

Node package manager will take care of last set of dependencies needed.


Now create a private-build-plans.toml file with the contents below inside Iosevka’s source directory. You can tweak look for each of the available options - please refer to official Iosevka readme to see what options are available. The ones below are what I’m using and reflect what you could see on the picture at the beginning of this post.

private-build-plans.toml

My private-build-plans.toml

I put this file in the /workspace/iosevka-font-builder directory as well as the /workspace/iosevka-font-builder/iosevka directory.

click to expand whole file


For use with Emacs. If you use an editor with Open Ligatures support (basically all of them nowadays) or are just not interested in ligatures at all - skip this step. If you want legacy ligature support built in simply append lines below to parameters.toml in Iosevka’s source code directory (credits goes to Soham Chowdhury).

parameters.toml

click to expand

Finally we can build the font. Just for the build step run we’ll add otfcc’s binary path to the $PATH variable, for npm to find it. Go grab some coffee as it might take a while.

I had to install node lts/fermium using nvm to get the font to build

ALSO: I had to reduce the number of concurrent processes on gitpod. I added this to the command: --jCmd=<number of processes>

The last step is to install the font, a shortcut from using your desktop’s font manager is just to copy the fonts where font-config can find them and invalidate its cache.

That’s all, custom Iosevka build should be available as “Iosevka Custom” now. Happy hacking!

About me:

I'm software architect and engineer with 20+ years of experience. Love coding and problem solving. CTO and co-founder of RevDeBug.

Last updated

Was this helpful?