A New Font

A New Font

1 Aug 2022

This week I created a custom build of the Iosevka font. I’ve used Input Mono for a long time now, and was very happy with it. However, it was missing a few glyphs that I wanted to use. Moreover, I didn’t have a license for the Input font to use on e.g. my blog. Iosevka is stupendously customizable, so I thought I’d see if I could get something close to Input’s styles.

Iosevka’s default style is extremely narrow. However, I discovered that the width of Iosevka extended at 13pt matched Input at 12pt exactly. Here’s a side-by-side comparison: the first picture is with Input Mono, and the second is with my new Iosevka Output font:

Figure 1: Input Mono at 12pt font

Figure 1: Input Mono at 12pt font

Figure 2: Iosevka Output at 13pt font

Figure 2: Iosevka Output at 13pt font

I loose a few lines with the Iosevka font, but that’s a deliberate choice as its ascenders are pretty tall. I originally had leading = 1100 in the build plan, which matched Input exactly, but I decided that this was more legible.

It wasn’t that hard either. Turns out, there’s a predefined stylistic set (ss18) that matches almost all the Input characters well. Some features that I made sure were present:

  • Double-storey a and g: I find this more legible as I don’t mistake these characters for o or y respectively.
  • Tailed-and-serif l: the curved bottom differentiates it clearly from 1 or I.
  • “Term”-style spacing: I didn’t like characters such as taking up more than a single character’s width. Looks pretty, but messes up some of my UI elements.

There are a few more tweaks that I’ve made to the font, and I’m likely to tweak it some more. I’m still getting used to this Iosevka style, but I’m going to drive it for a week or so to give it a fair shake. It’s growing on me for sure.

If you want to try it out, head over to my Codeberg repo and download the build artifact.

Building Iosevka #

You’ll need nodejs (ugh) and ttfautohint installed. See the docs for custom Iosevka builds for more details.

When you clone the Iosevka repository, be sure to not clone all 20 Gb of history:

git clone --depth 1 https://github.com/be5invis/Iosevka

Once you’ve got the build repo cloned, copy my private-build-plans.toml file into the root of the Iosevka directory, and run according to the directions in the Iosevka project.

Mastodon