juliamono icon indicating copy to clipboard operation
juliamono copied to clipboard

Possible alternate variant of small letter "l" with stylistic set?

Open Xenapte opened this issue 10 months ago • 18 comments

Hi! I was trying to switching my font from Fira Code to Julia Mono since the latter has italic variants, and I must say it's a really fantastic font.

However, the only thing that bothers me is that I feel the bottom of small letter l is a little too curly and personally, I don't find it harmonizing with the rest. I understand that this was done to make the letter wider and many people prefer this style, but I think it would be better if you could add a variant of l, where the strokes are straight and a horizontal bar is used to stretch the width instead, just like the bottom part of i. This is possible with Fira Code so I enabled it while I was using it.

Xenapte avatar Mar 31 '24 03:03 Xenapte

Hi! it's easy to add a cv.. for that!

I think the main reason for the current design is just to keep it as different as possible from 1 and I - it's easy to confuse 1,l, and I otherwise since the bases are all the same.

cormullion avatar Mar 31 '24 08:03 cormullion

Thanks! I know this is done to keep glyph shapes distinct - I think I've seen this reasoning in other fonts too, but I do like the straight variant (maybe because I'm just too used to seeing it as it is used in many popular monospaced fonts?)

Anyways a style variant would be much appreciated and thanks again for the efforts!

Xenapte avatar Mar 31 '24 11:03 Xenapte

It could look like this:

Screenshot 2024-03-31 at 16 28 08

If you're able to use an environment that allows you to select cv04 (such as VSCode), you could try it out:

jm-cv04.zip

cormullion avatar Mar 31 '24 15:03 cormullion

It could look like this: Screenshot 2024-03-31 at 16 28 08

If you're able to use an environment that allows you to select cv04 (such as VSCode), you could try it out:

jm-cv04.zip

This is absolutely a joy to use, thanks for taking care of my quirks on stylistic choices! Currently the only issue I see is the gap between the lt digraph being kinda too wide, but I get that we can't do kernings on a monospaced font (issue #123), so guess I have to get used to it :) L3POV4J3X1UXG((PXJ_1M

Btw I don't know if it's time for me to close this issue - maybe you wanna tweak it more before finalizing?

Xenapte avatar Apr 01 '24 09:04 Xenapte

Yes,I can (just) see what you mean - we might be getting close to optical illusion/antialiasing/rendering differences. Perhaps the asymmetry of the two letters (more weight on one side than the other) contributes to the perception of a gap...

After a tiny tweak, here's a comparison with SF Mono and Fira Mono:

Screenshot 2024-04-01 at 16 53 52

I'm not planning on another release just yet, though. Can leave this open until then.

cormullion avatar Apr 01 '24 16:04 cormullion

Alright, I see it.

Xenapte avatar Apr 02 '24 11:04 Xenapte

I get that we can't do kernings on a monospaced font

See this comment.

image

singularitti avatar May 05 '24 21:05 singularitti

Hi, I tried to turn cv04 on in VSCode but nothing seems to be different in l, am I doing it wrong? Here's my settings:

"editor.fontFamily": "JuliaMono",
"editor.fontLigatures": "'ss05', 'ss07', 'ss09', 'ss12', 'ss14', 'ss15', 'ss16', 'ss17', 'cv02', 'cv03', 'cv04'"

singularitti avatar May 05 '24 22:05 singularitti

Hi, I tried to turn cv04 on in VSCode but nothing seems to be different in l, am I doing it wrong? Here's my settings:

"editor.fontFamily": "JuliaMono",
"editor.fontLigatures": "'ss05', 'ss07', 'ss09', 'ss12', 'ss14', 'ss15', 'ss16', 'ss17', 'cv02', 'cv03', 'cv04'"

It is a test feature not released yet:

jm-cv04.zip

Xenapte avatar May 06 '24 04:05 Xenapte

OK, thanks. I saw it in the CHANGE of v0.055. Maybe we should remove it and put it in the next release?

singularitti avatar May 06 '24 04:05 singularitti

It's working for me.

Screenshot 2024-05-06 at 09 23 52

The OS caches fonts very 'assertively', sometimes it's difficult to get it to let go of previous versions. While I don't think you have to reboot to zap the font caches, certainly deleting the fonts before installing a newer version is helpful...

cormullion avatar May 06 '24 08:05 cormullion

I don't know then... I tried to zap the old font completely and reinstall via Homebrew, then reboot. But it is still the old style. I tried jm-cv04.zip and it works. Could @Xenapte confirm if this works for you? Thank you!

singularitti avatar May 06 '24 08:05 singularitti

Is there a way to force cv04 using pyftsubset? I tried --layout-features+=cv04 and --layout-features=cv04 but neither seemed to replace the l character. I also tried ss10 to get the alternate r but to no avail.

Timwi avatar May 06 '24 14:05 Timwi

I don't know then... I tried to zap the old font completely and reinstall via Homebrew, then reboot. But it is still the old style. I tried jm-cv04.zip and it works. Could @Xenapte confirm if this works for you? Thank you!

Latest release (0.055) works for me. Maybe it's a homebrew issue and you need to just try downloading from here directly

Xenapte avatar May 06 '24 15:05 Xenapte

Is there a way to force cv04 using pyftsubset? I tried --layout-features+=cv04 and --layout-features=cv04 but neither seemed to replace the l character. I also tried ss10 to get the alternate r but to no avail.

pyftsubset doesn't work with stylistic sets. It only supports features covered by running pyftsubset --layout-features=?.

If you want to use python fonttools to freeze stylistic sets, you need to write your own code to do that. Or just use a different tool.

Xenapte avatar May 06 '24 15:05 Xenapte

Thanks! Based on your link, I found the tool pyftfeatfreeze that can do this. It works perfectly for ss01 (alternate g), ss06 (simple a), and cv04 (alternate l). However, it does not appear to do anything for ss10 (alternate r). Could this be a problem with the font file? I notice that the tool doesn’t complain if I specify a completely invalid feature code.

Timwi avatar May 06 '24 15:05 Timwi

Thanks! Based on your link, I found the tool pyftfeatfreeze that can do this. It works perfectly for ss01 (alternate g), ss06 (simple a), and cv04 (alternate l). However, it does not appear to do anything for ss10 (alternate r). Could this be a problem with the font file? I notice that the tool doesn’t complain if I specify a completely invalid feature code.

Some relevant issues I found there:

I don't really know if this is an issue of the pyftfeatfreeze tool or the font itself based on my limited knowledge.

Xenapte avatar May 06 '24 16:05 Xenapte

You could try

https://mutsuntsai.github.io/fontfreeze/

to lock features in.

I found another computer, and installed vs-code, wezterm, kitty, and the latest release of JuliaMono, and everything worked as documented…. 🤔

(wezterm has a configuration quirk - it needs ‘assume_emoji_representation=false’ although I don’t think it should)

cormullion avatar May 06 '24 16:05 cormullion