Fonts customized by Protesilaos Stavrou.
Go to file
Protesilaos Stavrou d6f825f59b Update to Iosevka Comfy version 1.3.0
* Include table in the 'README.md' file that succinctly describes the
  Iosevka Comfy variants.  This is it:

  | Family                          | Shapes | Spacing | Style      | Ligatures |
  |---------------------------------+--------+---------+------------+-----------|
  | Iosevka Comfy                   | Sans   | Compact | Monospaced | Yes       |
  | Iosevka Comfy Fixed             | Sans   | Compact | Monospaced | No        |
  | Iosevka Comfy Duo               | Sans   | Compact | Duospaced  | Yes       |
  |---------------------------------+--------+---------+------------+-----------|
  | Iosevka Comfy Motion            | Slab   | Compact | Monospaced | Yes       |
  | Iosevka Comfy Motion Fixed      | Slab   | Compact | Monospaced | No        |
  | Iosevka Comfy Motion Duo        | Slab   | Compact | Duospaced  | Yes       |
  |---------------------------------+--------+---------+------------+-----------|
  | Iosevka Comfy Wide              | Sans   | Wide    | Monospaced | Yes       |
  | Iosevka Comfy Wide Fixed        | Sans   | Wide    | Monospaced | No        |
  | Iosevka Comfy Wide Duo          | Sans   | Wide    | Duospaced  | Yes       |
  |---------------------------------+--------+---------+------------+-----------|
  | Iosevka Comfy Wide Motion       | Slab   | Wide    | Monospaced | Yes       |
  | Iosevka Comfy Wide Motion Fixed | Slab   | Wide    | Monospaced | No        |
  | Iosevka Comfy Wide Motion Duo   | Slab   | Wide    | Duospaced  | Yes       |

* Review all glyph codes to preserve the font's style in light of the
  numerous breaking stages in the main Iosevka repository.  An example
  of such a change is when 'cv20 = 2' has a different style than what
  it used to or when the 'cvXX' refers to another character than what
  it once did.

* Ensure the lower case italic form of 'f' has a crossbar at the
  x-height. This is how its roman counterpart is: it aligns with 'i'
  and 't'.

* Make the capital 'B' in all the "motion" variants (slab serif families)
  consist of two symmetric chambers.  This is consistent with the sans
  serif variants of Iosevka Comfy.

* Revise the 'f' in the "motion" variants to be the same as their sans
  serif counterparts.  The reason is that the previous glyph was
  closed at the top and was thus harder to read at small point sizes.

* Change the italic forms of lower case 'v', 'w', 'x', and 'z' from
  curly to straight across all the variants.  This is to ensure a
  consistent rhythm in all contexts between upper and lower case
  characters as well as upright and slanted forms.

* Let capital 'W' have a middle joint below the height of its two
  sides in order to be consistent with capital 'M' and the lower case
  'w'.

* Adjust the bar character '|' (also known as "pipe") to have no slope
  in italic forms.  The intent is to disambiguate it from the forward
  slash.  Also, the pipe can now be used in plain text tables even if
  those are italicised (e.g. a comment in programming code).

* Declare the Iosevka Comfy Wide Motion Duo as a slab serif font.
  This affects characters that are not explicitly defined in our list
  of overrides.

* Clarify some comments in the build plan of Iosevka Comfy to better
  describe the intended looks of the referenced characters.
2023-05-16 07:35:31 +03:00
iosevka-comfy Update to Iosevka Comfy version 1.3.0 2023-05-16 07:35:31 +03:00
iosevka-comfy-duo Update to Iosevka Comfy version 1.3.0 2023-05-16 07:35:31 +03:00
iosevka-comfy-fixed Update to Iosevka Comfy version 1.3.0 2023-05-16 07:35:31 +03:00
iosevka-comfy-motion Update to Iosevka Comfy version 1.3.0 2023-05-16 07:35:31 +03:00
iosevka-comfy-motion-duo Update to Iosevka Comfy version 1.3.0 2023-05-16 07:35:31 +03:00
iosevka-comfy-motion-fixed Update to Iosevka Comfy version 1.3.0 2023-05-16 07:35:31 +03:00
iosevka-comfy-wide Update to Iosevka Comfy version 1.3.0 2023-05-16 07:35:31 +03:00
iosevka-comfy-wide-duo Update to Iosevka Comfy version 1.3.0 2023-05-16 07:35:31 +03:00
iosevka-comfy-wide-fixed Update to Iosevka Comfy version 1.3.0 2023-05-16 07:35:31 +03:00
iosevka-comfy-wide-motion Update to Iosevka Comfy version 1.3.0 2023-05-16 07:35:31 +03:00
iosevka-comfy-wide-motion-duo Update to Iosevka Comfy version 1.3.0 2023-05-16 07:35:31 +03:00
iosevka-comfy-wide-motion-fixed Update to Iosevka Comfy version 1.3.0 2023-05-16 07:35:31 +03:00
LICENSE.md Initial build of "Iosevka Comfy" 2020-08-12 19:51:40 +03:00
private-build-plans.toml Update to Iosevka Comfy version 1.3.0 2023-05-16 07:35:31 +03:00
README.md Update to Iosevka Comfy version 1.3.0 2023-05-16 07:35:31 +03:00

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.

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

| Family                          | Shapes | Spacing | Style      | Ligatures |
|---------------------------------+--------+---------+------------+-----------|
| Iosevka Comfy                   | Sans   | Compact | Monospaced | Yes       |
| Iosevka Comfy Fixed             | Sans   | Compact | Monospaced | No        |
| Iosevka Comfy Duo               | Sans   | Compact | Duospaced  | Yes       |
|---------------------------------+--------+---------+------------+-----------|
| Iosevka Comfy Motion            | Slab   | Compact | Monospaced | Yes       |
| Iosevka Comfy Motion Fixed      | Slab   | Compact | Monospaced | No        |
| Iosevka Comfy Motion Duo        | Slab   | Compact | Duospaced  | Yes       |
|---------------------------------+--------+---------+------------+-----------|
| Iosevka Comfy Wide              | Sans   | Wide    | Monospaced | Yes       |
| Iosevka Comfy Wide Fixed        | Sans   | Wide    | Monospaced | No        |
| Iosevka Comfy Wide Duo          | Sans   | Wide    | Duospaced  | Yes       |
|---------------------------------+--------+---------+------------+-----------|
| Iosevka Comfy Wide Motion       | Slab   | Wide    | Monospaced | Yes       |
| Iosevka Comfy Wide Motion Fixed | Slab   | Wide    | Monospaced | No        |
| Iosevka Comfy Wide Motion Duo   | Slab   | Wide    | Duospaced  | Yes       |

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.

  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.

  4. The wide, serif set:

    • iosevka-comfy-wide-motion is the same as iosevka-comfy-motion except it is noticeably wider. It also looks taller than iosevka-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 the iosevka-comfy-motion-fixed family.

    • iosevka-comfy-wide-motion-duo is the "wide" counterpart of the iosevka-comfy-motion-duo family.

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 (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 2023-05-15 using upstream version v21.1.2, commit 7ef24b8d.

Each file is provided as-is in the hope that it may prove useful, but is otherwise intended only for my private use.