Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Short variants for uppercase cyrillic short I (Й) and Yo (Ё) #1169

Closed
2 of 3 tasks
ghost opened this issue Jul 26, 2021 · 11 comments
Closed
2 of 3 tasks

Short variants for uppercase cyrillic short I (Й) and Yo (Ё) #1169

ghost opened this issue Jul 26, 2021 · 11 comments

Comments

@ghost
Copy link

ghost commented Jul 26, 2021

  • The requested variant shape does not go too far away from Iosevka's design.
  • The requested variant does not conflict with any characters in Unicode that Iosevka currently supports.
  • At least two monospace/programming fonts, created by different designers, supported the requested variant. Provide images below.

In custom builds when you set line height to 1000 there are some minor problems. One of these is that parenthesis exceeding height limit and so rendered cropped. But that's not a problem because there is possibility to edit parenthesis height separately and manage to get it rendered properly.

But there is no such an elegant solution to also cropped cyrillic short I (Й) and Yo (Ё) uppercase letters. So I can only change height for all uppercase letters at once. And I can assume there is an identical problems with other uppercase letters with similar diacritic marks. So maybe it will be better to provide the ability for setting the custom height of specific letters.

But I use only basic cyrillic so requesting solution just for it. The suggested letter variants used in classic VGA fonts by IBM from which I moved to custom Iosevka. It's also used in Bedstead and Press Start 2P monospaced fonts which frankly I don't like but thanks for it I can completely fill checklist above.

Lowering the diacritic marks will help also but a little boring for my taste.

YCcrggvAZ0
vXcyYS67bT
gUdpAoNzNG

@ghost ghost added the 🔃 Variant Request label Jul 26, 2021
@ghost ghost changed the title Short variants for cyrillic short I (Й) and Yo (Ё) Short variants for uppercase cyrillic short I (Й) and Yo (Ё) Jul 26, 2021
@be5invis
Copy link
Owner

be5invis commented Jul 26, 2021

This (titling variant?) looks out of scope and will influence too many letters. I know in German there is also stuff like this (make Ä Ö Ü the exact height as A O U).

@ghost
Copy link
Author

ghost commented Jul 27, 2021

Maybe the custom height setting for uppercase letters with diacritic marks could be an option here. Just like for math operators, parenthesis, logical operators etc.

This will help users using single-line height Iosevka with languages other than English. Yes most of the problems here caused by Windows metrics but solution provided earlier with "winMetric..." parameter is just a half-measure here. It is causing completely unexpected behavior in some scenarios. For example wrong line height or even rendering normal-width glyphs like condensed ones (!) and extended glyphs like normal ones.

@be5invis
Copy link
Owner

custom height setting for uppercase letters with diacritic marks

You may not understand how marked letters work -- they are built from non-marked letters and the mark. To add such a "height" means you need to build a whole second set of uppercase letters to apply the above marks to them.

This is a very major change and will influence a lot of things. This will have severe impact on glyph quantity (expecting > 10000 glyphs being introduced), build time, and footprint.

@ghost
Copy link
Author

ghost commented Jul 28, 2021

I am aware of the performance impact and understand marks mechanics. I've tried to edit marks position before posting this request but that's messed up at least the tilde and caret symbols.

The suggested solution will do no harm as It will only affect the ones who need single-line height along with multiple languages support and that's all for windows only. So for general use this setting just could be turned off by deafult and have no side effects.

More simple solution could be the setting for replacing all uppercase letters that have diacritics marks with lowercase ones. This smells as good as old times and glyph reuse will be good for performance also.

But if we step back from that global problem I'd like to have just that one old styled lowered diacritic mark for the short I (Й) like on the image below. In Russian the Yo (Ё) letter used extremely rare by the most users and so there is no real problem and misreading. But short I (Й) used frequently and that lack of diacritic can provide you misreading.

And I think that style "does not go too far away from Iosevka's design" at all. Especially if we take a look at variants provided for latin X and Z.

II6hH1w1qx

@pv4
Copy link

pv4 commented Jul 28, 2021

replacing all uppercase letters that have diacritics marks with lowercase ones

BTW this would work bad at least for italic Й, where lowercase glyph has absolutely different shape than the uppercase one. I think other languages are affected too, e.g. German Ä, Ü.

@ghost
Copy link
Author

ghost commented Jul 29, 2021

would work bad

You know for now we have no support for single-line height at all. Except for basic latin which means only English support.

aAHvy2lLLJ

@VladWinner
Copy link

no support for single-line height at all ... for except basic latin

"We do not do special handling of compressing marks." Source

"Stacking marks are considered by design" Source

@ghost
Copy link
Author

ghost commented Jul 29, 2021

@VladWinner Thank you for links. Well it seems my only hope is just a short I (Й) variant with inner diacritic mark (like here).
@be5invis So can it be done? Sorry for bothering you I'm not quite sure it's a "special handling" or not in that case.

@VladWinner
Copy link

VladWinner commented Jul 29, 2021

I think there should be some font software that can do such transformations without reducing the height of source glyph (without mark):
image
Maybe this is what you need (but it still doesn't look like a decent solution).

Your concept for altered И/и is similar to default И with the acute accent (И́и́), so I hardly imagine it implemented (because it will be confusing).

@be5invis
Copy link
Owner

I added a metric override to control diacritics' placement and height. The options are:

Property Unit Default Value Meaning
accentWidth emu 200 Width of accent marks.
accentClearance emu 72 Vertical clearance of accent marks to the base.
accentHeight emu 176 Height of accent marks.
accentStackOffset emu 220 Offset height of accent mark stack.

Reducing accentHeight should be able to create more "flat" marks -- but be careful:

  • This influences all diacritic marks (including lower-case letters).
  • It may create broken geometry!

Also, there are options to configure "pads" of win metrics:

Property Unit Default Value Meaning
winMetricAscenderPad emu 0 Additional pad for Win metrics’ ascender to avoid clipping in legacy Windows applications.
winMetricDescenderPad emu 0 Additional pad for Win metrics’ descender to avoid clipping in legacy Windows applications.

@ghost
Copy link
Author

ghost commented Jul 30, 2021

Thanks to more accurate diacritic controls I was able to partially solve the problem in my case. But I suggest to make a note in custom configuration instructions that there is no support for line height less than 1250

@ghost ghost closed this as completed Jul 30, 2021
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants