be5invis / Iosevka

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

Tails for some italic cyrillic letters #972

Closed pv4 closed 3 years ago

pv4 commented 3 years ago

Hello!

I'd like italic style of some cyrillic letters to have right bottom tails (maybe using a new variant) as well as latin m/n/h do. So if anyone (like me) enables tailed variants of these letters then he would be able to make cyrillic more consistent with the latin.

I know these latin variants are not default for some reason (I don't know why) and I assume the tailed cyrillic letters wouldn't satisfy anyone for same reasons. But while iosevka has separate variants for the mentioned latin letters, introducing separate variants for cyrillic (or other "national") letters would be IMHO wasteful in terms of ptl code and cvXX namespace.

The FULL list of letters I ask about is presented on the image. At the top are the current variants, followed by latin n. At the bottom is the proposed change: the same letters with the tailed leg copied from the latin n (using gimp editor).

If you don't even consider implementing the variants, feel free to just close the issue. Otherwise I can write more details here to justify the proposed change and explain why I think this would be a nice feature (if you want me to).

image

be5invis commented 3 years ago

Are there use cases of such curly tails in existing monospace / programming fonts? You know what, I only have 10 standard cv## tags left, so allowing a letter to support variants will need some justification.

efermi commented 3 years ago

These tails are called serifs and they do appear in the Slab version of the font. Isn't it possible to reuse them?

be5invis commented 3 years ago

@efermi The problem is not reusing geometry, but OT feature tags. There are only 99 tags available and I have already used 89 of them.

efermi commented 3 years ago

What I had in mind is more of a workaround, wouldn't it be possible to create a separate build plan for italics with serifs enabled?

pv4 commented 3 years ago

Just for you information: I'm currently working on the detailed justification, it's still in progress.

What relates to cv## tags, I see a few possible variants to solve the issue. First of all, I am personally AGAINST giving each cyrillic letter a separate cv## tag. According to https://typeof.net/Iosevka/ Iosevka covers 4753 characters and giving each of them a separate cv## tag is just a waste. I fully agree with @be5invis that each cv## tag MUST have a justification. But in this issue I don't expect new cv's to appear as well as no cv## exists for e.g. cyrillic-de.

As for me, the best solution is to create "private" variants like those for cyrl-yeri and cyrl-ef so that a person who builds an Iosevka variant can choose between them, while built font files don't have an ability to switch between them dynamically (at run time). Why not?

Another way is to create a cv## tag with prime something like italic-tails and variants straight/tailed/serifed and apply it BOTH for the letters specified in this issue and latin h/m/n (and probably a/d/u/whatever). It seems very unlikely for me that someone will choose n = *tailed and m != *tailed/h != *tailed. Though this way would be incompatible with the current variant set for these latin letters.

@efermi These tails are NOT serifs. Serifs are square while the tails are rounded.

@be5invis If this information is enough for you to decide on creating such variants, please, let me know so that I don't spend time creating the detailed justification.

be5invis commented 3 years ago

@pv4 My idea is that all variants should be accessible through OT. If there's a strong justification of tailed Cyrillic, I will add them (I can re-enable non-standard tags). It will be much better if you could provide existing programming fonts having these styles.

pv4 commented 3 years ago

I can re-enable non-standard tags

BTW how many non-standard tags are available?

be5invis commented 3 years ago

@pv4 Non-standard tags are four capital letters, so it is unlimited.

pv4 commented 3 years ago

Are there use cases of such curly tails in existing monospace / programming fonts?

This was a challenge for me. Not many monospace/programming fonts have italic variant. Even those that do, actually have an italic that is just slanted regular with same letter shapes. Moreover, I'm not aware of many monospace/programming fonts that support cyrillic because the primary language for programming is "us english".

The font examples I found are presented at the end since they are NOT the primary justification IMHO.

THE PRIMARY JUSTIFICATION

The primary reason I created this issue is Iosevka look CONSISTENCY in italic variants.

I like that Iosevka has a separate italic style and I'd like to have it looking as different from the upright one as possible without breaking "Iosevka visual style". For that purpose I use mnh=*tailed for italic build. Here is what I have in sans-italic and slab-italic: image

The following image shows inconsistencies between "tailness" of different characters in sans variant. No inconsistencies in latin, but there are ones in cyrillic: some letters have tails while some don't. I understand why ишпт have tails: their shapes depend on the shapes of unm, and they are fine. You may see below in this comment that it's correct for лнчыя to have right-bottom tails as well. image

The same is true for slab variant: some cyrillic letters have tails (иптш) while some have slabs in similar situations (лнчыя). image

The look is consistent if using m=normal, nh=straight. image

THE FONTS

Iosevka is NOT AN AVERAGE monospace/programming font.

Many of monospace/programming fonts only have latin support and a single upright variant. Unlike them, Iosevka has separate upright/italic/slab/slab-italic shapes that makes it usable in areas other than "terminal font" and "programming font".

I use Iosevka as a default font in Firefox and turn off "Allow pages to choose their own fonts" switch so on my machines ALL sites use Iosevka. And existance of different weights, upright/italic and sans/slab variants is the key feature of Iosevka for me. I've also seen a user here, in one of Iosevka issues who uses it as a default font on a smartphone interface.

As a result, denying to create a variant just because other monospace/programming fonts don't support it is IMHO not Iosevka way. Iosevka already has beautiful вгдф italic variants that differ from the upright ones.

Here are the examples having (nearly) what I'd like to see in Iosevka. The phrase used is "ночные ширятся поля".

  1. Computer Modert Typewriter Text Italic [https://www.1001fonts.com/cmu-font.html].

image Green are what I ask for. Red (che, ч) is what I think would be better NOT to implement to keep the variant Iosevka-like.

The variants for лнчя have more long tails than ы, but also note that in this font ш and и have different tails as well although in Iosevka they are inherited from latin u and have same-length tails. Also unlike the image presented, in Iosevka ши have NO top-left "tails" so ч should not have one as well.

As a result in Iosevka нчлыя should have same-length tails and have no top-left "tails". image

  1. Victor mono [Downloaded from https://draculatheme.com/blog/best-free-fonts-for-programming].

This one has top-left "tails" for чши as well, and a cursive form of л (similar to greek uppercase lambda) used when hand-writing. I'm not sure it worth implementing this shape of л but the tail would be nice. image

  1. okolaks RegularItalic, not monospace/programming [https://www.1001fonts.com/okolaks-font.html]

This one only has н with a tail. The remaining letters are just slanted upright. image

  1. PT Serif Italic (not monospace/programming) [https://www.1001fonts.com/pt-serif-font.html]

As with other presented fonts, many letters have top-left "tail". "Tails" here look much like Iosevka slab italic variant but they are still tails. The "slab" variant of PT Serif Italic is presented on the second image. image image

  1. Cursive letter look as learned at school This proves that it's ok for the requested cyrillic letters to have tails. image
pv4 commented 3 years ago

I updated the previous comment a few times. Sorry :)

pv4 commented 3 years ago

Awesome! Thank you!

image