IMAGES HERE: https://protesilaos.com/emacs/iosevka-comfy-pictures.
Customised build of the Iosevka typeface, with a consistent rounded style and overrides for almost all individual glyphs in both roman (upright) and italic (slanted) variants.
- Git repositories:
- Sample pictures: https://protesilaos.com/emacs/iosevka-comfy-pictures
- Backronym: Iosevka ... Could Only Modify a Font, Yes.
Iosevka Comfy optimises for inter-glyph and inter-style consistency within the overarching constraint of usability at small point sizes. The shapes are round and are designed in concert to both impose a predictable rhythm and keep characters distinct from each other.
Roman and italic styles are made to look more consistent than the default upstream Iosevka while retaining their unique features. Unlike the default Iosevka style, the upright glyphs do not have a mixture of straight/blocky and curved or serified characters (special exceptions notwithstanding). While the italics do not have calligraphic tendencies that greatly contrast with their counterparts. The differences within each style set and between the styles themselves are more nuanced. The intent is to make everything feel part of the same aesthetic. Distinctions are drawn on the premise of contributing to the demands of the design in light of usability, without ever calling attention to themselves (as opposed to sporadic calligraphic glyphs amid an otherwise austere presentation which seem to say "look how pretty I am!").
To achieve consistency between roman and italic styles we remove elements of roundedness in the latter's glyphs to make them look a bit sturdier. Otherwise they would feel more rounded than their roman counterparts given the added slant. We do not want that added implicit emphasis of extra roundedness because the slant is already sufficient: to emphasise the emphasis is the kind of exaggeration that Iosevka Comfy strives to eliminate.
| Family | Shapes | Spacing | Style | Ligatures |
|---------------------------------+--------+---------+------------+-----------|
| Iosevka Comfy | Sans | Compact | Monospaced | Yes |
| Iosevka Comfy Duo | Sans | Compact | Duospaced | Yes |
| Iosevka Comfy Fixed | Sans | Compact | Monospaced | No |
|---------------------------------+--------+---------+------------+-----------|
| Iosevka Comfy Motion | Slab | Compact | Monospaced | Yes |
| Iosevka Comfy Motion Duo | Slab | Compact | Duospaced | Yes |
| Iosevka Comfy Motion Fixed | Slab | Compact | Monospaced | No |
|---------------------------------+--------+---------+------------+-----------|
| Iosevka Comfy Wide | Sans | Wide | Monospaced | Yes |
| Iosevka Comfy Wide Duo | Sans | Wide | Duospaced | Yes |
| Iosevka Comfy Wide Fixed | Sans | Wide | Monospaced | No |
|---------------------------------+--------+---------+------------+-----------|
| Iosevka Comfy Wide Motion | Slab | Wide | Monospaced | Yes |
| Iosevka Comfy Wide Motion Duo | Slab | Wide | Duospaced | Yes |
| Iosevka Comfy Wide Motion Fixed | Slab | Wide | Monospaced | No |
Iosevka Comfy comes in four sets of three: two sans-serif and two
serif supersets. The triplets in each set follow the naming scheme
NAME{,-fixed,-duo}
. The base name is monospaced and supports
ligatures. The "fixed" one is strictly monospaced so as to work with
all terminal emulators: it does not support ligatures or any wider
glyphs. And the "duo" is quasi-proportionately spaced, while
supporting ligatures.
Here "quasi-proportional" means that certain glyphs are allowed to occupy their natural width, instead of being strictly monospaced, while other remain monospaced. This combination results in a style that feels like fixed spacing but reads like variable spacing.
-
The compact, sans-serif set:
-
iosevka-comfy
is monospaced and supports ligatures. Apart from ligatures, it allows certain special glyphs, such as arrows, to occupy more than one block. -
iosevka-comfy-fixed
is likeiosevka-comfy
albeit strictly monospaced and thus does not support ligatures. All glyphs are exactly the same width. Use this if you prefer it or if your application (e.g. terminal emulator) does not recogniseiosevka-comfy
as a monospaced font. -
iosevka-comfy-duo
is quasi-proportional and supports ligatures. The naturally narrow glyphs, such asi
, are allowed to occupy their natural width instead of one space.
-
-
The compact, serif set:
-
iosevka-comfy-motion
is monospaced and supports ligatures. It is likeiosevka-comfy
but with lots of small tweaks that add serifs and tailed ends to relevant glyphs. Put simply, it is the serified counterpart ofiosevka-comfy
. -
iosevka-comfy-motion-fixed
is the serif equivalent of the aforementionediosevka-comfy-fixed
. -
iosevka-comfy-motion-duo
is the serif equivalent ofiosevka-comfy-duo
.
-
-
The wide, sans-serif set:
-
iosevka-comfy-wide
is the same asiosevka-comfy
except it is noticeably wider. It also looks taller thaniosevka-comfy
even though both variants fit the same number of lines on a screen. -
iosevka-comfy-wide-fixed
is the "wide" counterpart of theiosevka-comfy-fixed
family. -
iosevka-comfy-wide-duo
is the "wide" counterpart of theiosevka-comfy-duo
family.
-
-
The wide, serif set:
-
iosevka-comfy-wide-motion
is the same asiosevka-comfy-motion
except it is noticeably wider. It also looks taller thaniosevka-comfy-motion
even though both variants fit the same number of lines on a screen. -
iosevka-comfy-wide-motion-fixed
is the "wide" counterpart of theiosevka-comfy-motion-fixed
family. -
iosevka-comfy-wide-motion-duo
is the "wide" counterpart of theiosevka-comfy-motion-duo
family.
-
All fonts have upright and slanted variants and are available in the following weights:
| Name | Code |
|-----------+------|
| light | 300 |
| semilight | 350 |
| regular | 400 |
| medium | 500 |
| semibold | 600 |
| bold | 700 |
| extrabold | 800 |
Unless you have some exotic system, in which case you know what you are
doing, you can install fonts for your local user by copying the .ttf
files or their directories in ~/.local/share/fonts/
. For system-wide
installation, place them in /usr/share/fonts/
.
Depending on your system, you may need to delete the ttf
or
ttf-unhinted
builds. Though this is not strictly necessary, as the
system knows which one to pick.
When in doubt, install locally.
Perform a shallow clone of this repository to speed things up:
git clone --depth 1 https://github.com/protesilaos/iosevka-comfy
Iosevka Comfy is configured in accordance with the documentation of
the upstream project. This practically means that (i) we clone the
official repo, (ii) define our
private-build-plans.toml
at its root, (iii) install the npm
dependencies, and (iv) build the .ttf
files with something like the
following for each variant (run from the root of the project):
npm run build -- ttf::iosevka-comfy
Or this loop:
for i in iosevka-comfy{,-motion,-wide,-wide-motion}{,-fixed,-duo} ; do npm run build -- ttf::$i ; done
The last update to Iosevka Comfy was done on 2024-10-19 using upstream
commit 6850d2a
(post v31.9.1
).
Each file is provided as-is in the hope that it may prove useful, but is otherwise intended only for my private use.