Breaking change about vertical spacing
--------------------------------------
I no longer override the line height established by upstream Iosevka.
This means that all the font families provided by the Iosevka Comfy
project are the same as Iosevka in terms of vertical spacing.
This change is necessary to conform with recent developments upstream.
Those affected Iosevka Comfy in two ways:
1. Capital letters with accents would no longer be rendered in full.
The accent would be cropped. I tried some modest adjustments to the
relevant variable, but the problem would still occur at certain point
sizes.
2. The "wide" families no longer had the same vertical spacing as the
others. This is a regression from what we used to have. I do not
want the various families of this project to be radically different,
so such a deviation is unacceptable.
New families and reorganisation into triplets
---------------------------------------------
I added two new families: 'iosevka-comfy-motion-fixed' and
'iosevka-comfy-wide-duo'. These complete the set of the three stylistic
variants provided by this project.
These triplets 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. And the "duo" is quasi-proportionately spaced, while
supporting ligatures.
1. 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 like 'iosevka-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 recognise
'iosevka-comfy' as a monospaced font.
- 'iosevka-comfy-duo' is quasi-proportional and supports ligatures. The
naturally narrow glyphs, such as 'i', are allowed to occupy their
natural width instead of one space.
2. The **compact, serif** set:
- 'iosevka-comfy-motion' is monospaced and supports ligatures. It is
like 'iosevka-comfy' but with lots of small tweaks that add serifs
and tailed ends to relevant glyphs. Put simply, it is the serified
counterpart of 'iosevka-comfy'.
- 'iosevka-comfy-motion-fixed' is the serif equivalent of the
aforementioned 'iosevka-comfy-fixed'.
- 'iosevka-comfy-motion-duo' is the serif equivalent of
'iosevka-comfy-duo'.
3. The **wide, sans-serif** set:
- 'iosevka-comfy-wide' is the same as 'iosevka-comfy' except it is
noticeably wider. It also looks taller than 'iosevka-comfy' even
though both variants fit the same number of lines on a screen.
- 'iosevka-comfy-wide-fixed' is the "wide" counterpart of the
'iosevka-comfy-fixed' family.
- 'iosevka-comfy-wide-duo' is the "wide" counterpart of the
'iosevka-comfy-duo' family.
Inter-font consistency
----------------------
I ensured that all fonts feel part of the same project. The stylistic
differences between them are subtle and, generally, only go in one
direction (e.g. the "motion" triplet just adds some serifs while
retaining the main skeleton).
Simplification of the README and update to the demo pictures
------------------------------------------------------------
I rewrote the README to omit some of its more technical sections. It
now is simpler as it focuses on describing what this project offers.
The README also includes links to all official sources of the project.
Furthermore, I updated the sample screen shots to better showcase the
three variants mentioned above:
<https://protesilaos.com/emacs/iosevka-comfy-pictures>.
Miscellaneous
-------------
The README now suggests a shallow clone of the git repo. Keeping a
version history of lots of .ttf files is not ideal.
Advanced users who plan to tweak the 'private-build-plans.toml' and then
build their own fonts, may be interested in the shell one-liner I use to
build the font files:
for i in iosevka-comfy{,-motion,-wide}{,-fixed,-duo} ; do npm run build -- ttf::$i ; done
This is invoked from the root of the iosevka.git repo and works with my
'private-build-plans.toml'.
The backronym of Iosevka COMFY is: Iosevka (Could Only Modify a Font, Yes)
|
||
|---|---|---|
| iosevka-comfy | ||
| iosevka-comfy-duo | ||
| iosevka-comfy-fixed | ||
| iosevka-comfy-motion | ||
| iosevka-comfy-motion-duo | ||
| iosevka-comfy-motion-fixed | ||
| iosevka-comfy-wide | ||
| iosevka-comfy-wide-duo | ||
| iosevka-comfy-wide-fixed | ||
| LICENSE.md | ||
| private-build-plans.toml | ||
| README.md | ||
Iosevka Comfy
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 repo on SourceHut: https://git.sr.ht/~protesilaos/iosevka-comfy
- Mirrors:
- Mailing list: https://lists.sr.ht/~protesilaos/general-issues
- Sample pictures: https://protesilaos.com/emacs/iosevka-comfy-pictures
- Backronym: Iosevka (Could Only Modify a Font, Yes)
Principles of the design
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.
Variants
Iosevka Comfy comes in three sets of three. These triplets 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. And
the "duo" is quasi-proportionately spaced, while supporting ligatures.
-
The compact, sans-serif set:
-
iosevka-comfyis monospaced and supports ligatures. Apart from ligatures, it allows certain special glyphs, such as arrows, to occupy more than one block. -
iosevka-comfy-fixedis likeiosevka-comfyalbeit 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-comfyas a monospaced font. -
iosevka-comfy-duois 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-motionis monospaced and supports ligatures. It is likeiosevka-comfybut 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-fixedis the serif equivalent of the aforementionediosevka-comfy-fixed. -
iosevka-comfy-motion-duois the serif equivalent ofiosevka-comfy-duo.
-
-
The wide, sans-serif set:
-
iosevka-comfy-wideis the same asiosevka-comfyexcept it is noticeably wider. It also looks taller thaniosevka-comfyeven though both variants fit the same number of lines on a screen. -
iosevka-comfy-wide-fixedis the "wide" counterpart of theiosevka-comfy-fixedfamily. -
iosevka-comfy-wide-duois the "wide" counterpart of theiosevka-comfy-duofamily.
-
Install on GNU/Linux
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://git.sr.ht/~protesilaos/iosevka-comfy
Build information
Iosevka Comfy is configured in accordance with the documentation of the
upstream project. This practically means that we define our
private-build-plans.toml, install the npm dependencies, and then
build the .ttf files with something like the following for each
variant:
npm run build -- ttf::iosevka-comfy
Or this loop:
for i in iosevka-comfy{,-motion,-wide}{,-fixed,-duo} ; do npm run build -- ttf::$i ; done
The last update to Iosevka Comfy was done on 2022-09-14 using upstream
version v16.2.0, commit b7a59ee4.
Each file is provided as-is in the hope that it may prove useful, but is otherwise intended only for my private use.