monaspace icon indicating copy to clipboard operation
monaspace copied to clipboard

Remove Powerline from non-Nerd Fonts?

Open kkiris opened this issue 4 months ago • 2 comments

I noticed the "Variable" versions of all five fonts still included PUA characters despite their lack of Nerd Fonts support. As of the recent 1.3 release, the "Variable" font files include private-use area characters at the following codepoints:

  • E0A0-E0A3,
  • E0B0-E0C8,
  • E0CA,
  • E0CC-E0D2,
  • E0D4,
  • E123-E133, and
  • EE00-EE05

With a Nerd Fonts variant being included alongside each release, I figure it's probably acceptable to exclude the Powerline and Powerline Extra characters from the non-Nerd Font versions of Monaspace. This way users can use Monaspace without having to worry about PUA-conflicts (user could have them assigned for a variety of reasons). Any existing users who would be affected by this change (Powerline users who don't use the Nerd Font) can use the Nerd Fonts variant of Monaspace to access these characters. I figured merging the use cases together (as Nerd Fonts already contain the list Powerline symbols) would be simpler than creating an extra variant of the release.

Is this a possibility?

kkiris avatar Aug 22 '25 12:08 kkiris

Powerline symbols were requested (#88) before Nerd Fonts support was ever incorporated into the fonts, so I think there's a stronger use case for keeping them included in all versions of Monaspace's fonts instead of only in the Nerd Fonts versions. From our comparisons with other monospaced fonts, it seems that these are the standard PUA codepoints used for Powerline symbols, so conflicts should be unlikely.

Do you personally have a conflict with the codepoints used? If so, I'd appreciate more info on the conflicting font(s) to consider this proposal.

heathercran avatar Aug 22 '25 19:08 heathercran

Powerline symbols were requested (https://github.com/githubnext/monaspace/issues/88) before Nerd Fonts support was ever incorporated into the fonts

@heathercran This comment confuses me. If Nerd Fonts support was already incorporated, then the PowerLine symbols would've been present already, so of course they were requested before it was implemented. Why would someone request something that's already implemented? Also, Nerd Fonts support was requested (#24) before Powerline symbols were. Powerline support was made as a separate request because Nerd Fonts had an issue that needed resolved before support could be added (Nerd Fonts mistakenly placed Material icons outside the PUA range; resolved in Nerd Fonts v3.0). Now that Nerd Fonts support is implemented here, there's less of a case for Powerline's separate inclusion.


Anyways, there are multiple examples of conflicting uses for these PUA ranges. Microsoft's Segoe UI Symbol,Segoe MDL2 Assets, and Segoe Fluent Icons include PUA characters that overlap with Powerline's range (though their usage is marked as "legacy" for the latter). Additionally, those who code to extend applications (such as modding games) have little control over what PUA ranges were used by the developers; as such, they may need to use PUA codepoints in this range. Examples include Minecraft Bedrock Edition (codepoints for icons and control labels overlap Powerline range) and 3DS Pokémon games (various PUA characters overlap Powerline range including faces, arrows, & Korean braille). Including the Powerline symbols causes issues when using this as the IDE font while developing, I'd expect a fallback or missing character and instead I get Powerline symbols.

FWIW, Microsoft's Cascadia Code excludes Powerline symbols from their standard builds. This makes the most sense imo because PUA characters are meant for when an agreement exists between users and/or devs, and including Powerline symbols in all builds overrides any other use for the range. PUA should be opt-in, not opt-out and especially not forced (like they are here).

kkiris avatar Oct 09 '25 00:10 kkiris