Rebuild Iosevka Comfy (upstream v.11.2.7)
* Improve: the README to explain how Iosevka Comfy differs from the
standard Iosevka style.
* Make the capital 'D' use a top and bottom serif to avoid the issue
where TODO at small point sizes reads like TOOO. This reverts commit
3e3a91f.
* Use a single storey 'a' for roman and italic variants. The rounded
shape is more consistent with the rest of the typeface.
* Use a tailed 'u' for both variants, for the same reason as above.
* Revert to using an 'm' with a short middle leg to avoid the problem
where the three legs visually blend into a solid block at small point
sizes. Roman and italic variants have slighty different 'm' glyphs
due to their particular requirements, though both use the short middle
leg style in the interest of consistency.
* Make the '0' have an oval shape for both roman and italic variants
with a dashed forward slash which looks like a dot at small point
sizes. The slashed zero that was used before feels like an
exaggeration when the oval shape of the character already is
sufficiently distinct from 'O'. This new style is better than the
alternative of the dotted zero because the inside of the character is
more subtle (again, avoiding the possible exaggeration).
* Other minor tweaks to the comments in the private-build-plans.toml.
78
README.md
|
|
@ -1,20 +1,76 @@
|
||||||
# Iosevka Comfy
|
# Iosevka Comfy
|
||||||
|
|
||||||
Private build of the Iosevka monospaced font, with adjusted metrics and
|
Private build of the Iosevka monospaced font, with a rounded style,
|
||||||
lots of overrides for individual glyphs at both roman and italic
|
adjusted metrics, and overrides for almost all individual glyphs in both
|
||||||
variants.
|
roman (upright) and italic (slanted) variants.
|
||||||
|
|
||||||
Configured in accordance with the documentation of the upstream project:
|
Iosevka Comfy is wider and more vertically compact than the standard
|
||||||
<https://github.com/be5invis/Iosevka>. Last update on 2021-09-08 using
|
upstream configuration. Glyphs are rounder and have tailed ends or
|
||||||
Iosevka version `v10.1.1` commit `9f26049`.
|
serifs wherever that is required to both impose an aesthetic rhythm and
|
||||||
|
keep characters distinct from each other. Roman and italic variants are
|
||||||
|
made to look more consistent while retaining their stylistic features
|
||||||
|
(e.g. the italics do not have calligraphic tendencies but still use
|
||||||
|
carefully selected glyphs that are distinct from the roman
|
||||||
|
counterparts).
|
||||||
|
|
||||||
The files are provided as-is in the hope that they may prove useful, but
|
The overall appearance of the typeface is optimised for small point
|
||||||
are otherwise intended only for my private use.
|
sizes. This informs the choice of certain glyphs such as `D` with a top
|
||||||
|
and bottom serif and a curved body to clearly differentiate it from the
|
||||||
|
capital `O`, or an `m` with a short middle leg to prevent the letter's
|
||||||
|
lines from visually blending into a box-like shape (always referring to
|
||||||
|
small point sizes). For larger size, these details are not strictly
|
||||||
|
necessary, though Iosevka Comfy should still look decent despite their
|
||||||
|
presence.
|
||||||
|
|
||||||
|
Considering the line height and width as well as the desired appearance
|
||||||
|
of each glyph, the optimal point values are: 8, 10, 12, 13. Other sizes
|
||||||
|
which are almost as good: 9, 10.5, 13.5.
|
||||||
|
|
||||||
|
[ For the `:height` face attribute in GNU Emacs, the value is equal to
|
||||||
|
the point size × 10. ]
|
||||||
|
|
||||||
|
## Build information
|
||||||
|
|
||||||
|
Iosevka Comfy is configured in accordance with the documentation of the
|
||||||
|
upstream project: <https://github.com/be5invis/Iosevka>. This
|
||||||
|
practically means that we define our `private-build-plans.toml`, install
|
||||||
|
the `npm` dependencies, and then build the `.ttf` files with the
|
||||||
|
following command:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm run build -- ttf::iosevka-comfy
|
||||||
|
```
|
||||||
|
|
||||||
|
The last update to Iosevka Comfy was done on 2022-01-25 using upstream
|
||||||
|
Iosevka version `v11.2.7` at commit `f630c223`.
|
||||||
|
|
||||||
|
Each file is provided as-is in the hope that it may prove useful, but
|
||||||
|
is otherwise intended only for my private use.
|
||||||
|
|
||||||
|
## Character sample and common patterns
|
||||||
|
|
||||||
|
Note that for the sake of this demonstration, the point size is higher
|
||||||
|
than the intended target range.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|
## Comparison to base Iosevka
|
||||||
|
|
||||||

|
This is a regular Emacs session with the default font set to point size
|
||||||
|
10 (a `:height` face attribute of 100). Obverse, in particular, Iosevka
|
||||||
|
Comfy's proportions (wider, shorter line height than Iosevka) and the
|
||||||
|
less exaggerated differences between its roman and italic characters to
|
||||||
|
make the latter look closer to their roman counterparts without
|
||||||
|
detracting from their subtleties (e.g. for the italic variant of Iosevka
|
||||||
|
Comfy the `f` is not cursive, the `y` is not so curvy, the descender of
|
||||||
|
the `g` is not closed, while the `t`, `i`, `l` have short tails, etc.).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
For Iosevka Comfy to have roughly the same line width as Iosevka, it has
|
||||||
|
to be set at one point less. It still has a more compact line height.
|
||||||
|
Compare the following screenshot to the one above:
|
||||||
|
|
||||||
|

|
||||||
|
|
|
||||||
BIN
iosevka-10pt.png
Normal file
|
After Width: | Height: | Size: 469 KiB |
BIN
iosevka-comfy-10pt.png
Normal file
|
After Width: | Height: | Size: 469 KiB |
BIN
iosevka-comfy-9pt.png
Normal file
|
After Width: | Height: | Size: 457 KiB |
|
Before Width: | Height: | Size: 305 KiB |
|
Before Width: | Height: | Size: 230 KiB |
|
Before Width: | Height: | Size: 310 KiB |
|
Before Width: | Height: | Size: 236 KiB After Width: | Height: | Size: 363 KiB |
|
|
@ -15,7 +15,7 @@ serifs = "sans" # Optional; Values: `sans` or `slab`
|
||||||
cv01 = 1 # A cap straight
|
cv01 = 1 # A cap straight
|
||||||
cv02 = 1 # B cap straight
|
cv02 = 1 # B cap straight
|
||||||
cv03 = 1 # C cap serifless
|
cv03 = 1 # C cap serifless
|
||||||
cv04 = 4 # D cap curly with top serif
|
cv04 = 6 # D cap curly with top and bottom serif (without serifs TODO reads like TOOO at small point sizes)
|
||||||
cv05 = 1 # E cap serifless
|
cv05 = 1 # E cap serifless
|
||||||
cv06 = 1 # F cap serifless
|
cv06 = 1 # F cap serifless
|
||||||
cv07 = 4 # G cap toothed
|
cv07 = 4 # G cap toothed
|
||||||
|
|
@ -37,6 +37,7 @@ cv22 = 1 # W straight
|
||||||
cv23 = 1 # X cap straight
|
cv23 = 1 # X cap straight
|
||||||
cv24 = 1 # Y cap straight
|
cv24 = 1 # Y cap straight
|
||||||
cv25 = 1 # Z cap straight
|
cv25 = 1 # Z cap straight
|
||||||
|
cv26 = 10 # a single storey earless tailed bottom
|
||||||
cv27 = 1 # b toothed
|
cv27 = 1 # b toothed
|
||||||
cv28 = 1 # c serifless
|
cv28 = 1 # c serifless
|
||||||
cv29 = 1 # d toothed
|
cv29 = 1 # d toothed
|
||||||
|
|
@ -47,12 +48,14 @@ cv37 = 10 # l serified flat tailed
|
||||||
cv42 = 9 # r compact
|
cv42 = 9 # r compact
|
||||||
cv43 = 1 # s serifless
|
cv43 = 1 # s serifless
|
||||||
cv44 = 2 # t flat hook
|
cv44 = 2 # t flat hook
|
||||||
|
cv45 = 4 # u tailed
|
||||||
cv49 = 6 # y cursive flat terminal hook
|
cv49 = 6 # y cursive flat terminal hook
|
||||||
cv53 = 1 # Λ lambda cap straight
|
cv53 = 1 # Λ, Δ lambda and delta cap straight
|
||||||
cv54 = 2 # α alpha straight tailed
|
cv54 = 2 # α alpha straight tailed
|
||||||
cv55 = 1 # γ gamma cap straight
|
cv55 = 1 # Γ gamma cap straight
|
||||||
cv56 = 6 # ι iota serified flat tailed
|
cv56 = 6 # ι iota serified flat tailed
|
||||||
cv57 = 2 # λ lambda top tailed
|
cv57 = 2 # λ lambda top tailed
|
||||||
|
cv71 = 13 # 0 oval dashed forward slash
|
||||||
cv74 = 2 # 3 arched
|
cv74 = 2 # 3 arched
|
||||||
cv76 = 2 # 5 open contour
|
cv76 = 2 # 5 open contour
|
||||||
cv78 = 1 # 7 straight
|
cv78 = 1 # 7 straight
|
||||||
|
|
@ -76,21 +79,18 @@ cv99 = 1 # .:; circular punctuation marks
|
||||||
|
|
||||||
# Optional; Configure single character's variant for Upright and Oblique; Overrides [design]
|
# Optional; Configure single character's variant for Upright and Oblique; Overrides [design]
|
||||||
[buildPlans.iosevka-comfy.variants.upright]
|
[buildPlans.iosevka-comfy.variants.upright]
|
||||||
cv26 = 1 # a double storey
|
|
||||||
cv30 = 1 # e straight
|
cv30 = 1 # e straight
|
||||||
cv31 = 16 # f serifless bottom flat top crossbar at x height
|
cv31 = 16 # f serifless bottom flat top crossbar at x height
|
||||||
cv32 = 9 # g single storey flat hook earless cornered top
|
cv32 = 9 # g single storey flat hook earless cornered top
|
||||||
cv36 = 1 # k straight
|
cv36 = 1 # k straight
|
||||||
cv38 = 9 # m earless double arch
|
cv38 = 6 # m earless double arch short middle leg
|
||||||
cv39 = 3 # n earless straight
|
cv39 = 3 # n earless straight
|
||||||
cv40 = 2 # p earless
|
cv40 = 2 # p earless
|
||||||
cv41 = 2 # q earless
|
cv41 = 2 # q earless
|
||||||
cv45 = 1 # u straight
|
|
||||||
cv46 = 1 # v straight
|
cv46 = 1 # v straight
|
||||||
cv47 = 1 # w straight
|
cv47 = 1 # w straight
|
||||||
cv48 = 1 # x straight
|
cv48 = 1 # x straight
|
||||||
cv50 = 1 # z straight
|
cv50 = 1 # z straight
|
||||||
cv71 = 7 # 0 oval slashed
|
|
||||||
cv72 = 2 # 1 serified with base
|
cv72 = 2 # 1 serified with base
|
||||||
cv73 = 1 # 2 straight
|
cv73 = 1 # 2 straight
|
||||||
cv75 = 3 # 4 semi-open contour
|
cv75 = 3 # 4 semi-open contour
|
||||||
|
|
@ -101,7 +101,6 @@ cv90 = 1 # @ at threefold
|
||||||
|
|
||||||
# Optional; Configure single character's variant for Italic only; Overrides [design]
|
# Optional; Configure single character's variant for Italic only; Overrides [design]
|
||||||
[buildPlans.iosevka-comfy.variants.italic]
|
[buildPlans.iosevka-comfy.variants.italic]
|
||||||
cv26 = 10 # a single storey earless tailed
|
|
||||||
cv30 = 2 # e curly
|
cv30 = 2 # e curly
|
||||||
cv31 = 14 # f extended flat top bottom hook
|
cv31 = 14 # f extended flat top bottom hook
|
||||||
cv32 = 7 # g single storey flat hook
|
cv32 = 7 # g single storey flat hook
|
||||||
|
|
@ -110,12 +109,10 @@ cv38 = 2 # m straight middle shortleg
|
||||||
cv39 = 1 # n straight
|
cv39 = 1 # n straight
|
||||||
cv40 = 1 # p straight
|
cv40 = 1 # p straight
|
||||||
cv41 = 1 # q straight
|
cv41 = 1 # q straight
|
||||||
cv45 = 4 # u tailed
|
|
||||||
cv46 = 2 # v curly
|
cv46 = 2 # v curly
|
||||||
cv47 = 2 # w curly short middle top
|
cv47 = 2 # w curly short middle top
|
||||||
cv48 = 2 # x curly
|
cv48 = 2 # x curly
|
||||||
cv50 = 4 # z curly
|
cv50 = 4 # z curly
|
||||||
cv71 = 2 # 0 slashed
|
|
||||||
cv72 = 1 # 1 serified no base
|
cv72 = 1 # 1 serified no base
|
||||||
cv73 = 2 # 2 curly
|
cv73 = 2 # 2 curly
|
||||||
cv75 = 1 # 4 closed contour crossing
|
cv75 = 1 # 4 closed contour crossing
|
||||||
|
|
|
||||||