~protesilaos/iosevka-comfy

1.4.0 1 year, 2 months ago .tar.gz browse log

Update to Iosevka Comfy version 1.4.0

- All fonts are now available in two more weights: medium and
  semibold.  Use them to refine your interfaces.  This is in response to
  the request for a medium weight made by madjxatw in issue 8 on the
  GitHub mirror: <https://github.com/protesilaos/iosevka-comfy/issues/8>.

- Large portions of the build instructions have been rewritten to (i)
  track the numerous and non-trivial breaking changes made by upstream
  Iosevka and (ii) preserve the style of Iosevka Comfy.

- The latin long S (ſ) and the Latin sharp S, else Eszett (ß), are now
  supported by Iosevka Comfy.  Details of shape have been considered,
  such that the reader does not conflate those characters with similar
  ones (e.g. the sharp S with a Greek beta, an ampersand, or an 8).

- The slanted version of the ampersand looks the same as its upright
  counterpart.  This is a deviation from the previous version, where
  this character looked like a flipped 3 with a flat top: I had
  introduced that style by mistake and did not want to rebuild
  everything just for it (rebuilding fonts is an expensive
  operation---I spent 8 hours this time).

- Thanks to Raymond Ko for sending a patch to make Iosevka Comfy build
  on top of Iosevka version 26.3.1.  I installed it to register the
  contribution in Git, though I eventually wrote the aforementioned
  changes from scratch as the current development of Iosevka has more
  breaking changes (the version was updated to 27.1.0 and more changes
  were made on top).  It was easier to review all code points, than to
  assume some as fixed.  Raymond send the patch on the mailing list:
  <https://lists.sr.ht/~protesilaos/general-issues/patches/44816>.

As a note for future users, I am always keeping track of upstream
Iosevka, though I do not want to rebuild Iosevka Comfy too frequently.
Upstream has a policy of changing the code points practically every
few weeks, which then requires hours or days of testing on my end just
to keep Iosevka Comfy the same.  If you try to build Iosevka Comfy
from source, make sure to use the commit in iosevka.git specified in
my project's README.md, as of this writing: this is the current
working version for me.  Future versions of iosevka.git will probably
contain breaking changes.  I will eventually adapt to them.

1.3.0 1 year, 6 months ago .tar.gz browse log

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.

1.2.0 1 year, 7 months ago .tar.gz browse log

Update to Iosevka Comfy version 1.2.0

* Make necessary adjustments to handle backward-incompatible changes
  in upstream Iosevka.  The intent is to preserve the aesthetic of
  Iosevka Comfy.

* Introduce the "wide motion" superset of font families.  This is
  another triplet that consists of (i) a regular monospaced style with
  support for ligatures and some wide glyphs like arrows, (ii) a fixed
  spaced monospaced variant that does not support ligatures or any
  wide glyphs, and (ii) a quasi-proportional ("duospaced") variant
  that preserves some of the rigidity of its monospaced counterparts
  but allows certain glyphs to occupy their natural width.  The
  project's README describes all the variants on offer.

1.1.1 1 year, 8 months ago .tar.gz browse log

Update to latest Iosevka version

There are no user-facing changes in this release.  Though I had to
test everything again and make sure to adapt to upstream's breaking
changes.

Given this update, I am removing some files that had stayed behind
from a previous release.

1.1.0 2 years ago .tar.gz browse log

Update to Iosevka Comfy version 1.1.0

* Made the '@' and '%' characters wider in the font families
  'iosevka-comfy-duo', 'iosevka-comfy-motion-duo', 'iosevka-comfy-wide',
  'iosevka-comfy-wide-fixed', 'iosevka-comfy-wide-duo'.  This is
  consistent with their design, which has wider glyphs and/or more
  generous spacing.

* Built using upstream Iosevka 'v16.3.4', commit 'ad1e247a'.

The rest of the design remains the same as before.  Read the detailed
release notes for version 1.0.0:
<https://protesilaos.com/codelog/2022-09-14-iosevka-comfy-1-0-0/>.

1.0.0 2 years ago .tar.gz browse log

Update to Iosevka Comfy version 1.0.0

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)

0.5.0 2 years ago .tar.gz browse log

Update to Iosevka Comfy 0.5.0

* Created a dedicated page for sample pictures of the fonts:
  <https://protesilaos.com/emacs/iosevka-comfy-pictures>.

* Revised the proportions of the fonts to have a marginally less compact
  vertical spacing.  The intent is to fix the display of accents over
  capital letters, such as ÀÄÃÁÖÕ.  This issue was discussed on the
  mailing list.  Thanks to inwit for bringing the matter to my
  attention:
  <https://lists.sr.ht/~protesilaos/general-issues/%3CCMG66XYLH7MO.2T0058JIS1343%40bisio%3E>.

* Made sweeping changes to Iosevka Comfy Motion and Iosevka Comfy Motion
  Duo to address their [subtle] inconsistencies and enforce a uniform
  style throughout their glyphs.  Put simply, the "motion" variants are
  the pseudo-serif counterparts of base Iosevka Comfy and Iosevka Comfy
  Duo, respectively.

* Rebuilt all font files based on Iosevka 'v16.2.0', commit 'b7a59ee4'
  on 2022-09-10.

* Updated the README to reflect the aforementioned.

* * *

Reminder of the font families on offer:

* 'iosevka-comfy' is monospaced and supports ligatures.  Apart from
  ligatures, it allows certain glyphs, such as arrows, to occupy more
  than one block.

* 'iosevka-comfy-motion' is like 'iosevka-comfy' but with lots of small
  tweaks that add serifs and tailed ends to relevant glyphs.  Put sipmly
  this is the pseudo-serif version of the otherwise sans-serif base
  style.

* 'iosevka-comfy-duo' is quasi-proportional and supports ligatures.  The
  naturally wide glyphs, such as 'i', are allowed to occupy their
  natural width instead of one space.

* 'iosevka-comfy-motion-duo' is like 'iosevka-comfy-duo' but with the
  serified style of 'iosevka-comfy-motion'.

* '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-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' same as 'iosevka-comfy-wide' though it is
  strictly monospaced and does not support ligatures.

0.4.0 2 years ago .tar.gz browse log

Update to Iosevka Comfy 0.4.0

- Rebuilt all files using upstream Iosevka version 'v16.0.2', commit
  '2f48331f'.  This is done to incorporate the latest changes (although
  they do not affect Iosevka Comfy).

- Designed a new stylistic "motion" variant.  Select glyphs are curlier
  and/or have tailed ends and serifs, giving a more playful and fluid
  impression.  By comparison, standard Iosevka Comfy is austere.

  The new variants are (i) 'iosevka-comfy-motion', which is largely
  monospaced and supports ligatures, and (ii) 'iosevka-comfy-motion-duo'
  which is quasi-proportional in its spacing.

  The variants in brief:

  - 'iosevka-comfy' is monospaced and supports ligatures.  Apart from
    ligatures, it allows certain glyphs, such as arrows, to occupy more
    than one block.

  - 'iosevka-comfy-motion' is like 'iosevka-comfy' but with lots of small
    tweaks that add serifs and tailed ends to give a more playful
    impression.

  - 'iosevka-comfy-duo' is quasi-proportional and supports ligatures.  The
    naturally wide glyphs, such as 'm', are allowed to occupy two blocks
    instead of one.

  - 'iosevka-comfy-motion-duo' is like 'iosevka-comfy-duo' but with the
    more playful style of 'iosevka-comfy-motion'.

  - '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-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' same as 'iosevka-comfy-wide' though it is
    strictly monospaced and does not support ligatures.

- Updated all screen shots and reworked the README to better present the
  stylistic variants of Iosevka Comfy.

- The comparison between regular Iosevka and Iosevka Comfy now uses a
  larger font height and displays line numbers.  These help illustrate how
  Iosevka Comfy is more compact than its counterpart (compactness is more
  economical, but also prevents rivers of negative space from flowing
  through the lines; rivers which I find incredibly annoying).

0.3.1 2 years ago .tar.gz browse log

Fix broken link to image

0.3.0 2 years ago .tar.gz browse log

Rebuild Iosevka Comfy

* Changed the 'a' glyph from a single to a double storey design.  The
  previous implementation had two problems: (1) it was not fully
  consistent with the overall rounded style of Iosevka Comfy, and (2) it
  could be mistaken for an 'o'.

  Damien Cassou wrote about the latter case in issue 2 over at the
  GitHub mirror: <https://github.com/protesilaos/iosevka-comfy/issues/2>.

  The report confirmed my suspicion that I had a misplaced sense of
  comfort in disambiguating the single storey 'a' from 'o' solely
  because of how we tend to read known words predictively instead of
  character-by-character.  I was already testing this by substituting
  random 'a' with 'o' in long texts where I was still reading everything
  as if the typos were not there.  Damien's report was the final datum
  that provided the impetus for this change.

* Revised the 'b' and 'd' glyphs to exhibit the roundedness found in
  other relevant glyphs.  Before they had a sturdier look which broke
  the established patterns of Iosevka Comfy, albeit ever so slightly.
  The inconsistency was noticeable at larger point sizes.

  The new rounded shapes look virtually the same as their predecessors
  at small point sizes.  At larger sizes though, they retain the
  desirable characteristics of the typeface.

* Removed the tail from the 'u' glyph and enforced roundedness.  This
  aligns its design with 'a' but also with other characters like 'n'.
  Again, the intent is to achieve inter-character consistency, where
  appropriate.

* Updated the documentation to reflect the aforementioned.

* Produced new screenshots to showcase the current state of the project.
1 / 2