JetBrains / JetBrainsMono

JetBrains Mono – the free and open-source typeface for developers
https://jetbrains.com/mono
SIL Open Font License 1.1
10.58k stars 298 forks source link

Spacing only ligatures variant #11

Open ollien opened 4 years ago

ollien commented 4 years ago

This font looks really nice, but I don't want the symbol ligatures - I find they make things harder to understand. Is there any chance of releasing a version with these ligatures removed?

I've seen some fonts include a configurator that allows you to download different font variants (See: Input). Perhaps something like that might work out?

CreamyCookie commented 4 years ago

Really nice font.

I agree. I'd love a version that only includes whitespace-shifting ligatures.

To balance whitespace more efficiently by shifting the glyphs in certain cases.

Instead of joining = and =, this new variant could also make them closer, as is the case for ||.

KillyMXI commented 4 years ago

This is why I can't use ligatures the way they are now. The change in shape is really confusing. We need an option for aligned but still spaced symbols. And nothing should change the visual order. Like, !== should still have the exclamation sign first - that's how I write it, that's how I read it.

As for implementation, there is one more option to consider. Fira Code ships with stylistic sets, and some IDEs (such as VScode) can use them to adjust the looks of certain symbols.


The comment https://github.com/JetBrains/JetBrainsMono/issues/19#issuecomment-582517704 makes a good summary about issues with ligatures. I think the proposal to make ligatures only visually align symbols and not stretching this feature too far - will help with some of them.

philippnurullin commented 4 years ago

@KillyMXI The bugs @cipriancraciun referring to are mainly closed. There will be a ligatureless version soon. As for the spacing only ligature variant. This is can be achieved by specific OpenType feature, but it won't be added anytime soon. Right now all the focus is on the lighter weights.

KillyMXI commented 4 years ago

@philippnurullin My takeaway from that comment is that if you take too much liberty with symbols interpretation, there inevitably will be cases when your interpretation conflicts with various contexts. Some issues (a bit above the half of listed issues in this particular case) closed, others may be created or just annoy someone but left unreported - it's always easier to disable it all at once.

In my opinion, ideal font will have alignment-only ligatures by default and have language-specific toggles. This way I will be able to configure my IDE to have perfect set of ligatures for any language I work with and avoid the issue with conflicting contexts.

And still, I can't stand your interpretation of !==. That's still too much liberty. Stuff like this might prevent me from using the rest of language-specific ligatures even if that will come to reality.

philippnurullin commented 4 years ago

@KillyMXI Actually we have some experiments running in this field, but can't say more. So the temporary solution will be version without ligatures, which will be present in next update.

yellowsink commented 3 years ago

@KillyMXI You may disagree, but I actually quite like the ligature for !==; I don't take much offense to this: image Although it is very far removed from the original

KillyMXI commented 3 years ago

I can't disagree you like it.

Even if I were less concerned about the disconnection between the shape and underlying characters, this symbol still has another issue: Thin diagonal line is actually hard to see. It always demands for a second look to make sure it is not ===. Reading code like this is like walking a mine field. I don't understand why anyone would trade legibility for slick look.

I would've made it something like this: image (Thick diagonal to make sure it doesn't get lost in any font size on any monitor, thin breaks to make it stand out even more.)

Then, in order to keep it closer to the underlying characters order, I would move it to the left: image

Then I would try to replace / with ! and we are close to spacing only ligature...

yellowsink commented 3 years ago

Ok to be fair I think your second design is actually better, mainly cause of the preservation of character order.

On Sat, 18 Jul 2020, 23:36 MXI, notifications@github.com wrote:

I can't disagree you like it.

Even if I were less concerned about the disconnection between the shape and underlying characters, this symbol still has another issue: Thin diagonal line is actually hard to see. It always demands for a second look to make sure it is not ===. Reading code like this is like walking a mine field. I don't understand why anyone would trade legibility for slick look.

I would've made it something like this: [image: image] https://user-images.githubusercontent.com/13851064/87862877-74fb7700-c95d-11ea-93c9-6c2ed6978129.png (Thick diagonal to make sure it doesn't get lost in any font size on any monitor, thin breaks to make it stand out even more.)

Then, in order to keep it closer to the underlying characters order, I would move it to the left: [image: image] https://user-images.githubusercontent.com/13851064/87862984-d53ee880-c95e-11ea-9432-3e79fc544efe.png

Then I would try to replace / with ! and we are close to spacing only ligature...

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/JetBrains/JetBrainsMono/issues/11#issuecomment-660552202, or unsubscribe https://github.com/notifications/unsubscribe-auth/AETAXXXGDXYPIXCNMWV25BLR4IPWFANCNFSM4KHHLX4A .

CircleCode commented 3 years ago

I think there are 2 requests in this issue:

How do you feel about opening a second issue for this second request to keep track of it?

CircleCode commented 3 years ago

@philippnurullin additionaly, what about adding the "stylistic sets suggestion" label to this issue

philippnurullin commented 3 years ago

@CircleCode You are right this is two separate requests. I can say that there won't be font version with only spacing ligatures, but we are now trying more broad approach that will give ability to tune what ligatures you want to use & it's language sensitive. But it won't be ready anytime soon.

You can create the issue with request for stylistic set with alternate construction for ligatures. Please add examples if you have them.

CircleCode commented 3 years ago

@philippnurullin to be sure I correctly understand,

we are now trying more broad approach that will give ability to tune what ligatures you want to use & it's language sensitive

what you are investigating is to be able to enable ligatures sets, like for example

Please add examples if you have them.

you ask for examples of differences I'd like to see for stylistic ligatures, right?

philippnurullin commented 3 years ago

what you are investigating is to be able to enable ligatures sets, like for example

space only ligatures java ligatures latex ligatures … (maybe not with this fine granularity, but this is the idea), but there won't be a ttf file for every of these sets, right?

Yes, and java only spacing ligatures too.

you ask for examples of differences I'd like to see for stylistic ligatures, right?

Yes. More minds almost every time better that one. )

CircleCode commented 3 years ago

@philippnurullin #287 opened

CreamyCookie commented 3 years ago

I can say that there won't be font version with only spacing ligatures

@philippnurullin Do you mean there won't be any way to only enable the spacing only ligatures?

That's pretty sad, but in that case, this issue should be closed, shouldn't it?

I really hope that's not the case though. Any insight to why that decision was made?

philippnurullin commented 3 years ago

@CreamyCookie Sorry for the wait.

@philippnurullin Do you mean there won't be any way to only enable the spacing only ligatures?

Yes, there will be. But it won't be a different font file.

That's pretty sad, but in that case, this issue should be closed, shouldn't it?

I can close the issue, but i'd like to keep it open until we release the solution.

CreamyCookie commented 3 years ago

Yes, there will be. But it won't be a different font file.

Great to hear! =)

KillyMXI commented 2 months ago

Interesting case of a font with safe-ish ligatures only: https://github.com/0xType/0xProto Honestly, didn't expect anyone to share the same concern and designing such a font.

In practice, it seems they still took too much liberty when moved symbols closer together in ligatures. That causes extra apparent empty space around and might become confusing - is there extra whitespace or is it not...

image

Previously, I made a comment that is related to this issue: https://github.com/JetBrains/JetBrainsMono/issues/287#issuecomment-1386861599 There I came up with "stencil bridge" analogy. This is one part that makes safe spacing-only ligatures.

Now it seems that designing those with monospace grid awareness is also necessary, in order to avoid creating empty space.