tonsky / FiraCode

Free monospaced font with programming ligatures
SIL Open Font License 1.1
76.09k stars 3.07k forks source link

Bold style kearning / letter-spacing is not recognized in Jetbrains products #900

Open up-to-you opened 4 years ago

up-to-you commented 4 years ago

I opened an issue on Jetbrains side https://youtrack.jetbrains.com/issue/IJSDK-730, but after investigating some time i realized, that fonts were loaded right and they are applied right too.

Brief explanation (i don't think it's a good habit to paste whole issue linked above): the glyph's bold style "jumps by horizont", since it's wider than Retina style, my thoughts it's related to kearning or letter-spacing. But isn't monospaced fonts tends to solve such problems?

I still have some suspicion about the right side to submit this issue on (since i'm not professional grade typographer), so i asked here too.

image

tonsky commented 4 years ago

This is what v2 was supposed to fix. Try installing it and make sure your idea actually uses it (there was an issue when IDEA used bundled version instead of the one installed in a system). Simplest way to check is to see if Fl turns into a ligature.

up-to-you commented 4 years ago

Thanks for answer, for testing purpose i already removed any bundled versions. JB issue were updated and related to https://youtrack.jetbrains.com/issue/IDEA-216034, as Dmitry Batrak stated, the actual problem is that JB SDK uses Typographic Family name for fonts family recognition, such that it looks for pairs as Fira Code <-> Fira Code Bold and Fira Code Retina <-> Fira Code Retina Bold and the last one doesn't exists, so it applies synthetic embolden for Retina.

As i'm aware (can be wrong), that you started to work at JB product https://github.com/JetBrains/noria-clj. Can you leverage your position to help solving this issue ? =)

I think it will be much faster and less painful just to add separated TTF build, with Fira Code Typography Family name, but actually with Retina style. It can be actually temporary solution, until IDEA will let us to choose font styles manually (i hope).

I tried to modify build scripts to do it myself, but hit the wall for some dependency, since i'm on linux.

tonsky commented 4 years ago

I’m sure Fira Code build is in order with all the correct names in place. The problem is that Java (and by extension JB products) is looking in the wrong places. Not sure I know how to address those

ArcanoxDragon commented 4 years ago

This happens in Visual Studio as well, only after version 2.

On the non-Retina version, bold fonts are taller than regular, resulting in this: image

On the Retina version, bolt fonts are wider than regular, resulting in this: image

up-to-you commented 4 years ago

I’m sure Fira Code build is in order with all the correct names in place. The problem is that Java (and by extension JB products) is looking in the wrong places. Not sure I know how to address those

Sure, i can be not aware of JB approaches in terms of JDK customization, but to solve Java issue you mentioned it requires to modify font's related sun.* classes (if only JB doesn't use custom FontManager). And most likely JB will not do it in foreseeable future. So, i think it's a relevant approach to solve the issue by building separated fonts pack with few lines modification in source.

Don't know if @briman0094 's issue is depends on it too.

up-to-you commented 4 years ago

For those who interested using Retina style in JB products without such weird issue, i solved it by very dirty temporal solution:

swapped Retina and Regular names in FiraCode.glyphs (just in simple text editor) and built it on linux, using tools related to libfreetype-2.10.1, such that FiraCode-Regular is actually Retina style now.

This worked for me in Intellij Idea like a charm. Prebuilt Bold and Retina (Regular style name for right recognition in IDEA) fonts are at https://github.com/up-to-you/FiraCode/tree/master/jb-retina-style

Also, there are scripts/bootstrap_linux script a little bit modified.

philippnurullin commented 3 years ago

This is happening because in font naming Fira Code Retina doesn't have Bold version assigned in metadata names. Nothing wrong with that, that's legacy approach on font family recognition. This will be fixed when JetBrains IDE will have support of manual weight picker.