iosevka
Iosevka Font Builder
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).

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
private-build-plans.tomlMy private-build-plans.toml
private-build-plans.tomlI put this file in the
/workspace/iosevka-font-builderdirectory as well as the/workspace/iosevka-font-builder/iosevkadirectory.
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
parameters.tomlFinally 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/fermiumusingnvmto 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?