be5invis / Iosevka

Versatile typeface for code, from code.
http://be5invis.github.io/Iosevka
SIL Open Font License 1.1
19.37k stars 580 forks source link

More open “5”, “c” and “e” #1287

Open twhb opened 2 years ago

twhb commented 2 years ago

Having the bottom left of the “5” curl less upward makes it more distinct from a “6”, especially at small sizes, while still being recognizable. Similarly, having “c” a bit less closed makes it more distinct from “o” while still being recognizable. A more open variant is already available for “g” (and appreciated), and a somewhat similarly edited variant for “t”.

Comparison of 5 and c between Iosevka, DejaVu Sans Mono and Fira Code
be5invis commented 2 years ago

Mimicking humanist sans-serif is considered out of scope.

twhb commented 2 years ago

I’m not 100% clear on what it means for a font to be humanist, but here are a few that seem to me not to be, and also aren’t on Wikipedia’s list of humanist fonts.

Comparison of 5 and c in Iosevka, Courier New, Inconsolata, and Source Code Pro
AndydeCleyre commented 2 years ago

Iosevka Term Custom

github-actions[bot] commented 2 years ago

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 15 days.

susinodan commented 2 years ago

Built Iosevka with [.widths.normal] "shape = 610", and [.metric-override] "cap", "ascender", "xHeight" and "parenSize" scaled down by 0.90 (10% shorter glyph size) to make glyph size close to Source Code Pro. Font size 12 for example: изображение

And, yeah, in this case I would agree with @twhb - more open "c" would be good, but not as open, as @twhb pictured. Just a little bit. MsPaint "simulation": изображение

github-actions[bot] commented 2 years ago

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 15 days.

AndydeCleyre commented 2 years ago

I'm still interested in a more open c.

unbadfish commented 2 years ago

I support more open 5 and c 👍

AndydeCleyre commented 2 years ago

Some as yet unmentioned monospaced fonts with way more open c: Ubuntu, Victor, Overpass

image

I don't think Ubuntu Mono's c looks very good though.

be5invis commented 2 years ago

My concern: Having a more open aperture (or, "separation between strokes") is a feature of humanist sans-serif. In general, Iosevka's geometric style is still Neo-Grotesque (and somehow having DIN features, like vertical lines at the sides of O), therefore introducing such a variant may look inconsistent with other letters & variants.

susinodan commented 2 years ago

But if it worsens the readability of glyphs... Perhaps there is a compromise solution? What criteria are used to define the size of the separation? Just wonder.

AndydeCleyre commented 2 years ago

I don't know if this carries any weight, but some fonts considered neo-grotesque but with especially open cs nonetheless:

cousteaulecommandant commented 1 year ago

OCR-B is also considered neo-grotesque and it has an aggressively open 5: OCR-B The tail doesn't even curl up at all, but almost the opposite -- it is almost pointing down, like it wants to avoid looking like a 6 at all costs. I like it a lot.

I think the problem with Iosevka here is that it attempts to make the curved corners in the loop of the 5 almost symmetric (left side being a mirror of the right side), which results in an excessively closed angle where the curve touches the vertical stroke on the left, and a tail that curls up too much. On the other hand, the lowercase "r" does a great job with its hook, which is asymmetric (right side has a sharper curvature than the left side) but doesn't clash with the overall font aesthetics. (I think the hook of the "r" dips down just the right amount, while the "c" dips down / curls up too much.)

Logo121 commented 1 year ago

Did a little experiment on using completely flat hooks on either end, kinda copying FairfaxHD and a few other pixel-based fonts

I suppose it would be a compromise between staying geometric and having an open aperture, though the results looks kinda meh: image

Having a flat top but a curled bottom makes the shape look more like a G, while the others look sorta fine in Heavy but gradually looking out-of-place in the thinner weights (especially Classical + Flat).

The Flat+Flat combination looks like it would go along with variants like #1269, but it also feels like a completely different style at that point.

I'll just leave this here for visualization/reference; I don't strongly recommend these takes.

cousteaulecommandant commented 1 year ago

Flat+flat might look better wit a larger curvature radius on the other side, but that might make the c not fit in the style of other characters. Any chance of making the c opening slightly more open, not even changing the shape, just "shaving" a few pixels off each side?

cousteaulecommandant commented 1 year ago

Like this: ccccccc

I just copy-pasted a bunch of Iosevka cs on an image editor and erased one pixel at a time. 0 is the original; too closed in my opinion. -1 removes one pixel from each end (keeping the ends horizontal). -2 removes a second pixel, and so on. (1 px = 1/30 of the character width, at the font size I used.)

I think something between -1 and -2 (or maybe even up to -3) provides more readability than the original (it "looks more like a c", or that was my impression), without clashing too much with the overall font style.

Logo121 commented 1 year ago

afaik (and to answer @susinodan's question) c hooks are controlled by the parameter Hook (y-depth of normal-sized hook shapes), if you know how to build with metric overrides, you can try shrinking that to see if it works. No guarantee that other things won't break though

Here's what happens if I replace it with SHook (depth of hooks in s, etc): image

Which does look more open, but not without its own issue: image This might be the same problem shared by some Epsilon-like glyphs though. idk.

cousteaulecommandant commented 1 year ago

Issue aside, I think it looks much better that way! What do others think? Also, does this apply to 5 as well? (I'm particularly interested in that one and not as much in the c, because I think 5 kinda looks like a 6 if you're not paying attention)

Logo121 commented 1 year ago

Hook affects the bottom hook of 5. The upper one is controlled by AHook instead.

Here's how it looks like if I only change Hook: image

vladkryv commented 8 months ago

The same as c probably applies to the letter e, which is even more closed (especially bold) current_e

By the way, if mirror the current e, there will be a +- more open version of c. e_to_c

dimhatz commented 6 months ago

Just to add my 2 cents.

As mentioned by @vladkryv, the legibility of e (and also of s IMHO) is much more problematic than c or 5. Especially on bold, smaller font sizes, lower resolution screens, due to the shape itself. e almost looks like a short θ (theta) on a low-res screen.

A more open e and s would be excellent, for those of us with less than perfect screens / eyesight.

P.S. Thank you very much @be5invis (and contributors) for this amazing font!

be5invis commented 1 month ago

There might be two sub-variants:

May need to be careful about the GID impact -- we have over 40K glyphs now again.

vladkryv commented 1 month ago

@be5invis thank you for your work. I'd like to ask a couple of clarifying questions about the proposed sub-variants:

  1. Would these metric overrides affect only the characters e, c, and 5, or would they be applied to all glyphs in the font?

  2. Regarding completely removing the hooks:

    • The e appears without a hook in many typefaces, so that seems normal
    • However, I'm not sure how the 5 would look, and especially the c, without hooks...
Logo121 commented 1 month ago
  1. Would these metric overrides affect only the characters e, c, and 5, or would they be applied to all glyphs in the font?

It will affect other glyphs (unless something is changed), like 2369 for example. Like I mentioned in my previous comment, no guarantee that other things won't break, but maybe you can raise an issue if something did. (We can't really make sure that all param changes work properly either because they are not really constrained)

  1. Regarding completely removing the hooks:

    • The e appears without a hook in many typefaces, so that seems normal
    • However, I'm not sure how the 5 would look, and especially the c, without hooks...

See this for a very rough demonstration for c (probably needs refinement)

But otherwise, here are some other fonts without hooks as reference: Pasted image 20231112045308 FairfaxHD (the one i tried to replicate): image

Pasted image 20231111133720 image (this one removes ALL hooks)