Commit graph

5 commits

Author SHA1 Message Date
Protesilaos Stavrou c7cfc91eb8
Update to Iosevka Comfy version 2.1.0
This is a small release that fixes a detail in the `m` character of
all the "motion" variants. It now has a tail at the bottom right
corner in addition to the top left serif. This is the same design used
wherever relevant, such as in the `n` and `u` glyphs.

Other than that, the rebuild is an attempt to fix the broken files
that appear on NixOS, as reported by Damien Cassou in issue 17:
<https://github.com/protesilaos/iosevka-comfy/issues/17>. I do not
know if this fixes the problem, but I cannot think of a better
approach. This is not reproducible on my end (Debian stable).
2024-10-19 10:32:54 +03:00
Protesilaos Stavrou f7086ff14c
Update to Iosevka Comfy version 2.0.0 (on top of Iosevka 31.3.0)
* It is difficult to build Iosevka Comfy

I made a lot of adjustments to preserve the aesthetics of Iosevka
Comfy while adapting them to the latest version of upstream Iosevka.
Users will now benefit from all the refinements made upstream.

Iosevka has a rapid release cycle. Almost every version introduces
some breaking change: a code point is repurposed to reference another
character or the numeric value of a character variant is modified to
point to another variant... To rebuild Iosevka Comfy, I have to
inspect every single character to ensure its code point AND numeric
variant are correct. This is a laborious task that takes several days
of testing all the fonts. Still, it is worth the effort as I get a set
of highly functional fonts in the process.

Another complication this time was on the hardware side of things. I
could not rebuild because I was running out of RAM and my computer
would crash. This stalled the current version for several months. I
finally got a new 16GB memory stick and was able to work on this project.

* Minor stylistic refinements

All the variants I provide are the same except for two small changes:

- The capital U in all the "motion" variants now uses the style I had
  always intended. This is a rounded bottom with a serif at the top
  left corner. In the previous version of Iosevka Comfy, this character
  had a tail at the bottom right corner because upstream had changed
  the numeric value of the variant. I either did not notice that in
  the documentation at the time, or the documentation had not been
  updated accordingly. I did spot the error back then after I had
  rebuilt the fonts, but I was not going to put further stress on my
  computer just for one character. Anyway, this change makes "motion"
  variants have the desired rhythm throughout.

- All "duo" and "wide" variants have a capital 'i' ('I') with shorter
  bars/serifs than the others (e.g. Iosevka Comfy and Iosevka Comfy
  Motion). For the "duo" variants, this enforces tighter spacing around
  that character, which is appropriate in a quasi-proportional font.
  While for the "wide" variants, the same change improves the sense of
  added space between characters and is easier to read at tiny point sizes.
  This capital 'I' still has serifs to not be mistaken for the bar/pipe
  character or for a cursor that is rendered in a vertical bar shape.

* Stylistic tweaks for the Greek alphabet

Greek characters have always been supported, though their style was
the same as that of upstream Iosevka. For many of those characters I
now introduce changes to make them fit better with their Latin
counterparts. The specifications are in the file 'private-build-plans.toml'.
2024-08-22 16:57:32 +03:00
Protesilaos Stavrou f297c83f79 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.
2023-09-30 20:35:07 +03:00
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
Protesilaos Stavrou a27aa63eb6 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.
2023-04-27 05:25:44 +03:00