githubnext / monaspace

An innovative superfamily of fonts for code
https://monaspace.githubnext.com
SIL Open Font License 1.1
13.16k stars 219 forks source link

These fonts are unusable in modern IDEs and editors. #111

Open zd-dalibor opened 7 months ago

zd-dalibor commented 7 months ago

Hi, Thanks for this grate work, but this is not usable at all.

  1. It is not recognized as monospace font by modern IDEs like IntelliJ and Visual Studio. Only VS Code is working fine with these fonts.
  2. Under windows is not visible by IDEs if it is not installed for all users, most developers working in controlled environments where using admin privileges is denied and installing fonts for all users requires admin rights
  3. It is not rendering correctly in windows terminal, also it is not recognized as monospace fonts in windows terminal (for other terminal emulators I do not know)
  4. There is no Nerd Font version (I do not know if this font is possible to be patched with nerd-font patcher), so it is not usable for all variants of oh-my-... and for Neovim
atomicbird commented 7 months ago

This seems to be a platform-specific issue, because macOS recognizes the fonts as fixed width, and they can be used in Xcode and other developer tools.

jbehrens94 commented 7 months ago

They can be used with Xcode, but as mentioned in issue #23 most of the fancy font features don't work.

garthk commented 7 months ago

@jbehrens94 have you dug around the typography settings? I found them helpful in Monterey, where they even showed the texture healing as an option by name. Ventura, less so, but I'll post some screen shots so people know where to look after they open the Fonts dialog:

Font dialog with midline ellipsis in circle (⋯) button highlighted Menu with Typography… option highlighted Typography dialog

These work in Terminal.app. I have not checked them in XCode.app.

atomicbird commented 7 months ago

@garthk They don't work in Xcode. You can open and change typography settings but @jbehrens94 is correct, they have no effect.

athompson-merlin commented 7 months ago

I have to agree - these fonts, as-is, are nearly useless on Windows. Only those very few applications that have a convenient configuration file AND are willing to use variable-pitch fonts (iow: VS Code and very little else) can use Monaspace; everything else doesn't recognize it as a valid monospace font.

The PANOSE "Proportion" field in all the fonts is currently unset (or set to "Any", same net effect) whereas it needs to be set to "Monospace" to be visible in most editors/terminal emulators.

I'm unsure how to change this in the Monaspace build, but in FontForge at least, the setting can be found at Element->Font Info->OS/2->Panose->Proportion. I'm just not willing to manually edit 100+ files...

athompson-merlin commented 7 months ago

Ah, someone beat me to it, on #17.

Finii commented 7 months ago

Nerd Font automatically fixes the Panose flags on patching. The patched font seems to be working on Windows, at least it shows.

Resources:

The results on Windows are kind of mixed. While it shows in bold (i.e. monospaced) in Visual Studio it does not in Windows Terminal.

Maybe you can try things out and report.

Screenshots:

grafik Visual Studio 2022

grafik Windiows Terminal 1.18.2822

P.S.: The archive is tar.xz for good compression and gz because Github does not support xz, sorry for the incenvenience

zd-dalibor commented 7 months ago

Hi @Finii

The patched font is visible in windows terminal.

In IntelliJ ligatures are missing, and it is only visible if it is installed for all users (required admin rights). I think this is because it is OTF type. It will be nice if we can get TTF type version for windows, this will work for current user install (This is wrong statement, I do not know why but for some reason some fonts installed only for current user under windows 10/11 are visible in IntelliJ and some fonts do not and require installation for all users - https://youtrack.jetbrains.com/issue/JBR-2567 The bug is marked as fixed).

The other font wights are missing (Extra Light, Light, Semi Light, Medium, Semi Bold...).

Also, other flavors are missing (Argon, Xenon, Radon, Krypton). This is only Neon.

image
Finii commented 7 months ago

@zd-dalibor

Well, for Nerd Fonts you just need to add --ext ttf to get a ttf font out of the patcher. But the problem is the hints. Postscript fonts (.otf) have far less advanced hinting, just by 'blue zones', while Truetype fonts (.ttf) use instructions that can differ glyph by glyph. There is no way to automatically convert otf to ttf hints and it is impossible to convert ttf to otf hints at all.

So usually you need to stay in the realm that the original font manufacturer choose, because the look will be different (in small details).

As font designer I also would not want to support both, because usually the look will be different. But I would choose ttf over otf nowadays, because specifically of the hinting. Both (ttf and otf) are OpenType fonts and the other capabilities are comparable.

Some weights I did not include [1] in the Nerd Font set, because I deemed them 'not useful' for terminal use. But Medium is there:

image

If you think other weights are useful, let me know. I just want to limit the number of sub-fonts in Nerd Fonts.

Also, other flavors are missing (Argon, Xenon, Radon, Krypton). This is only Neon.

Correct. I just put one style here, as that should be sufficient to check if this threads problem (not usable in IDEs) would be fixed with the Nerd Fonts versions, because then we specifically know what needs to change in the original (this repo's) font to make them work. The Nerd Fonts patcher tells users what quirks it fixes in to-be-patched fonts to make them usable ;-)

For example, as mentioned already in a lot places, Panose:

$ fontforge font-patcher --debug 2 --dry src/unpatched-fonts/Monaspace/Krypton/MonaspaceKrypton-MediumItalic.otf --makegroups 4
Nerd Fonts Patcher v3.0.2-167 (4.7.1) (ff 20230101)
DEBUG: Naming mode 4
DEBUG: Monospace check: Panose is invalid ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); glyph-width-mono True
INFO: Setting Panose 'Family Kind' to 'Latin Text and Display' (was 'Any')
INFO: Setting Panose 'Proportion' to 'Monospaced' (was 'Any')
INFO: Redistributing line gap of 400 (200 top and 200 bottom)
DEBUG: Extended glyphs wider bounding box than basic glyphs
DEBUG: Font has negative right side bearing in extended glyphs
DEBUG: Final font cell dimensions 1240 w x 2400 h
...

So the aim here was not to provide people with a Nerd Fonts version but to help Githubnext fix bugs.


Addendum:

You note this:

image

These ligatures (I guess you expected them there) are not active by default but are extended typographic features [2], like stylistic set (SS), that you need to activate in your IDE (I have no clue about IntelliJ). If that can not be done you can also 'burn them in' (make them default) for example with https://github.com/MuTsunTsai/fontfreeze or similar tools

[1] https://github.com/ryanoasis/nerd-fonts/pull/1405/commits/05c751441d9be98bab3ad9f9f4c49a25be496338 [2] https://github.com/githubnext/monaspace#coding-ligatures

Edit: Add missing word 'Panose' :-D Edit: Add addendum

zd-dalibor commented 7 months ago

Hi @Finii thanks for the response.

For me the normal/400 weight is too thick for my taste, it will be nice that patched fonts keep all weights from original font. But this is only my opinion. Nevertheless, nerd font patcher is available to everyone, so anyone can build their own version.

Finii commented 7 months ago

That means SemiLight combined with SemiBold? Or SemiLight combined with Medium?

zd-dalibor commented 7 months ago

@Finii In my current setup I am combining Cascadia Code light/300 and semi-light/300 (windows terminal does not have option to select font weight for bolded text).

And only to mention, Cascadia font is installed for current user only and it is accessible from all below apps.

Windows Terminal

image

Visual Studio Code

image

IntelliJ IDEA

image image

Visual Studio

image
Finii commented 7 months ago

windows terminal does not have option to select font weight for bolded text

If you self patch I can show you how you create a RIBBI font group of whatever weights you want. With renaming the weights... Thin -> Regular ThinItalic -> Italic Light -> Bold LightItalic -> BoldItalic

zd-dalibor commented 7 months ago

@Finii ,

I am using docker nerd font patcher image to quickly patch all fonts in the folder:

docker run --rm -v /path/to/fonts:/in:Z -v /path/for/output:/out:Z nerdfonts/patcher [OPTIONS]

Maybe, I can use --name option to create separately Regular, Italic, Bold and Bold Italic from specific originals font I want. But, maybe I am wrong, because the font patcher always appends internal font weight to the name of patched font. But again, this will require to patch each font separately.

It will be nice if you can share some easy way for this. Some applications, especially on windows, does not understand these in the middle font weights.

Finii commented 7 months ago

share some easy way for this

There is a new feature in font-patcher since this commit Make sure you have the latest docker image. The in-parens version of the patcher needs to be >= 4.7.0

[1] https://github.com/ryanoasis/nerd-fonts/wiki/ScriptOptions

HunterZ commented 7 months ago

Installed the TTF flavors from release version 1.000 in Windows 11, and there are a number of immediate issues trying to use them with Terminal:

Seems like Windows support just didn't get much attention, which is ironic.

Finii commented 7 months ago

fonts are rendered in italics for some reason

I guess this is #117. Maybe try the static versions.

HunterZ commented 7 months ago

Seems like that would sacrifice a lot of the novelty of these fonts though.

Finii commented 7 months ago

@HunterZ That Monaspace is a variable font is the novelty for you? :thinking: I thought VF is the new normal :grimacing: For me the novelty is the texture healing - and as that works via calt is also possible in static fonts. Maybe misunderstanding?

idan commented 7 months ago

Whoops, GH auto closed this when I merged #125

We'll produce a new build soon and check that this (and related issues) are solved.

Ryuuji159 commented 6 months ago

Apparently the font still has this issue, it doesnt really work with gnome terminal (not detected) or any jetbrains ide (no ligatures or texture healing), when will a build be made with that fixed?

zd-dalibor commented 6 months ago

Hi, there is only two issues here for me:

  1. Applications do not detect these as a monospace fonts
  2. Jetbrains IDE detect these fonts under windows only if they are installed for all users (but this is not the case with other fonts e.g. Cascadia - you can install Cascadia for current use and Jetbrains IDEs will detect it)

All other features like ligatures, texture healing, variable width... are specific open type font standard features, which are relatively new, are only supported with small number of editors and terminals (I think under windows those features are fully supported in vscode and wizterm, but need to be explicitly enabled, e.g. for vscode "editor.fontLigatures": "'ss02' on", other application will ignore those features).

In general, those open type standard features only work for web-based rendering engines, native apps still do not support them (maybe because need to be implemented on OS level). And by me, this is disappointing because this gives advantage to electron-like instead of native applications.

Finii commented 6 months ago

All other features like ligatures, texture healing, variable width... are specific open type font standard features, which are relatively new

While "texture healing" is a novel concept it uses the very old contextual alternatives calt iirc. A lot programming fonts have these since ... at least 2010 I guess. Like Fira Codes arrays arrows for example. calt is supported in almost all terminals if I'm not mistaken.

I believe we have found out why the font is not detected by Gnome Terminal, but the actual fixing will probably take some time. Meanwhile you could check if the Nerd Font Mono (NFM) variants in https://github.com/ryanoasis/nerd-fonts/releases/download/v3.1.1/Monaspace.tar.xz do work as you expect, because some issues are autocorrected there.

Maybe you can try MonaspiceNe NFM Regular or some other NFM and report back, that would help finding the underlying issue.

Why JetBrains does not show the "texture healing" is beyond me. This is technically no "advanced" feature like ligatures or variable fonts.

With this electron versus 'native', I have no clue, I work only in terminals with real native (i.e. textmode) applications :-D

Finii commented 6 months ago

but need to be explicitly enabled, e.g. for vscode "editor.fontLigatures": "'ss02' on"

If you like a stylistic set (for example SS02: Special rendering of <= and >=) and your IDE does not support stylistic sets, I believe you can just "turn it on as default" in the font file with for example https://github.com/MuTsunTsai/fontfreeze.

Ryuuji159 commented 6 months ago

Thanks, the NFM version works on gnome terminal, but on jetbrains, it still doesnt work properly, I can't really be sure if texture healing is working, but ligatures definitely aren't image

It shouldn't be a problem with jetbrains because it works with other fonts, like Fira Code image

Finii commented 6 months ago

Thanks for reporting back!

Ligatures are indeed a problem as I pointed out in https://github.com/githubnext/monaspace/issues/132. The reason is that the ligatures here are really ligatures, while other font's ligatures are not technically ligatures but contextual alternatives. This can not be easily changed but needs a lot of manual editing. I do not know why Githubnext implemented the ligatures as ligatures, though.

But that the NFM works in principle is good, because a) Nerd Fonts' fonts work, which is my responsibility, and b) all necessary steps of change here at Monaspace are already layed out (I mentioned them in for example 132). I mentioned all I know of, which is all that Nerd Font does, which seems to be sufficient ;-)

Finii commented 6 months ago

This is from your upper image...

Texture healing is active, at least in the preview on your image's right side.

To make this more obvious I copied ini from the word maximize and put it just below pme of development. Very visible the wider m next to two small i and a smaller m next to non-small p and e.

Also look at the word maximize itself in the first row, the m next to the a is smaller than the m next to the i within that one word.

So it does work (as expected ;-) Ligs are a different thing, maybe. But the technology behind texture healing is very old, but noone ever came up with this concept of texture healing (as far as I know).

Screenshot 2023-12-18 at 22 59 40

Edit: Typo

Nargonath commented 5 months ago

I just discovered Monaspace and as many other I'm excited to give it a try but to discover that the ecosystem might not have caught up yet to use it properly. Seeing all issues open asking to help use it or people saying it doesn't work in "X", what do you think of improving the support section in the README to list the support in various terminals or other IDE so we know were it stands at a glance?

mrclayman commented 5 months ago

Whoops, GH auto closed this when I merged #125

We'll produce a new build soon and check that this (and related issues) are solved.

Hi @idan , any ETA on the new version? Cheers. :blush:

justDeeevin commented 5 months ago

What's the status on the font being recognized as monospaced? Right now, I can't use this font with the Kitty terminal because it is an absolute requirement that the font be recognizable as monospaced.

justDeeevin commented 5 months ago

Wait a minute, that's what #125 is about! :facepalm: Nevermind. Unfortunate that such a crucial feature isn't on release yet, but I can handle cloning + building.

Cremesis commented 4 months ago

Waiting for the new release!

HunterZ commented 4 months ago

Whoops, GH auto closed this when I merged #125

We'll produce a new build soon and check that this (and related issues) are solved.

3 months later, and this project is looking kind of abandoned. Oh well :(

jbehrens94 commented 4 months ago

It's still not fixed and it's really sad, I would've hoped that GitHub would be more professional and responsible than this.

mrclayman commented 4 months ago

Has this really been abandoned? :confused: I mean, the radio silence is not exactly reassuring but I'm still hoping that they are just fixing all of the issues reported. Can @idan or somebody else from the GH team shed some light on this?

equinox-and-solstice commented 2 months ago

Has this really been abandoned? 😕 I mean, the radio silence is not exactly reassuring but I'm still hoping that they are just fixing all of the issues reported. Can @idan or somebody else from the GH team shed some light on this?

There have been no updates to any registered branches in five months. This thing is toast

equinox-and-solstice commented 2 months ago

However, I installed the 42 individual fonts for the two faces that I liked in particular, and that almost worked out? There is some odd behavior with the semi-wide fonts showing up as a separate face: font selections

But... not as odd as some of my code in Eclipse...

Parentheses gone wild: wild parentheses

And in these comments, the numbers were somehow displaced to the beginning? And that blue blurb at the bottom is supposed to be @Test: crazy number placement and @Test attribute

idan commented 2 months ago

Not toast! Work is happening, just not in the public eye. Stay tuned, I know it's frustrating!

justDeeevin commented 2 months ago

Thanks for the reassurance. I look forward to whatever you have cooking.

mrclayman commented 2 months ago

I am really happy to see I was wrong. Huge thanks to all at Github and Lettermatic for the update. It's awesome to see that this typeface is still being worked on and improved.

kenmcd commented 2 months ago

However, I installed the 42 individual fonts for the two faces that I liked in particular, and that almost worked out? There is some odd behavior with the semi-wide fonts showing up as a separate face: font selections

But... not as odd as some of my code in Eclipse...

Is your screenshot from Eclipse? And on what operating system?

In the new v1.100 release there are still name issues and settings which will certainly cause problems in Windows applications (e.g. LibreOffice, Word, etc.) and may also affect some of the code editors. So I am trying get a bit more info to be able to test potential solutions, and then post a bug here. Or it may just require making a LibreOffice/Windows-friendly version. Because it is not going to work like this.

equinox-and-solstice commented 2 months ago

Is your screenshot from Eclipse? And on what operating system?

Yup, these are from Eclipse 2024-03 on Windows 11 Home version 10.0.22631.

kenmcd commented 2 months ago

Is your screenshot from Eclipse? And on what operating system?

Yup, these are from Eclipse 2024-03 on Windows 11 Home version 10.0.22631.

OK. Thanks.

heathercran commented 1 month ago

Panose flags were fixed in version 1.1, which will resolve a lot of the issues in this thread regarding programs not recognizing the fonts. The 1.2 update will also include static fonts with all ligatures enabled by default, which will make the fonts compatible with programs that do not support enabling stylistic sets, like IntelliJ IDEA.

Karmalakas commented 3 weeks ago

Not sure how much this is related, but I didn't mange to make it work on PHP Storm. Tried installing both OTF and TTF versions. IDE just wouldn't pick up the fonts. While searching, I found multiple posts saying, that for IntelliJ to pick up fonts, they need to have at least 4 versions:

I noticed, Normal is not in the package, but Regular is. Could this be the reason? Or is it still something that was discussed here? I tried latest v1.101

Edit: Ah.. Installed for all users and fonts appeared. Still no ligatures, but that's another issue

Finii commented 3 weeks ago

Edit: Ah.. Installed for all users and fonts appeared. Still no ligatures, but that's another issue

Maybe https://github.com/githubnext/monaspace/issues/111#issuecomment-1813979425 helps?

Karmalakas commented 3 weeks ago

I'm on IntelliJ and ligatures are enabled. Unless I'm missing something more.

Noctumsempra commented 4 days ago

Hello, I'm using Jetbrains IDE (PHPStorm) and can't see ANY of the LOTs of Monaspace fonts I installed. They aren't listed at ALL in the IDE. Neither monospace nor proportional. No monaspace font is listed in my IDE.

ANy news on this? Any new release with this fix is planned or anything? Thanks in advance.