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

NerdFont glyph scaling #289

Open
Finii opened this issue Feb 7, 2025 · 4 comments
Open

NerdFont glyph scaling #289

Finii opened this issue Feb 7, 2025 · 4 comments
Milestone

Comments

@Finii
Copy link
Contributor

Finii commented Feb 7, 2025

NerdFonts contains the weather icons [1], and that set contains open phases of the moon.
That phases contain the moon with the same size, and the center of the full moon always in the same position, even if the moon is just 1/8.
The result is as-expected icon size even if the phase of the moon changes over the weeks, and it also doubles as progress indicator.

As you took the Cascadia Code NerdFonts adaption, let me use Cascadia Code (and not a NerdFont patched font or the original set itself) as an example. The gif should show how the progress is over a moon cycle.

In the Monaspace variant of Nerd Font Icons this is broken, as the moon icons are individually scaled/maximized in the 'cell'. The size decreases suddenly for full moon and first and last quarter have a different center of the moon sphere/circle.

But then, NerdFont (and Cascadia, and the original set authors) obviously do it wrong, because

The font patcher which ships with the Nerd Fonts project doesn't get particularly clever with the placement of each Nerd Font glyph within the monospaced "box".

Or maybe it is more clever than you thought.

Another example, the chevrons should be the same size, irrespective of direction, right? Not so in Monaspace.
It seems all the scaling rules (that Cascadia for example took up) are omitted. Maybe on purpose, who knows.

(Sorry, but I'm a bit hurt by this marketing speech claim that NerdFonts is too stupid. Do you really think NerdFonts does not care so much about their craft that they figured out heuristics? But the task is much harder as it must support all and any to-be-patched font even with the weirdest metrics and survive glyph updated. And even if, no communication back to Nerd Fonts what we could improve. This is completely different to how Cascadia Code handled the inclusion of NerdFonts which was a give-and-take. 🤷‍♀ )

Fini (NerdFonts maintainer)

[1] https://github.com/erikflowers/weather-icons

Cascadia Code implementation

Same as Weather set and NerdFonts

Image

Monaspace implementation

(Sorry I have no clue how to create a nice gif on MacOS)

Screen.Recording.2025-02-07.at.13.15.27.mov

Chevrons in Monaspace

Image
@idan
Copy link
Contributor

idan commented Feb 7, 2025

Hey @Finii — I wrote the release notes, and you're right. I shouldn't have written them that way. I apologize, my intention was not to poop on the work y'all have done.

The reality we saw was that nerdfonts are integrating a lot of different glyph sets with different metrics. There is probably no one correct solution for all the different sets, and that's what I was trying to get at with the "nothing particularly clever" remark. We tried to reach for a solution that would normalize things as much as possible.

I'll update the release notes later today to rewrite that section, last thing I want is you feeling this way. ❤

@idan
Copy link
Contributor

idan commented Feb 7, 2025

I updated the release notes with a clarification and a specific apology @Finii. We give a shit™ about doing the right things here.

Image

@Finii
Copy link
Contributor Author

Finii commented Feb 7, 2025

Thank you @idan ! For the explanation, the kind words, and the change.

@heathercran
Copy link
Collaborator

You're totally right @Finii, and there is definitely room for us to improve our implementation of Nerd Fonts. I'll make sure these scaling issues are fixed in our next release. Thank you for all of your work!

@heathercran heathercran added this to the 1.3 milestone Feb 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

No branches or pull requests

3 participants