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

Pull 'Mono' to front in names and other naming changes #1028

Merged
merged 44 commits into from
Apr 24, 2023

Conversation

Finii
Copy link
Collaborator

@Finii Finii commented Dec 21, 2022

This does a lot more than initially planned.

Main features

  • Complete is dropped from the names (we have no incomplete fonts anymore anyhow)
  • Windows Compatible fonts are dropped (all fonts are now 'windows compatible')
  • The weights are now always placed last in the name (as 'standard' expects)
  • The Nerd Font Mono is treated as one connected name part
  • The blanks are dropped from the filenames

Additional features

  • Variant Nerd Font Propo is now properly named and included in patched-fonts
  • Each font-patcher run creates a logfile with debug info
  • All fonts are created with the new naming engine (--makegroups)
  • The --makegroups option gets a 'secret' parameter that controls font name shortening
  • New options --dry and --debug for font-patcher (drop --windows and --also-windows)
  • Envvar NERDFONTS can be used to pass additional flags on gotta-patch-em runs

Name changes

  • AurulentSansMono -> AurulentSansM
  • BigBlueTerminal -> BigBlueTerm
  • DejaVuSansMono -> DejaVuSansM
  • FantasqueSansMono -> FantasqueSansM
  • FiraCode Retina -> FiraCode Ret
  • iM-WritingMonoS -> iM-WritingMono
  • iM-WritingDuoS -> iM-WritingDuo
  • iM-WritingQuattroS -> iM-WritingQuat
  • Terminess TTF -> Terminess

How should this be manually tested?

One way is to run

$ NERDFONTS='--dry --debug' ./gotta-patch-em-all-font-patcher\!.sh -c /Terminus | \
      grep 'CRIT|-<|ERROR|WARN|mode|===='

and examine the output. Or

$ ./gotta-patch-em-all-font-patcher\!.sh -cj
$ fontforge name_parser/query_names ../../check-fonts/Terminus/**/*.[ot]tf 2>/dev/null

OLD DESCRIPTION:

[why]
When we crate a font we take the OriginalName, add "Nerd Font" and which patches we applied, and add "Mono" if --mono has been specified:

OriginalName Nerd Font Complete Mono
OriginalName Nerd Font plus Weather Mono

But the 'Mono' part is quite important, but this scheme will put it in a place where it is easily out of view or has been removed (to keep the name short).

This truncation is especially bad on Windows Compatiple and when the user installs both the 'Nerd Font' and the 'Nerd Font Mono':

SomeVeryLongFontName Nerd Font Complete
SomeVeryLongFontName Nerd Font Complete Mono

become after truncation

SomeVeryLongFontName Nerd Font Comp.ttf
SomeVeryLongFontName Nerd Font Comp.ttf

[how]
Always put the "Mono" directly after "Nerd Font" and all the other name components come later.

Requirements / Checklist

What does this Pull Request (PR) do?

Change the Family/Full/File name of all Nerd Font Mono fonts: Pull the Mono directly after the Nerd Font

How should this be manually tested?

Any background context you can provide?

What are the relevant tickets (if any)?

Screenshots (if appropriate or helpful)

@Finii
Copy link
Collaborator Author

Finii commented Dec 21, 2022

Invent >>Nerd Font Propo<<

@Finii
Copy link
Collaborator Author

Finii commented Dec 21, 2022

Todo:

  • Check what happens with the SymbolsOnly
  • Check webfont
  • Determine problematic cases (that need Windows Compat still)

@Finii Finii force-pushed the feature/reorganize-naming branch 2 times, most recently from ba535c2 to 271785b Compare December 22, 2022 13:57
@Finii Finii added this to the v2.3.0 milestone Jan 4, 2023
@Finii
Copy link
Collaborator Author

Finii commented Jan 6, 2023

Check what happens with the SymbolsOnly

As expected we now get fonts named Nerd Font Propo here:

   \===> 'NerdFontsSymbolsOnly/complete/Symbols-2048-em Nerd Font Propo Complete.ttf'
   \===> 'NerdFontsSymbolsOnly/complete/Symbols-2048-em Nerd Font Propo Complete Windows Compatible.ttf'
   \===> 'NerdFontsSymbolsOnly/complete/Symbols-2048-em Nerd Font Mono Complete.ttf'
   \===> 'NerdFontsSymbolsOnly/complete/Symbols-2048-em Nerd Font Mono Complete Windows Compatible.ttf'

On one hand I would like to keep the names as before.
But then, they are in fact not following the rules of a Nerd Font (without suffix).
Tough.

@Finii Finii marked this pull request as ready for review January 15, 2023 15:44
@Finii
Copy link
Collaborator Author

Finii commented Jan 17, 2023

If we do any renaming, check

  • data/css-header.txt
  • data/css-min-header.txt
  • generate-webfonts.sh

@Finii
Copy link
Collaborator Author

Finii commented Jan 17, 2023

I think all the renaming, together with a possible drop of Complete should be shifted to v3.0.0 as major release.

@Finii Finii modified the milestones: v2.3.0, v3.0.0 Jan 17, 2023
@Finii Finii changed the title font-patcher: Pull 'Mono' to front in names Pull 'Mono' to front in names and other naming changes Feb 2, 2023
@Finii Finii force-pushed the feature/reorganize-naming branch from 5a4d386 to e6ad15c Compare March 8, 2023 17:17
@Finii
Copy link
Collaborator Author

Finii commented Mar 8, 2023

Rebase on master, force push

@Finii Finii force-pushed the feature/reorganize-naming branch 2 times, most recently from 342465e to 27469d7 Compare March 21, 2023 08:24
@Finii
Copy link
Collaborator Author

Finii commented Mar 21, 2023

Rebase on master, force push

@Finii
Copy link
Collaborator Author

Finii commented Apr 1, 2023

Now tackling the name length problems, which supposedly are solved by Windows Compatible font variants.

The problem is that different name parts have (sometimes historic) limitations in length. These are not really documented in any standard. Notably some Microsoft applications like IE9 or Word-2011for-Mac (! which does not run under Windows ;) have very tight restictions. The question arises if we still need to support those old issues or just move on.

Some possible restrictions, taken mostly from [1], in 'our'/Fontforge nomenclature

Name name ID strict len relaxed len comment
Fullname 4 <30 <64 or set ID18 with short form? (*)
PostScriptName 6 <30 <64 one hyphen, strict limit very old
Family 1 <30 <32
SubFamily 2 <32 <32 RIBBI
Preferred Family 16 <32 <32
Preferred Styles 17 <32 <32

(*) Might break document platform independence

Citing Mark Simonson April 2014:

Basically, (and I learned most of this from Adam Twardoch):

  • ID1, ID2 and ID4 Mac need to match ID1, ID2 and ID4 Win.
  • Use ID1 + ID2 for ID4, but abbreviate to keep it under 32 characters (e.g., It or Ital instead of Italic). Don't need to use CFF PS Name as ID4 Win anymore.
  • Don't include "Regular" as part of the ID4 name ("Italic", "Bold", and "Bold Italic" are okay if they apply).
  • Include ID16 and ID17 for Win only.
  • Don't include ID18.
  • ID1, ID2, ID4, ID16, ID17 all need to be less than 32 characters, even though spec says <64 for ID4.
  • ID6 needs to be less than 30 characters.

Examine the current source fonts:

which ID4 ID6 ID1 ID2 ID16 ID17
IBM 3270 Condensed ✔️ (25-25) ✔️ (13-13) ✔️ (18-18) ✔️ ( 9- 9) ✔️ ( 0- 0) ✔️ ( 0- 0)
IBM 3270 ✔️ (16-16) ✔️ (12-12) ✔️ ( 8- 8) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
IBM 3270 Semi-Condensed ✔️ (29-29) ✔️ (17-17) ✔️ (23-23) ✔️ ( 9- 9) ✔️ ( 0- 0) ✔️ ( 0- 0)
Agave ✔️ (14-17) ✔️ (10-13) ✔️ ( 5- 5) ✔️ ( 4- 7) ✔️ ( 5- 5) ✔️ ( 4- 7)
Anonymous Pro for Powerline ✔️ (23-23) ✔️ (18-18) ✔️ (19-19) ✔️ ( 7- 7) ✔️ (27-27) ✔️ ( 7- 7)
Arimo ✔️ (14-20) ✔️ (10-16) ✔️ ( 5- 5) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Aurulent Sans Mono ✔️ (28-28) ✔️ (24-24) ✔️ (18-18) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Bitstream Vera Sans Mono ✔️ (12-24) ✔️ (26-29) ✔️ (24-24) ✔️ ( 4-12) ✔️ ( 0- 0) ✔️ ( 0- 0)
Cascadia Code 🟡 (21-33) ✔️ (17-29) ✔️ (13-24) ✔️ ( 4-11) ✔️ ( 0-13) ✔️ ( 0-17)
Code New Roman ✔️ (23-26) ✔️ (12-19) ✔️ (14-14) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Cousine ✔️ (16-22) ✔️ (12-18) ✔️ ( 7- 7) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
DaddyTimeMono ✔️ (17-17) ✔️ (13-13) ✔️ (13-13) ✔️ ( 4- 4) ✔️ (13-13) ✔️ ( 0- 0)
DejaVu Sans Mono 🟡 (18-30) ✔️ (14-26) ✔️ (16-16) ✔️ ( 4-12) ✔️ ( 0- 0) ✔️ ( 0- 0)
Droid Sans Mono for Powerline 🟡 (33-33) ✔️ (25-25) ✔️ (29-29) ✔️ ( 7- 7) ✔️ (29-29) ✔️ ( 0- 0)
Fantasque Sans Mono 🟡 (26-32) ✔️ (22-28) ✔️ (19-19) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Fira Code ✔️ (17-21) ✔️ (13-17) ✔️ ( 9-18) ✔️ ( 4- 7) ✔️ ( 0- 9) ✔️ ( 0- 8)
Fira Mono ✔️ (17-20) ✔️ (13-16) ✔️ ( 9-16) ✔️ ( 4- 7) ✔️ ( 0- 9) ✔️ ( 0- 6)
GohuFont ✔️ (15-19) ✔️ ( 8-15) ✔️ ( 8- 8) ✔️ ( 2- 6) ✔️ ( 0- 0) ✔️ ( 0- 0)
Go Mono ✔️ (11-23) ✔️ ( 6-17) ✔️ ( 7- 7) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Hack ✔️ (13-19) ✔️ ( 9-15) ✔️ ( 4- 4) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Hasklig ✔️ (14-24) ✔️ (10-20) ✔️ ( 7-18) ✔️ ( 4-11) ✔️ ( 0- 7) ✔️ ( 0-17)
Heavy Data ✔️ (14-14) ✔️ ( 9- 9) ✔️ (10-10) ✔️ ( 6- 6) ✔️ ( 0- 0) ✔️ ( 0- 0)
Hermit ✔️ (15-24) ✔️ (11-20) ✔️ ( 6-18) ✔️ ( 4-11) ✔️ ( 0- 6) ✔️ ( 0-13)
iA Writer Duo S ✔️ (21-27) ✔️ (17-23) ✔️ (15-15) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
iA Writer Duospace 🟡 (25-31) ✔️ (21-27) ✔️ (18-23) ✔️ ( 6- 7) ✔️ ( 0-18) ✔️ ( 0-10)
iA Writer Mono S ✔️ (22-28) ✔️ (18-24) ✔️ (16-16) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
iA Writer Quattro S 🟡 (25-31) ✔️ (21-27) ✔️ (19-19) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
IBM Plex Mono 🟡 (20-32) ✔️ (11-23) ✔️ (13-19) ✔️ ( 4-11) ✔️ ( 0-13) ✔️ ( 0-17)
InconsolataGo ✔️ (22-25) ✔️ (18-21) ✔️ (13-13) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Inconsolata ✔️ (20-23) ✔️ (16-19) ✔️ (11-11) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Inconsolata LGC 🟡 (19-30) ✔️ (14-25) ✔️ (15-15) ✔️ ( 4-10) ✔️ ( 0- 0) ✔️ ( 0- 0)
Iosevka ✔️ (16-28) ✔️ ( 7-25) ✔️ ( 7-26) ✔️ ( 4-11) ✔️ ( 7- 7) ✔️ ( 4-18)
Iosevka Term 🟡 (21-33) 🟡 (12-31) 🟡 (12-30) ✔️ ( 4-11) ✔️ (12-12) ✔️ ( 4-18)
JetBrains Mono 🟡 (22-34) 🟡 (18-30) ✔️ (14-25) ✔️ ( 4-11) ✔️ ( 0-14) ✔️ ( 0-17)
JetBrains Mono NL 🟡 (24-36) 🟡 (20-32) ✔️ (17-28) ✔️ ( 4-11) ✔️ ( 0-17) ✔️ ( 0-17)
Lekton ✔️ (15-18) ✔️ (11-14) ✔️ ( 6- 6) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Liberation Mono ✔️ (23-29) ✔️ (14-25) ✔️ (15-15) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Liberation Sans ✔️ (23-29) ✔️ (14-25) ✔️ (15-15) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Liberation Serif 🟡 (24-30) ✔️ (15-26) ✔️ (16-16) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Lilex ✔️ (14-17) ✔️ (10-13) ✔️ ( 5-10) ✔️ ( 4- 7) ✔️ ( 0- 5) ✔️ ( 0- 4)
Meslo LG L for Powerline 🟡 (33-40) 🟡 (25-31) ✔️ (24-24) ✔️ ( 4-11) ✔️ (24-24) ✔️ ( 0- 0)
Meslo LG L DZ for Powerline 🟡 (36-43) 🟡 (27-33) ✔️ (27-27) ✔️ ( 4-11) ✔️ (27-27) ✔️ ( 0- 0)
Meslo LG L for Powerline 🟡 (35-36) ✔️ (27-28) ✔️ (24-24) ✔️ ( 6- 7) ✔️ (24-24) ✔️ ( 0- 0)
Meslo LG M for Powerline 🟡 (33-40) 🟡 (25-31) ✔️ (24-24) ✔️ ( 4-11) ✔️ (24-24) ✔️ ( 0- 0)
Meslo LG M DZ for Powerline 🟡 (36-43) 🟡 (27-33) ✔️ (27-27) ✔️ ( 4-11) ✔️ (27-27) ✔️ ( 0- 0)
Meslo LG M for Powerline 🟡 (35-36) ✔️ (27-28) ✔️ (24-24) ✔️ ( 6- 7) ✔️ (24-24) ✔️ ( 0- 0)
Meslo LG S for Powerline 🟡 (33-40) 🟡 (25-31) ✔️ (24-24) ✔️ ( 4-11) ✔️ (24-24) ✔️ ( 0- 0)
Meslo LG S DZ for Powerline 🟡 (36-43) 🟡 (27-33) ✔️ (27-27) ✔️ ( 4-11) ✔️ (27-27) ✔️ ( 0- 0)
Meslo LG S for Powerline 🟡 (35-36) ✔️ (27-28) ✔️ (24-24) ✔️ ( 6- 7) ✔️ (24-24) ✔️ ( 0- 0)
monofur for Powerline 🟡 (25-32) ✔️ (19-25) ✔️ (21-21) ✔️ ( 6- 8) ✔️ (21-21) ✔️ ( 0- 0)
Monoid ✔️ (15-18) ✔️ (11-14) ✔️ ( 6- 6) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
mononoki ✔️ (17-23) ✔️ (13-19) ✔️ ( 8- 8) ✔️ ( 4-11) ✔️ ( 8- 8) ✔️ ( 4-10)
M PLUS 1 Code ✔️ (19-25) ✔️ (15-21) ✔️ (13-24) ✔️ ( 4- 7) ✔️ ( 0-13) ✔️ ( 0-10)
M PLUS 1 ✔️ (15-21) ✔️ (11-17) ✔️ ( 8-19) ✔️ ( 4- 7) ✔️ ( 0- 8) ✔️ ( 0-10)
M PLUS 2 ✔️ (15-21) ✔️ (11-17) ✔️ ( 8-19) ✔️ ( 4- 7) ✔️ ( 0- 8) ✔️ ( 0-10)
M PLUS Code Latin Expanded 🟡 (32-38) 🟡 (27-33) 🔴 (26-37) ✔️ ( 4- 7) ✔️ (26-26) ✔️ ( 4-10)
M PLUS Code Latin ✔️ (23-29) ✔️ (19-25) ✔️ (17-28) ✔️ ( 4- 7) ✔️ ( 0-17) ✔️ ( 0-10)
Noto Mono ✔️ (20-20) ✔️ ( 8- 8) ✔️ ( 9- 9) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Noto Sans Mono 🟡 (21-41) 🟡 (17-37) ✔️ (14-28) ✔️ ( 4- 7) ✔️ ( 0-14) ✔️ ( 0-25)
Noto Sans 🟡 (17-43) 🟡 (13-39) ✔️ ( 9-23) ✔️ ( 4-11) ✔️ ( 0- 9) 🔴 ( 0-32)
Noto Serif 🟡 (18-44) 🟡 (14-40) ✔️ (10-24) ✔️ ( 4-11) ✔️ ( 0-10) 🔴 ( 0-32)
OpenDyslexicAlta 🟡 (25-31) ✔️ (21-27) ✔️ (16-16) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
OpenDyslexic ✔️ (21-27) ✔️ (17-23) ✔️ (12-12) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
OpenDyslexicMono ✔️ (28-28) ✔️ (24-24) ✔️ (16-16) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
OpenDyslexic ✔️ (24-24) ✔️ (20-20) ✔️ (12-12) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Overpass Mono ✔️ (22-26) ✔️ (17-21) ✔️ (13-19) ✔️ ( 4- 7) ✔️ ( 0-13) ✔️ ( 0- 8)
Overpass 🟡 (17-30) ✔️ (13-25) ✔️ ( 8-19) ✔️ ( 4-11) ✔️ ( 0- 8) ✔️ ( 0-17)
ProFontIIx ✔️ (14-14) ✔️ (10-10) ✔️ (10-10) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
ProFontWindows ✔️ (18-18) ✔️ (14-14) ✔️ (14-14) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
ProggyCleanTT CE ✔️ (17-17) ✔️ (15-15) ✔️ (16-16) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
ProggyCleanTT ✔️ (15-15) ✔️ (13-13) ✔️ (13-13) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
ProggyCleanTTSZ ✔️ (17-17) ✔️ (15-15) ✔️ (15-15) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Roboto Mono ✔️ (19-29) ✔️ (15-25) ✔️ (11-20) ✔️ ( 4-11) ✔️ ( 0-11) ✔️ ( 0-15)
Share Tech Mono ✔️ (25-25) ✔️ (21-21) ✔️ (15-15) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Source Code Pro 🟡 (20-30) ✔️ (16-26) ✔️ (15-26) ✔️ ( 4-11) ✔️ ( 0-15) ✔️ ( 0-17)
Space Mono ✔️ (18-24) ✔️ (14-20) ✔️ (10-10) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Terminus (TTF) 🟡 (22-34) ✔️ (11-22) ✔️ (14-14) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Tinos ✔️ (14-20) ✔️ ( 5-16) ✔️ ( 5- 5) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Ubuntu ✔️ (12-13) ✔️ (11-17) ✔️ ( 6- 6) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Ubuntu Condensed ✔️ (12-12) ✔️ (23-23) ✔️ (16-16) ✔️ ( 7- 7) ✔️ (16-16) ✔️ ( 7- 7)
Ubuntu ✔️ (12-13) ✔️ (12-19) ✔️ (12-12) ✔️ ( 4-11) ✔️ ( 6- 6) ✔️ ( 5-13)
Ubuntu Mono ✔️ (16-17) ✔️ (15-21) ✔️ (11-11) ✔️ ( 4-11) ✔️ (11-11) ✔️ ( 4-11)
Ubuntu ✔️ (12-13) ✔️ ( 6-13) ✔️ ( 6- 6) ✔️ ( 6- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Victor Mono 🟡 (19-32) ✔️ (15-28) ✔️ (11-22) ✔️ ( 4-11) ✔️ ( 0-11) ✔️ ( 0-18)
BigBlue Terminal 437TT ✔️ (26-26) ✔️ (22-22) ✔️ (22-22) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
BigBlue TerminalPlus ✔️ (24-24) ✔️ (20-20) ✔️ (20-20) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)

Here examples for the three fonts with red marks:

---- NotoSerif-ExtraCondensedExtraLightItalic.ttf       |44|
ID6  NotoSerif-ExtraCondensedExtraLightItalic           |40|
ID4  Noto Serif ExtraCondensed ExtraLight Italic        |43|
ID1  Noto Serif ExtCond ExtLt                           |24|
ID2  Italic                                             | 6| 
ID16 Noto Serif                                         |10|
ID17 ExtraCondensed ExtraLight Italic                   |32|
---- MPLUSCodeLatin_Expanded-ExtraLight.ttf             |38|
ID6  MPLUSCodeLatinExpanded-ExtraLight                  |33|               
ID4  M PLUS Code Latin Expanded ExtraLight              |37|               
ID1  M PLUS Code Latin Expanded ExtraLight              |37|     
ID2  Regular                                            | 7| 
ID16 M PLUS Code Latin Expanded                         |26|
ID17 ExtraLight                                         |10|

[1] https://forum.fontlab.com/fontlab-studio-tips-and-tricks/font-family-naming-in-fontlab-studio-5/
[2] https://typedrawers.com/discussion/617/family-name/p2
[3] https://kltf.de/kltf_otproduction.shtml#naming
[4] https://forum.glyphsapp.com/t/overly-strict-font-name-max-length-recommendation-in-naming-tutorial/10164
[5] https://silnrsi.github.io/FDBP/en-US/Font_Naming.html
[6] https://glyphsapp.com/learn/naming
[7] https://learn.microsoft.com/en-us/typography/opentype/spec/name
[8] https://www.fonttutorials.com/how-to-name-font-family/
[9] https://adobe-type-tools.github.io/font-tech-notes/pdfs/5088.FontNames.pdf

@Finii
Copy link
Collaborator Author

Finii commented Apr 5, 2023

Naming changes in Victor Mono as example (because I worked on Issue 1080

image

@Finii
Copy link
Collaborator Author

Finii commented Apr 5, 2023

Now lets check what the 'Windows Compat' did for us in the past:

which ID4 ID6 ID1 ID2 ID16 ID17
3270Condensed NF 🔴 (60-65) 🟡 (31-31) ✔️ (16-17) ✔️ ( 9- 9) ✔️ (16-17) ✔️ ( 0- 0)
3270 NF 🟡 (50-55) ✔️ (28-29) ✔️ ( 7- 8) ✔️ ( 7- 7) ✔️ ( 7- 8) ✔️ ( 0- 0)
3270SemiCondensed NF 🔴 (65-70) 🟡 (31-31) ✔️ (20-21) ✔️ ( 9- 9) ✔️ (20-21) ✔️ ( 0- 0)
agave NF 🟡 (55-60) ✔️ (23-24) ✔️ ( 8- 9) ✔️ ( 1- 1) ✔️ ( 8- 9) ✔️ ( 0- 0)
Anonymice NF 🟡 (51-56) ✔️ (22-22) ✔️ (12-13) ✔️ ( 7- 7) ✔️ (12-13) ✔️ ( 7- 7)
Arimo NF 🟡 (52-59) 🟡 (26-30) ✔️ ( 8- 8) ✔️ ( 4-11) ✔️ ( 8- 8) ✔️ ( 0- 0)
AurulentSansMono NF 🔴 (66-71) 🟡 (31-31) ✔️ (19-20) ✔️ ( 7- 7) ✔️ (19-20) ✔️ ( 0- 0)
BitstreamVeraSansMono NF 🔴 (66-84) 🟡 (30-31) ✔️ (24-25) ✔️ ( 4-12) ✔️ (24-25) ✔️ ( 0- 0)
CaskaydiaCove NF 🔴 (61-79) 🟡 (31-31) ✔️ (16-28) ✔️ ( 4-11) ✔️ ( 0-17) ✔️ ( 0-17)
CodeNewRoman NF 🔴 (56-68) 🟡 (31-31) ✔️ (15-16) ✔️ ( 4- 7) ✔️ (15-16) ✔️ ( 0- 0)
Cousine NF 🔴 (54-66) 🟡 (28-31) ✔️ (10-11) ✔️ ( 4-11) ✔️ (10-11) ✔️ ( 0- 0)
DaddyTimeMono NF 🟡 (55-60) 🟡 (31-31) ✔️ (16-17) ✔️ ( 4- 4) ✔️ (16-17) ✔️ ( 0- 0)
DejaVuSansMono NF 🔴 (58-76) 🟡 (30-31) ✔️ (17-18) ✔️ ( 4-12) ✔️ (17-18) ✔️ ( 0- 0)
DroidSansMono NF 🟡 (57-62) 🟡 (31-31) ✔️ (16-17) ✔️ ( 7- 7) ✔️ (16-17) ✔️ ( 0- 0)
FantasqueSansMono NF 🔴 (66-78) 🟡 (30-31) ✔️ (20-21) ✔️ ( 4-11) ✔️ (20-21) ✔️ ( 0- 0)
FiraCode NF 🔴 (56-65) 🟡 (29-31) ✔️ (11-12) ✔️ ( 4- 7) ✔️ (11-12) ✔️ ( 0- 8)
FuraMono NF 🔴 (56-64) ✔️ (19-19) ✔️ (11-12) ✔️ ( 4- 7) ✔️ (11-12) ✔️ ( 0- 6)
GohuFont NF 🟡 (50-55) 🟡 (27-31) ✔️ (11-12) ✔️ ( 2- 6) ✔️ (11-12) ✔️ ( 0- 0)
GoMono NF 🔴 (49-66) 🟡 (27-31) ✔️ ( 9-10) ✔️ ( 4-11) ✔️ ( 9-10) ✔️ ( 0- 0)
Hack NF 🟡 (51-63) 🟡 (25-30) ✔️ ( 7- 8) ✔️ ( 4-11) ✔️ ( 7- 8) ✔️ ( 0- 0)
Hasklug NF 🔴 (49-72) 🟡 (28-31) ✔️ (10-18) ✔️ ( 4-11) ✔️ (10-11) ✔️ ( 0-17)
HeavyData NF 🟡 (52-52) 🟡 (31-31) ✔️ (12-12) ✔️ ( 6- 6) ✔️ (12-12) ✔️ ( 0- 0)
Hurmit NF 🟡 (53-60) 🟡 (27-30) ✔️ ( 9-10) ✔️ ( 4- 6) ✔️ ( 9-10) ✔️ ( 0- 0)
iMWritingDuoS NF 🔴 (63-75) 🟡 (31-32) ✔️ (16-17) ✔️ ( 4-11) ✔️ (16-17) ✔️ ( 0- 0)
iMWritingDuospace NF 🔴 (66-77) 🟡 (32-32) ✔️ (20-21) ✔️ ( 6- 7) ✔️ (20-21) ✔️ ( 0-10)
iMWritingMonoS NF 🔴 (64-76) 🟡 (31-32) ✔️ (17-18) ✔️ ( 4-11) ✔️ (17-18) ✔️ ( 0- 0)
iMWritingQuattroS NF 🔴 (67-79) 🟡 (31-32) ✔️ (20-21) ✔️ ( 4-11) ✔️ (20-21) ✔️ ( 0- 0)
BlexMono NF 🔴 (51-74) ✔️ (27-28) ✔️ (11-12) ✔️ ( 4-11) ✔️ (11-12) ✔️ ( 0-17)
Inconsolata NF 🔴 (58-66) 🟡 (31-31) ✔️ (14-15) ✔️ ( 4- 7) ✔️ (14-15) ✔️ ( 0- 0)
InconsolataGo NF 🔴 (55-65) 🟡 (31-31) ✔️ (16-17) ✔️ ( 4- 7) ✔️ (16-17) ✔️ ( 0- 0)
InconsolataLGC NF 🔴 (57-74) 🟡 (31-31) ✔️ (17-18) ✔️ ( 4-10) ✔️ (17-18) ✔️ ( 0- 0)
Iosevka NF 🔴 (49-73) 🟡 (23-42) 🟡 (10-30) ✔️ ( 4-11) ✔️ ( 0-11) ✔️ ( 0-18)
IosevkaTerm NF 🔴 (54-78) 🟡 (27-46) 🔴 (14-34) ✔️ ( 4-11) ✔️ ( 0-15) ✔️ ( 0-18)
JetBrainsMono NF 🔴 (61-79) 🟡 (34-47) ✔️ (16-28) ✔️ ( 4-11) ✔️ ( 0-17) ✔️ ( 0-17)
JetBrainsMonoNL NF 🔴 (64-82) 🟡 (36-49) 🟡 (18-30) ✔️ ( 4-11) ✔️ ( 0-19) ✔️ ( 0-17)
Lekton NF 🟡 (48-60) 🟡 (27-31) ✔️ ( 9-10) ✔️ ( 4- 7) ✔️ ( 9-10) ✔️ ( 0- 0)
LiterationMono NF 🔴 (57-74) 🟡 (30-31) ✔️ (17-18) ✔️ ( 4-11) ✔️ (17-18) ✔️ ( 0- 0)
LiterationSans NF 🔴 (57-69) 🟡 (30-31) ✔️ (17-17) ✔️ ( 4-11) ✔️ (17-17) ✔️ ( 0- 0)
LiterationSerif NF 🔴 (58-70) 🟡 (30-31) ✔️ (18-18) ✔️ ( 4-11) ✔️ (18-18) ✔️ ( 0- 0)
Lilex NF 🟡 (52-60) 🟡 (26-30) ✔️ ( 8-12) ✔️ ( 4- 7) ✔️ ( 8- 9) ✔️ ( 0- 6)
MesloLGL NF 🔴 (57-69) 🟡 (19-30) ✔️ (11-12) ✔️ ( 4-11) ✔️ (11-12) ✔️ ( 0- 0)
MesloLGLDZ NF 🔴 (60-72) 🟡 (19-30) ✔️ (13-14) ✔️ ( 4-11) ✔️ (13-14) ✔️ ( 0- 0)
MesloLGL NF 🔴 (59-65) ✔️ (19-19) ✔️ (11-12) ✔️ ( 6- 7) ✔️ (11-12) ✔️ ( 0- 0)
MesloLGM NF 🔴 (57-69) 🟡 (19-30) ✔️ (11-12) ✔️ ( 4-11) ✔️ (11-12) ✔️ ( 0- 0)
MesloLGMDZ NF 🔴 (60-72) 🟡 (19-30) ✔️ (13-14) ✔️ ( 4-11) ✔️ (13-14) ✔️ ( 0- 0)
MesloLGM NF 🔴 (59-65) ✔️ (19-19) ✔️ (11-12) ✔️ ( 6- 7) ✔️ (11-12) ✔️ ( 0- 0)
MesloLGS NF 🔴 (57-69) 🟡 (19-30) ✔️ (11-12) ✔️ ( 4-11) ✔️ (11-12) ✔️ ( 0- 0)
MesloLGSDZ NF 🔴 (60-72) 🟡 (19-30) ✔️ (13-14) ✔️ ( 4-11) ✔️ (13-14) ✔️ ( 0- 0)
MesloLGS NF 🔴 (59-65) ✔️ (19-19) ✔️ (11-12) ✔️ ( 6- 7) ✔️ (11-12) ✔️ ( 0- 0)
Monofurbold NF 🟡 (54-59) ✔️ (17-17) ✔️ (14-15) ✔️ ( 6- 6) ✔️ (14-15) ✔️ ( 0- 0)
Monofuritalic NF 🟡 (56-61) ✔️ (29-29) ✔️ (16-17) ✔️ ( 8- 8) ✔️ (16-17) ✔️ ( 0- 0)
Monofur NF 🟡 (49-54) ✔️ (19-19) ✔️ (10-11) ✔️ ( 7- 7) ✔️ (10-11) ✔️ ( 0- 0)
Monoid NF 🟡 (53-61) 🟡 (27-31) ✔️ ( 9-10) ✔️ ( 4- 7) ✔️ ( 9-10) ✔️ ( 0- 0)
Mononoki NF 🔴 (55-67) 🟡 (29-36) ✔️ (11-12) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
M+ 🟡 (47-60) ✔️ (26-30) ✔️ ( 8- 9) ✔️ ( 4- 7) ✔️ ( 5- 6) ✔️ ( 4- 7)
Symbols NF 🟡 (57-62) 🟡 (31-31) ✔️ (10-11) ✔️ ( 7- 7) ✔️ (10-11) ✔️ ( 0- 0)
NotoMono NF 🟡 (51-56) 🟡 (31-31) ✔️ (11-12) ✔️ ( 7- 7) ✔️ (11-12) ✔️ ( 0- 0)
NotoSans NF 🔴 (56-84) 🟡 (29-31) ✔️ (11-11) ✔️ ( 4-11) ✔️ (11-11) 🔴 ( 0-32)
NotoSansMono NF 🔴 (61-87) 🟡 (31-31) ✔️ (15-16) ✔️ ( 4- 7) ✔️ (15-16) ✔️ ( 0-25)
NotoSerif NF 🔴 (57-85) 🟡 (30-31) ✔️ (12-12) ✔️ ( 4-11) ✔️ (12-12) 🔴 ( 0-32)
OpenDyslexicAlta NF 🔴 (63-70) 🟡 (30-31) ✔️ (19-19) ✔️ ( 4-11) ✔️ (19-19) ✔️ ( 0- 0)
OpenDyslexic NF 🔴 (59-66) 🟡 (30-31) ✔️ (15-15) ✔️ ( 4-11) ✔️ (15-15) ✔️ ( 0- 0)
OpenDyslexicMono NF 🔴 (66-71) 🟡 (31-31) ✔️ (19-20) ✔️ ( 7- 7) ✔️ (19-20) ✔️ ( 0- 0)
OpenDyslexic NF 🟡 (62-62) 🟡 (31-31) ✔️ (15-15) ✔️ ( 7- 7) ✔️ (15-15) ✔️ ( 0- 0)
OverpassMono NF 🔴 (60-69) 🟡 (31-31) ✔️ (15-16) ✔️ ( 4- 7) ✔️ (15-16) ✔️ ( 0- 8)
Overpass NF 🔴 (55-68) 🟡 (29-31) ✔️ (11-11) ✔️ ( 4-11) ✔️ (11-11) ✔️ ( 0-17)
ProFontIIx NF 🟡 (53-58) 🟡 (31-31) ✔️ (13-14) ✔️ ( 7- 7) ✔️ (13-14) ✔️ ( 0- 0)
ProFontWindows NF 🟡 (56-61) 🟡 (31-31) ✔️ (17-18) ✔️ ( 7- 7) ✔️ (17-18) ✔️ ( 0- 0)
ProggyCleanTTCE NF 🟡 (58-63) 🟡 (31-31) ✔️ (16-16) ✔️ ( 7- 7) ✔️ (18-19) ✔️ ( 0- 0)
ProggyCleanTT NF 🟡 (55-60) 🟡 (31-31) ✔️ (16-17) ✔️ ( 7- 7) ✔️ (16-17) ✔️ ( 0- 0)
ProggyCleanTTSZ NF 🟡 (57-62) 🟡 (31-31) ✔️ (18-19) ✔️ ( 7- 7) ✔️ (18-19) ✔️ ( 0- 0)
RobotoMono NF 🔴 (53-72) 🟡 (30-31) ✔️ (13-14) ✔️ ( 4-11) ✔️ (13-14) ✔️ ( 0-13)
ShureTechMono NF 🟡 (57-62) 🟡 (31-31) ✔️ (16-17) ✔️ ( 7- 7) ✔️ (16-17) ✔️ ( 0- 0)
SauceCodePro NF 🔴 (56-79) 🟡 (29-30) ✔️ (15-16) ✔️ ( 4-11) ✔️ (15-16) ✔️ ( 0-17)
SpaceMono NF 🔴 (52-69) 🟡 (30-31) ✔️ (12-13) ✔️ ( 4-11) ✔️ (12-13) ✔️ ( 0- 0)
TerminessTTF NF 🔴 (57-74) 🟡 (31-32) ✔️ (15-16) ✔️ ( 4-11) ✔️ (15-16) ✔️ ( 0- 0)
Tinos NF 🟡 (47-59) 🟡 (26-30) ✔️ ( 8- 8) ✔️ ( 4-11) ✔️ ( 8- 8) ✔️ ( 0- 0)
Ubuntu NF 🟡 (53-60) 🟡 (27-30) ✔️ ( 9- 9) ✔️ ( 4-11) ✔️ ( 9- 9) ✔️ ( 0- 0)
UbuntuCondensed NF 🟡 (58-58) 🟡 (31-31) ✔️ (18-18) ✔️ ( 7- 7) ✔️ (18-18) ✔️ ( 7- 7)
Ubuntu NF 🟡 (54-62) 🟡 (28-31) ✔️ ( 9- 9) ✔️ ( 4-11) ✔️ ( 9- 9) ✔️ ( 5-13)
UbuntuMono NF 🔴 (53-70) 🟡 (30-31) ✔️ (13-14) ✔️ ( 4-11) ✔️ (13-14) ✔️ ( 4-11)
Ubuntu NF 🟡 (48-55) 🟡 (29-30) ✔️ ( 9- 9) ✔️ ( 6- 7) ✔️ ( 9- 9) ✔️ ( 0- 0)
VictorMono NF 🔴 (58-77) 🟡 (30-31) ✔️ (13-14) ✔️ ( 4-11) ✔️ (13-14) ✔️ ( 0-18)
BigBlue_Terminal_437TT NF 🔴 (64-69) 🟡 (31-31) ✔️ (25-26) ✔️ ( 7- 7) ✔️ (25-26) ✔️ ( 0- 0)
BigBlue_TerminalPlus NF 🔴 (62-67) 🟡 (31-31) ✔️ (23-24) ✔️ ( 7- 7) ✔️ (23-24) ✔️ ( 0- 0)

@Finii
Copy link
Collaborator Author

Finii commented Apr 6, 2023

Current HEAD of this PR.
Compare WinCompat versus Verbose (normal).

find check-fonts -iname '*.[OT]TF' -name '*Font Mono*' -not -name '*Compatible*' -print0 | xargs -0 fontforge bin/scripts/name_parser/query_names3

which ID4 ID6 ID1 ID2 ID16 ID17
3270 🟡 (23-37) 🟡 (16-30) 🔴 (19-33) ✔️ ( 7- 7) ✔️ ( 0-19) ✔️ ( 0-13)
Agave 🟡 (29-32) ✔️ (22-25) ✔️ (20-20) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Anonymice ✔️ (28-28) ✔️ (21-21) ✔️ (24-24) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
AurulentSansMono 🟡 (45-45) 🟡 (36-36) 🟡 (31-31) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
BigBlueTerminal437TT 🟡 (42-42) 🟡 (32-32) 🔴 (35-35) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
BigBlueTerminalPlus 🟡 (40-40) 🟡 (31-31) 🔴 (34-34) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
BitstreamVeraSansMono 🟡 (43-56) 🟡 (33-45) 🔴 (36-44) ✔️ ( 4-11) 🔴 ( 0-36) ✔️ ( 0-12)
BlexMonoExtLt 🟡 (34-34) ✔️ (25-25) ✔️ (28-28) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
BlexMonoExtLt 🟡 (41-41) 🟡 (32-32) ✔️ (28-28) ✔️ ( 6- 6) ✔️ ( 0- 0) ✔️ ( 0- 0)
BlexMonoMedm 🟡 (33-33) ✔️ (24-24) ✔️ (27-27) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
BlexMonoMedm 🟡 (40-40) 🟡 (31-31) ✔️ (27-27) ✔️ ( 6- 6) ✔️ ( 0- 0) ✔️ ( 0- 0)
BlexMono 🟡 (28-40) 🟡 (20-31) ✔️ (23-28) ✔️ ( 6- 7) ✔️ ( 0-23) ✔️ ( 0-11)
BlexMono 🟡 (33-41) 🟡 (25-32) ✔️ (23-29) ✔️ ( 4-11) ✔️ ( 0-23) ✔️ ( 0-12)
BlexMono 🟡 (35-35) ✔️ (27-27) ✔️ (23-23) ✔️ ( 6- 6) ✔️ ( 0- 0) ✔️ ( 0- 0)
BlexMonoSmBld 🟡 (34-34) ✔️ (25-25) ✔️ (28-28) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
BlexMonoSmBld 🟡 (41-41) 🟡 (32-32) ✔️ (28-28) ✔️ ( 6- 6) ✔️ ( 0- 0) ✔️ ( 0- 0)
BlexMono Text 🟡 (33-33) ✔️ (24-24) ✔️ (28-28) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
BlexMono Text 🟡 (40-40) 🟡 (31-31) ✔️ (28-28) ✔️ ( 6- 6) ✔️ ( 0- 0) ✔️ ( 0- 0)
CaskaydiaCove 🟡 (38-51) 🟡 (30-42) 🔴 (28-39) ✔️ ( 4-11) ✔️ ( 0-28) ✔️ ( 0-17)
CodeNewRoman 🟡 (33-40) 🟡 (24-31) ✔️ (27-27) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Cousine 🟡 (31-38) 🟡 (24-30) ✔️ (22-22) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
DaddyTimeMono 🟡 (32-32) ✔️ (25-25) ✔️ (28-28) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
DejaVuSansMono 🟡 (35-48) 🟡 (26-38) 🔴 (29-37) ✔️ ( 4-11) ✔️ ( 0-29) ✔️ ( 0-12)
DroidSansMono 🟡 (34-34) ✔️ (25-25) ✔️ (28-28) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
FantasqueSansMono 🟡 (43-50) 🟡 (34-40) 🔴 (32-32) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Filename PS name Fullname Family
FiraCode 🟡 (33-37) ✔️ (25-29) 🔴 (23-32) ✔️ ( 4- 7) ✔️ ( 0-23) ✔️ ( 0- 8)
FiraMono 🟡 (33-36) ✔️ (25-28) 🟡 (23-30) ✔️ ( 4- 7) ✔️ ( 0-23) ✔️ ( 0- 6)
GohuFont 11 🟡 (30-30) ✔️ (22-22) ✔️ (26-26) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
GohuFont 14 🟡 (30-30) ✔️ (22-22) ✔️ (26-26) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
GohuFont uni-11 🟡 (34-34) ✔️ (26-26) 🟡 (30-30) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
GohuFont uni-14 🟡 (34-34) ✔️ (26-26) 🟡 (30-30) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
GoMono 🟡 (26-38) ✔️ (18-29) ✔️ (21-21) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Hack 🟡 (28-35) ✔️ (21-27) ✔️ (19-19) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Hasklug 🟡 (26-44) 🟡 (19-36) 🔴 (22-33) ✔️ ( 4-11) ✔️ ( 0-22) ✔️ ( 0-17)
Hurmit 🟡 (25-38) 🟡 (23-30) ✔️ (21-27) ✔️ ( 4-11) ✔️ ( 0-21) ✔️ ( 0-12)
iMWritingMonoS 🟡 (36-48) 🟡 (31-37) ✔️ (29-29) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
InconsolataGo 🟡 (32-37) 🟡 (25-30) ✔️ (28-28) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Inconsolata LGC 🟡 (34-46) 🟡 (26-37) 🟡 (30-30) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Inconsolata 🟡 (35-38) 🟡 (28-31) ✔️ (26-26) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Iosevka 🟡 (26-45) 🟡 (19-37) 🔴 (22-41) ✔️ ( 4-11) ✔️ ( 0-22) ✔️ ( 0-18)
IosevkaTerm 🟡 (31-50) 🟡 (23-41) 🔴 (26-45) ✔️ ( 4-11) ✔️ ( 0-26) ✔️ ( 0-18)
JetBrainsMono 🟡 (38-51) 🟡 (30-42) 🔴 (28-39) ✔️ ( 4-11) ✔️ ( 0-28) ✔️ ( 0-17)
JetBrainsMonoNL 🟡 (41-54) 🟡 (32-44) 🔴 (30-41) ✔️ ( 4-11) ✔️ ( 0-30) ✔️ ( 0-17)
Lekton 🟡 (25-32) ✔️ (18-25) ✔️ (21-21) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Lilex 🟡 (29-32) ✔️ (22-25) ✔️ (20-25) ✔️ ( 4- 7) ✔️ ( 0-20) ✔️ ( 0- 4)
LiterationMono 🟡 (34-46) 🟡 (26-37) ✔️ (29-29) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
MesloLGLDZ 🟡 (37-44) 🟡 (27-33) ✔️ (25-25) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
MesloLGL 🟡 (34-41) 🟡 (25-31) ✔️ (23-23) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
MesloLGMDZ 🟡 (37-44) 🟡 (27-33) ✔️ (25-25) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
MesloLGM 🟡 (34-41) 🟡 (25-31) ✔️ (23-23) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
MesloLGSDZ 🟡 (37-44) 🟡 (27-33) ✔️ (25-25) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
MesloLGS 🟡 (34-41) 🟡 (25-31) ✔️ (23-23) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Monofur 🟡 (26-33) ✔️ (19-26) ✔️ (22-22) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Monoid 🟡 (30-33) ✔️ (23-26) ✔️ (21-28) ✔️ ( 4- 7) ✔️ ( 0-21) ✔️ ( 0- 6)
Mononoki 🟡 (32-39) 🟡 (25-31) ✔️ (23-23) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
MPLUS1Code 🟡 (32-43) 🟡 (27-33) 🔴 (25-36) ✔️ ( 4- 7) ✔️ ( 0-25) ✔️ ( 0-10)
MPLUSCodeLatinExpanded 🟡 (45-56) 🟡 (39-45) 🔴 (37-48) ✔️ ( 4- 7) 🔴 ( 0-37) ✔️ ( 0-10)
MPLUSCodeLatin 🟡 (36-47) 🟡 (31-37) 🔴 (29-40) ✔️ ( 4- 7) ✔️ ( 0-29) ✔️ ( 0-10)
NotoMono ✔️ (28-28) ✔️ (20-20) ✔️ (23-23) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
NotoSansMono 🟡 (38-59) 🟡 (29-49) 🔴 (27-41) ✔️ ( 4- 7) ✔️ ( 0-27) ✔️ ( 0-25)
OpenDyslexicMono 🟡 (35-35) 🟡 (36-36) 🟡 (31-31) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
OverpassMono 🟡 (37-41) 🟡 (29-33) 🔴 (27-36) ✔️ ( 4- 7) ✔️ ( 0-27) ✔️ ( 0- 8)
ProFont IIx 🟡 (30-30) ✔️ (22-22) ✔️ (26-26) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
ProFontWindows 🟡 (33-33) ✔️ (26-26) ✔️ (29-29) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
ProggyCleanTT CE 🟡 (36-36) ✔️ (27-27) 🟡 (31-31) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
ProggyCleanTT 🟡 (33-33) ✔️ (25-25) ✔️ (28-28) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
ProggyCleanTTSZ 🟡 (35-35) ✔️ (27-27) 🟡 (30-30) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
RobotoMono 🟡 (30-46) 🟡 (27-37) 🔴 (25-34) ✔️ ( 4-11) ✔️ ( 0-25) ✔️ ( 0-15)
SauceCodePro 🟡 (33-51) 🟡 (24-41) 🔴 (27-38) ✔️ ( 4-11) ✔️ ( 0-27) ✔️ ( 0-17)
ShureTechMono 🟡 (34-34) ✔️ (25-25) ✔️ (28-28) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
SpaceMono 🟡 (29-41) 🟡 (21-32) ✔️ (24-24) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Symbols1000Em 🟡 (34-34) ✔️ (25-25) ✔️ (28-28) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Symbols2048Em 🟡 (34-34) ✔️ (25-25) ✔️ (28-28) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Terminess (TTF) 🟡 (34-46) 🟡 (24-35) 🟡 (30-30) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
UbuntuMono 🟡 (30-42) 🟡 (22-33) ✔️ (25-25) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
VictorMono 🟡 (35-49) 🟡 (27-40) 🔴 (25-44) ✔️ ( 4-11) ✔️ ( 0-25) ✔️ ( 0-18)

find check-fonts -iname '*.[OT]TF' -name '*Font Mono*' -name '*Compatible*' -print0 | xargs -0 fontforge bin/scripts/name_parser/query_names3

which ID4 ID6 ID1 ID2 ID16 ID17
3270 🟡 (42-56) ✔️ ( 7-21) ✔️ ( 8-22) ✔️ ( 7- 7) ✔️ ( 0- 8) ✔️ ( 0-13)
Agave 🟡 (48-51) ✔️ (13-16) ✔️ ( 9- 9) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Anonymice 🟡 (47-47) ✔️ (12-12) ✔️ (13-13) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
AurulentSansMono 🔴 (64-64) ✔️ (27-27) ✔️ (20-20) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
BigBlueTerminal437TT 🟡 (61-61) ✔️ (23-23) ✔️ (24-24) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
BigBlueTerminalPlus 🟡 (59-59) ✔️ (22-22) ✔️ (23-23) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
BitstreamVeraSansMono 🔴 (62-75) 🟡 (24-36) 🔴 (25-33) ✔️ ( 4-11) ✔️ ( 0-25) ✔️ ( 0-12)
BlexMonoExtLt 🟡 (53-53) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
BlexMonoExtLt 🟡 (60-60) ✔️ (23-23) ✔️ (17-17) ✔️ ( 6- 6) ✔️ ( 0- 0) ✔️ ( 0- 0)
BlexMonoMedm 🟡 (52-52) ✔️ (15-15) ✔️ (16-16) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
BlexMonoMedm 🟡 (59-59) ✔️ (22-22) ✔️ (16-16) ✔️ ( 6- 6) ✔️ ( 0- 0) ✔️ ( 0- 0)
BlexMono 🟡 (47-59) ✔️ (11-22) ✔️ (12-17) ✔️ ( 6-11) ✔️ ( 0-12) ✔️ ( 0-11)
BlexMono 🟡 (52-60) ✔️ (16-23) ✔️ (12-18) ✔️ ( 4- 7) ✔️ ( 0-12) ✔️ ( 0-12)
BlexMonoSmBld 🟡 (53-53) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
BlexMonoSmBld 🟡 (60-60) ✔️ (23-23) ✔️ (17-17) ✔️ ( 6- 6) ✔️ ( 0- 0) ✔️ ( 0- 0)
BlexMono Text 🟡 (52-52) ✔️ (15-15) ✔️ (17-17) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
BlexMono Text 🟡 (59-59) ✔️ (22-22) ✔️ (17-17) ✔️ ( 6- 6) ✔️ ( 0- 0) ✔️ ( 0- 0)
CaskaydiaCove 🔴 (57-70) 🟡 (21-31) ✔️ (17-28) ✔️ ( 4-11) ✔️ ( 0-17) ✔️ ( 0-17)
CodeNewRoman 🟡 (52-59) ✔️ (15-22) ✔️ (16-16) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Cousine 🟡 (50-57) ✔️ (15-21) ✔️ (11-11) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
DaddyTimeMono 🟡 (51-51) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
DejaVuSansMono 🔴 (54-67) ✔️ (17-29) ✔️ (18-26) ✔️ ( 4-11) ✔️ ( 0-18) ✔️ ( 0-12)
DroidSansMono 🟡 (53-53) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
FantasqueSansMono 🔴 (62-69) 🟡 (25-31) ✔️ (21-21) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
FiraCode 🟡 (52-56) ✔️ (16-20) ✔️ (12-21) ✔️ ( 4- 7) ✔️ ( 0-12) ✔️ ( 0- 8)
FiraMono 🟡 (52-55) ✔️ (16-19) ✔️ (12-19) ✔️ ( 4- 7) ✔️ ( 0-12) ✔️ ( 0- 6)
GohuFont 11 🟡 (49-49) ✔️ (13-13) ✔️ (15-15) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
GohuFont 14 🟡 (49-49) ✔️ (13-13) ✔️ (15-15) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
GohuFont uni-11 🟡 (53-53) ✔️ (17-17) ✔️ (19-19) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
GohuFont uni-14 🟡 (53-53) ✔️ (17-17) ✔️ (19-19) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
GoMono 🟡 (45-57) ✔️ ( 9-20) ✔️ (10-10) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Hack 🟡 (47-54) ✔️ (12-18) ✔️ ( 8- 8) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Hasklug 🟡 (45-63) ✔️ (10-27) ✔️ (11-22) ✔️ ( 4-11) ✔️ ( 0-11) ✔️ ( 0-17)
Hurmit 🟡 (44-57) ✔️ (14-21) ✔️ (10-16) ✔️ ( 4-11) ✔️ ( 0-10) ✔️ ( 0-12)
iMWritingMonoS 🔴 (55-67) ✔️ (22-28) ✔️ (18-18) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
InconsolataGo 🟡 (51-56) ✔️ (16-21) ✔️ (17-17) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Inconsolata LGC 🔴 (53-65) ✔️ (17-28) ✔️ (19-19) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Inconsolata 🟡 (54-57) ✔️ (19-22) ✔️ (15-15) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Iosevka 🔴 (45-64) ✔️ (10-28) 🟡 (11-30) ✔️ ( 4-11) ✔️ ( 0-11) ✔️ ( 0-18)
IosevkaTerm 🔴 (50-69) 🟡 (14-32) 🔴 (15-34) ✔️ ( 4-11) ✔️ ( 0-15) ✔️ ( 0-18)
JetBrainsMono 🔴 (57-70) 🟡 (21-33) ✔️ (17-28) ✔️ ( 4-11) ✔️ ( 0-17) ✔️ ( 0-17)
JetBrainsMonoNL 🔴 (60-73) 🟡 (23-35) 🟡 (19-30) ✔️ ( 4-11) ✔️ ( 0-19) ✔️ ( 0-17)
Lekton 🟡 (44-51) ✔️ ( 9-16) ✔️ (10-10) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Lilex 🟡 (48-51) ✔️ (13-16) ✔️ ( 9-14) ✔️ ( 4- 7) ✔️ ( 0- 9) ✔️ ( 0- 4)
LiterationMono 🔴 (53-65) ✔️ (17-28) ✔️ (18-18) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
MesloLGLDZ 🟡 (56-63) ✔️ (18-24) ✔️ (14-14) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
MesloLGL 🟡 (53-60) ✔️ (16-22) ✔️ (12-12) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
MesloLGMDZ 🟡 (56-63) ✔️ (18-24) ✔️ (14-14) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
MesloLGM 🟡 (53-60) ✔️ (16-22) ✔️ (12-12) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
MesloLGSDZ 🟡 (56-63) ✔️ (18-24) ✔️ (14-14) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
MesloLGS 🟡 (53-60) ✔️ (16-22) ✔️ (12-12) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Monofur 🟡 (45-52) ✔️ (10-17) ✔️ (11-11) ✔️ ( 4- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Monoid 🟡 (49-52) ✔️ (14-17) ✔️ (10-17) ✔️ ( 4- 7) ✔️ ( 0-10) ✔️ ( 0- 6)
Mononoki 🟡 (51-58) ✔️ (16-22) ✔️ (12-12) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
MPLUS1Code 🟡 (51-62) ✔️ (18-24) ✔️ (14-25) ✔️ ( 4- 7) ✔️ ( 0-14) ✔️ ( 0-10)
MPLUSCodeLatinExpanded 🔴 (64-75) 🟡 (30-36) 🔴 (26-37) ✔️ ( 4- 7) ✔️ ( 0-26) ✔️ ( 0-10)
MPLUSCodeLatin 🔴 (55-66) ✔️ (22-28) ✔️ (18-29) ✔️ ( 4- 7) ✔️ ( 0-18) ✔️ ( 0-10)
NotoMono 🟡 (47-47) ✔️ (11-11) ✔️ (12-12) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
NotoSansMono 🔴 (57-78) 🟡 (20-40) 🟡 (16-30) ✔️ ( 4- 7) ✔️ ( 0-16) ✔️ ( 0-25)
OpenDyslexicMono 🟡 (54-54) ✔️ (27-27) ✔️ (20-20) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
OverpassMono 🟡 (56-60) ✔️ (20-24) ✔️ (16-25) ✔️ ( 4- 7) ✔️ ( 0-16) ✔️ ( 0- 8)
ProFont IIx 🟡 (49-49) ✔️ (13-13) ✔️ (15-15) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
ProFontWindows 🟡 (52-52) ✔️ (17-17) ✔️ (18-18) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
ProggyCleanTT CE 🟡 (55-55) ✔️ (18-18) ✔️ (20-20) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
ProggyCleanTT 🟡 (52-52) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
ProggyCleanTTSZ 🟡 (54-54) ✔️ (18-18) ✔️ (19-19) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
RobotoMono 🔴 (49-65) ✔️ (18-28) ✔️ (14-23) ✔️ ( 4-11) ✔️ ( 0-14) ✔️ ( 0-15)
SauceCodePro 🔴 (52-70) 🟡 (15-32) ✔️ (16-27) ✔️ ( 4-11) ✔️ ( 0-16) ✔️ ( 0-17)
ShureTechMono 🟡 (53-53) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
SpaceMono 🟡 (48-60) ✔️ (12-23) ✔️ (13-13) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
Symbols1000Em 🟡 (53-53) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Symbols2048Em 🟡 (53-53) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ ( 0- 0) ✔️ ( 0- 0)
Terminess (TTF) 🔴 (53-65) ✔️ (15-26) ✔️ (19-19) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
UbuntuMono 🟡 (49-61) ✔️ (13-24) ✔️ (14-14) ✔️ ( 4-11) ✔️ ( 0- 0) ✔️ ( 0- 0)
VictorMono 🔴 (54-68) 🟡 (18-31) 🔴 (14-33) ✔️ ( 4-11) ✔️ ( 0-14) ✔️ ( 0-18)

@Finii
Copy link
Collaborator Author

Finii commented Apr 6, 2023

Latest approach, this looks promising

which ID4 ID6 ID1 ID2 ID16 ID17
IosevkaTerm Nerd Font 🟡 (28-41) ✔️ (13-21) ✔️ (14-23) ✔️ ( 4-11) ✔️ (21-21) ✔️ ( 0-18)
IosevkaTerm Nerd Font Mono 🟡 (32-45) ✔️ (14-22) ✔️ (15-24) ✔️ ( 4-11) ✔️ (26-26) ✔️ ( 0-18)

Lets check how it fares after installing

which ID4 ID6 ID1 ID2 ID16 ID17
3270 Nerd Font Mono 🟡 (28-34) ✔️ ( 7-12) ✔️ ( 8-13) ✔️ ( 7- 7) ✔️ (19-19) ✔️ ( 0-13)
3270 Nerd Font 🟡 (24-30) ✔️ ( 6-11) ✔️ ( 7-12) ✔️ ( 7- 7) ✔️ (14-14) ✔️ ( 0-13)
Agave Nerd Font ✔️ (22-25) ✔️ (10-10) ✔️ ( 8- 8) ✔️ ( 4- 7) ✔️ (15-15) ✔️ ( 0- 0)
Agave Nerd Font Mono ✔️ (26-29) ✔️ (11-11) ✔️ ( 9- 9) ✔️ ( 4- 7) ✔️ (20-20) ✔️ ( 0- 0)
Anonymice Nerd Font ✔️ (29-29) ✔️ (11-11) ✔️ (12-12) ✔️ ( 7- 7) ✔️ (19-19) ✔️ ( 0- 0)
Anonymice Nerd Font Mono 🟡 (33-33) ✔️ (12-12) ✔️ (13-13) ✔️ ( 7- 7) ✔️ (24-24) ✔️ ( 0- 0)
Arimo Nerd Font ✔️ (22-28) ✔️ (10-12) ✔️ ( 8- 8) ✔️ ( 4-11) ✔️ (15-15) ✔️ ( 0- 0)
AurulentSansMono Nerd Font Mono 🟡 (40-40) ✔️ (22-22) ✔️ (20-20) ✔️ ( 7- 7) ✔️ (31-31) ✔️ ( 0- 0)
AurulentSansMono Nerd Font 🟡 (36-36) ✔️ (21-21) ✔️ (19-19) ✔️ ( 7- 7) ✔️ (26-26) ✔️ ( 0- 0)
BigBlueTerminal437TT Nerd Font Mono 🟡 (44-44) ✔️ (23-23) ✔️ (24-24) ✔️ ( 7- 7) 🔴 (35-35) ✔️ ( 0- 0)
BigBlueTerminal437TT Nerd Font 🟡 (40-40) ✔️ (22-22) ✔️ (23-23) ✔️ ( 7- 7) ✔️ (30-30) ✔️ ( 0- 0)
BigBlueTerminalPlus Nerd Font Mono 🟡 (43-43) ✔️ (22-22) ✔️ (23-23) ✔️ ( 7- 7) 🔴 (34-34) ✔️ ( 0- 0)
BigBlueTerminalPlus Nerd Font 🟡 (39-39) ✔️ (21-21) ✔️ (22-22) ✔️ ( 7- 7) ✔️ (29-29) ✔️ ( 0- 0)
BitstreamVeraSansMono Nerd Font Mono 🟡 (42-49) 🟡 (24-30) 🔴 (25-33) ✔️ ( 4-11) 🔴 (36-36) ✔️ ( 0-12)
BitstreamVeraSansMono Nerd Font 🟡 (38-45) ✔️ (23-29) 🔴 (24-32) ✔️ ( 4-11) ✔️ (31-31) ✔️ ( 0-12)
BlexMonoExtLt Nerd Font Mono 🟡 (36-37) ✔️ (16-19) ✔️ (17-17) ✔️ ( 6- 7) ✔️ (28-28) ✔️ ( 0- 0)
BlexMonoExtLt Nerd Font 🟡 (32-32) ✔️ (18-18) ✔️ (16-16) ✔️ ( 6- 6) ✔️ (23-23) ✔️ ( 0- 0)
BlexMonoExtLt Nerd Font 🟡 (33-33) ✔️ (15-15) ✔️ (16-16) ✔️ ( 7- 7) ✔️ (23-23) ✔️ ( 0- 0)
BlexMonoMedm Nerd Font Mono 🟡 (35-35) ✔️ (18-18) ✔️ (16-16) ✔️ ( 6- 6) ✔️ (27-27) ✔️ ( 0- 0)
BlexMonoMedm Nerd Font Mono 🟡 (36-36) ✔️ (15-15) ✔️ (16-16) ✔️ ( 7- 7) ✔️ (27-27) ✔️ ( 0- 0)
BlexMonoMedm Nerd Font 🟡 (31-31) ✔️ (17-17) ✔️ (15-15) ✔️ ( 6- 6) ✔️ (22-22) ✔️ ( 0- 0)
BlexMonoMedm Nerd Font 🟡 (32-32) ✔️ (14-14) ✔️ (15-15) ✔️ ( 7- 7) ✔️ (22-22) ✔️ ( 0- 0)
BlexMono Nerd Font ✔️ (25-26) ✔️ (13-13) ✔️ (14-14) ✔️ ( 7- 7) ✔️ (18-18) ✔️ ( 4- 5)
BlexMono Nerd Font Mono ✔️ (29-29) ✔️ (14-14) ✔️ (12-15) ✔️ ( 4- 7) ✔️ (23-23) ✔️ ( 0- 4)
BlexMono Nerd Font Mono 🟡 (30-30) ✔️ (14-14) ✔️ (15-15) ✔️ ( 7- 7) ✔️ (23-23) ✔️ ( 5- 5)
BlexMono Nerd Font Mono 🟡 (31-36) ✔️ (14-16) ✔️ (12-15) ✔️ ( 6-11) ✔️ (23-23) ✔️ ( 0-12)
BlexMono Nerd Font Mono 🟡 (32-32) ✔️ (11-11) ✔️ (12-12) ✔️ ( 7- 7) ✔️ (23-23) ✔️ ( 0- 0)
BlexMono Nerd Font Mono 🟡 (35-35) ✔️ (16-16) ✔️ (15-15) ✔️ ( 6- 6) ✔️ (23-23) ✔️ (11-11)
BlexMono Nerd Font 🟡 (25-31) ✔️ (10-15) ✔️ (11-11) ✔️ ( 4-11) ✔️ (18-18) ✔️ ( 0- 0)
BlexMono Nerd Font 🟡 (31-31) ✔️ (15-15) ✔️ (14-14) ✔️ ( 6- 6) ✔️ (18-18) ✔️ (11-11)
BlexMono Nerd Font 🟡 (32-32) ✔️ (15-15) ✔️ (14-14) ✔️ ( 6- 6) ✔️ (18-18) ✔️ (12-12)
BlexMonoSmBld Nerd Font Mono 🟡 (36-36) ✔️ (19-19) ✔️ (17-17) ✔️ ( 6- 6) ✔️ (28-28) ✔️ ( 0- 0)
BlexMonoSmBld Nerd Font Mono 🟡 (37-37) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ (28-28) ✔️ ( 0- 0)
BlexMonoSmBld Nerd Font 🟡 (32-32) ✔️ (18-18) ✔️ (16-16) ✔️ ( 6- 6) ✔️ (23-23) ✔️ ( 0- 0)
BlexMonoSmBld Nerd Font 🟡 (33-33) ✔️ (15-15) ✔️ (16-16) ✔️ ( 7- 7) ✔️ (23-23) ✔️ ( 0- 0)
BlexMono Text Nerd Font Mono 🟡 (35-35) ✔️ (18-18) ✔️ (17-17) ✔️ ( 6- 6) ✔️ (28-28) ✔️ ( 0- 0)
BlexMono Text Nerd Font Mono 🟡 (36-36) ✔️ (15-15) ✔️ (17-17) ✔️ ( 7- 7) ✔️ (28-28) ✔️ ( 0- 0)
BlexMono Text Nerd Font 🟡 (31-31) ✔️ (17-17) ✔️ (16-16) ✔️ ( 6- 6) ✔️ (23-23) ✔️ ( 0- 0)
BlexMono Text Nerd Font 🟡 (32-32) ✔️ (14-14) ✔️ (16-16) ✔️ ( 7- 7) ✔️ (23-23) ✔️ ( 0- 0)
CaskaydiaCove Nerd Font Mono 🟡 (34-46) ✔️ (19-23) ✔️ (17-28) ✔️ ( 4-11) ✔️ (28-28) ✔️ ( 0-17)
CaskaydiaCove Nerd Font 🟡 (30-42) ✔️ (18-22) ✔️ (16-27) ✔️ ( 4-11) ✔️ (23-23) ✔️ ( 0-17)
CodeNewRoman Nerd Font Mono 🟡 (33-36) ✔️ (15-18) ✔️ (16-16) ✔️ ( 4- 7) ✔️ (27-27) ✔️ ( 0- 0)
CodeNewRoman Nerd Font 🟡 (29-32) ✔️ (14-17) ✔️ (15-15) ✔️ ( 4- 7) ✔️ (22-22) ✔️ ( 0- 0)
Cousine Nerd Font Mono 🟡 (28-34) ✔️ (13-15) ✔️ (11-11) ✔️ ( 4-11) ✔️ (22-22) ✔️ ( 0- 0)
Cousine Nerd Font 🟡 (24-30) ✔️ (12-14) ✔️ (10-10) ✔️ ( 4-11) ✔️ (17-17) ✔️ ( 0- 0)
DaddyTimeMono Nerd Font Mono 🟡 (37-37) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ (28-28) ✔️ ( 0- 0)
DaddyTimeMono Nerd Font 🟡 (33-33) ✔️ (15-15) ✔️ (16-16) ✔️ ( 7- 7) ✔️ (23-23) ✔️ ( 0- 0)
DejaVuSansMono Nerd Font Mono 🟡 (35-42) ✔️ (17-23) ✔️ (18-26) ✔️ ( 4-11) ✔️ (29-29) ✔️ ( 0-12)
DejaVuSansMono Nerd Font 🟡 (31-38) ✔️ (16-22) ✔️ (17-25) ✔️ ( 4-11) ✔️ (24-24) ✔️ ( 0-12)
DroidSansMono Nerd Font Mono 🟡 (37-37) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ (28-28) ✔️ ( 0- 0)
DroidSansMono Nerd Font 🟡 (33-33) ✔️ (15-15) ✔️ (16-16) ✔️ ( 7- 7) ✔️ (23-23) ✔️ ( 0- 0)
FantasqueSansMono Nerd Font Mono 🟡 (38-44) ✔️ (23-25) ✔️ (21-21) ✔️ ( 4-11) 🔴 (32-32) ✔️ ( 0- 0)
FantasqueSansMono Nerd Font 🟡 (34-40) ✔️ (22-24) ✔️ (20-20) ✔️ ( 4-11) ✔️ (27-27) ✔️ ( 0- 0)
FiraCode Nerd Font ✔️ (25-29) ✔️ (13-17) ✔️ (11-20) ✔️ ( 4- 7) ✔️ (18-18) ✔️ ( 0- 8)
FiraCode Nerd Font Mono 🟡 (29-33) ✔️ (14-18) ✔️ (12-21) ✔️ ( 4- 7) ✔️ (23-23) ✔️ ( 0- 8)
FiraMono Nerd Font ✔️ (25-28) ✔️ (13-13) ✔️ (11-18) ✔️ ( 4- 7) ✔️ (18-18) ✔️ ( 0- 6)
FiraMono Nerd Font Mono 🟡 (29-32) ✔️ (14-14) ✔️ (12-19) ✔️ ( 4- 7) ✔️ (23-23) ✔️ ( 0- 6)
GohuFont 11 Nerd Font Mono 🟡 (34-34) ✔️ (13-13) ✔️ (15-15) ✔️ ( 7- 7) ✔️ (26-26) ✔️ ( 0- 0)
GohuFont 11 Nerd Font 🟡 (30-30) ✔️ (12-12) ✔️ (14-14) ✔️ ( 7- 7) ✔️ (21-21) ✔️ ( 0- 0)
GohuFont 14 Nerd Font Mono 🟡 (34-34) ✔️ (13-13) ✔️ (15-15) ✔️ ( 7- 7) ✔️ (26-26) ✔️ ( 0- 0)
GohuFont 14 Nerd Font 🟡 (30-30) ✔️ (12-12) ✔️ (14-14) ✔️ ( 7- 7) ✔️ (21-21) ✔️ ( 0- 0)
GohuFont uni-11 Nerd Font Mono 🟡 (38-38) ✔️ (17-17) ✔️ (19-19) ✔️ ( 7- 7) ✔️ (30-30) ✔️ ( 0- 0)
GohuFont uni-11 Nerd Font 🟡 (34-34) ✔️ (16-16) ✔️ (18-18) ✔️ ( 7- 7) ✔️ (25-25) ✔️ ( 0- 0)
GohuFont uni-14 Nerd Font Mono 🟡 (38-38) ✔️ (17-17) ✔️ (19-19) ✔️ ( 7- 7) ✔️ (30-30) ✔️ ( 0- 0)
GohuFont uni-14 Nerd Font 🟡 (34-34) ✔️ (16-16) ✔️ (18-18) ✔️ ( 7- 7) ✔️ (25-25) ✔️ ( 0- 0)
GoMono Nerd Font ✔️ (23-29) ✔️ ( 8-13) ✔️ ( 9- 9) ✔️ ( 4-11) ✔️ (16-16) ✔️ ( 0- 0)
GoMono Nerd Font Mono 🟡 (27-33) ✔️ ( 9-14) ✔️ (10-10) ✔️ ( 4-11) ✔️ (21-21) ✔️ ( 0- 0)
Hack Nerd Font ✔️ (21-27) ✔️ ( 9-11) ✔️ ( 7- 7) ✔️ ( 4-11) ✔️ (14-14) ✔️ ( 0- 0)
Hack Nerd Font Mono 🟡 (25-31) ✔️ (10-12) ✔️ ( 8- 8) ✔️ ( 4-11) ✔️ (19-19) ✔️ ( 0- 0)
Hasklug Nerd Font Mono 🟡 (28-40) ✔️ (10-17) ✔️ (11-22) ✔️ ( 4-11) ✔️ (22-22) ✔️ ( 0-17)
Hasklug Nerd Font 🟡 (24-36) ✔️ ( 9-16) ✔️ (10-21) ✔️ ( 4-11) ✔️ (17-17) ✔️ ( 0-17)
HeavyData Nerd Font ✔️ (29-29) ✔️ (11-11) ✔️ (12-12) ✔️ ( 7- 7) ✔️ (19-19) ✔️ ( 0- 0)
Hurmit Nerd Font Mono 🟡 (27-34) ✔️ (12-14) ✔️ (10-16) ✔️ ( 4-11) ✔️ (21-21) ✔️ ( 0-12)
Hurmit Nerd Font 🟡 (23-30) ✔️ (11-13) ✔️ ( 9-15) ✔️ ( 4-11) ✔️ (16-16) ✔️ ( 0-12)
iMWritingDuoS Nerd Font 🟡 (30-36) ✔️ (18-20) ✔️ (16-16) ✔️ ( 4-11) ✔️ (23-23) ✔️ ( 0- 0)
iMWritingDuospace Nerd Font 🟡 (34-40) ✔️ (22-24) ✔️ (20-20) ✔️ ( 4-11) ✔️ (27-27) ✔️ ( 0- 0)
iMWritingMonoS Nerd Font Mono 🟡 (35-41) ✔️ (20-22) ✔️ (18-18) ✔️ ( 4-11) ✔️ (29-29) ✔️ ( 0- 0)
iMWritingMonoS Nerd Font 🟡 (31-37) ✔️ (19-21) ✔️ (17-17) ✔️ ( 4-11) ✔️ (24-24) ✔️ ( 0- 0)
iMWritingQuattroS Nerd Font 🟡 (34-40) ✔️ (22-24) ✔️ (20-20) ✔️ ( 4-11) ✔️ (27-27) ✔️ ( 0- 0)
InconsolataGo Nerd Font Mono 🟡 (34-37) ✔️ (16-19) ✔️ (17-17) ✔️ ( 4- 7) ✔️ (28-28) ✔️ ( 0- 0)
InconsolataGo Nerd Font 🟡 (30-33) ✔️ (15-18) ✔️ (16-16) ✔️ ( 4- 7) ✔️ (23-23) ✔️ ( 0- 0)
Inconsolata LGC Nerd Font Mono 🟡 (35-41) ✔️ (17-22) ✔️ (19-19) ✔️ ( 4-11) ✔️ (30-30) ✔️ ( 0- 0)
Inconsolata LGC Nerd Font 🟡 (31-37) ✔️ (16-21) ✔️ (18-18) ✔️ ( 4-11) ✔️ (25-25) ✔️ ( 0- 0)
Inconsolata Nerd Font Mono 🟡 (32-35) ✔️ (17-17) ✔️ (15-15) ✔️ ( 4- 7) ✔️ (26-26) ✔️ ( 0- 0)
Inconsolata Nerd Font 🟡 (28-31) ✔️ (16-16) ✔️ (14-14) ✔️ ( 4- 7) ✔️ (21-21) ✔️ ( 0- 0)
Iosevka Nerd Font Mono 🟡 (28-41) ✔️ (10-18) ✔️ (11-20) ✔️ ( 4-11) ✔️ (22-22) ✔️ ( 0-18)
Iosevka Nerd Font 🟡 (24-37) ✔️ ( 9-17) ✔️ (10-19) ✔️ ( 4-11) ✔️ (17-17) ✔️ ( 0-18)
IosevkaTerm Nerd Font Mono 🟡 (32-45) ✔️ (14-22) ✔️ (15-24) ✔️ ( 4-11) ✔️ (26-26) ✔️ ( 0-18)
IosevkaTerm Nerd Font 🟡 (28-41) ✔️ (13-21) ✔️ (14-23) ✔️ ( 4-11) ✔️ (21-21) ✔️ ( 0-18)
JetBrainsMono Nerd Font Mono 🟡 (34-46) ✔️ (19-23) ✔️ (17-28) ✔️ ( 4-11) ✔️ (28-28) ✔️ ( 0-17)
JetBrainsMono Nerd Font 🟡 (30-42) ✔️ (18-22) ✔️ (16-27) ✔️ ( 4-11) ✔️ (23-23) ✔️ ( 0-17)
JetBrainsMonoNL Nerd Font Mono 🟡 (36-48) ✔️ (21-25) 🟡 (19-30) ✔️ ( 4-11) ✔️ (30-30) ✔️ ( 0-17)
JetBrainsMonoNL Nerd Font 🟡 (32-44) ✔️ (20-24) ✔️ (18-29) ✔️ ( 4-11) ✔️ (25-25) ✔️ ( 0-17)
Lekton Nerd Font ✔️ (23-26) ✔️ ( 8-11) ✔️ ( 9- 9) ✔️ ( 4- 7) ✔️ (16-16) ✔️ ( 0- 0)
Lekton Nerd Font Mono 🟡 (27-30) ✔️ ( 9-12) ✔️ (10-10) ✔️ ( 4- 7) ✔️ (21-21) ✔️ ( 0- 0)
Lilex Nerd Font ✔️ (22-25) ✔️ (10-10) ✔️ ( 8-13) ✔️ ( 4- 7) ✔️ (15-15) ✔️ ( 0- 4)
Lilex Nerd Font Mono ✔️ (26-29) ✔️ (11-11) ✔️ ( 9-14) ✔️ ( 4- 7) ✔️ (20-20) ✔️ ( 0- 4)
LiterationMono Nerd Font Mono 🟡 (35-41) ✔️ (17-22) ✔️ (18-18) ✔️ ( 4-11) ✔️ (29-29) ✔️ ( 0- 0)
LiterationMono Nerd Font 🟡 (31-31) ✔️ (19-19) ✔️ (17-17) ✔️ ( 4- 4) ✔️ (24-24) ✔️ ( 0- 0)
LiterationMono Nerd Font 🟡 (33-33) ✔️ (19-19) ✔️ (17-17) ✔️ ( 6- 6) ✔️ (24-24) ✔️ ( 0- 0)
LiterationMono Nerd Font 🟡 (34-37) ✔️ (16-21) ✔️ (17-17) ✔️ ( 7-11) ✔️ (24-24) ✔️ ( 0- 0)
LiterationSans Nerd Font 🟡 (31-31) ✔️ (19-19) ✔️ (17-17) ✔️ ( 4- 4) ✔️ (24-24) ✔️ ( 0- 0)
LiterationSans Nerd Font 🟡 (33-34) ✔️ (16-19) ✔️ (17-17) ✔️ ( 6- 7) ✔️ (24-24) ✔️ ( 0- 0)
LiterationSans Nerd Font 🟡 (37-37) ✔️ (21-21) ✔️ (17-17) ✔️ (11-11) ✔️ (24-24) ✔️ ( 0- 0)
LiterationSerif Nerd Font 🟡 (32-38) ✔️ (20-22) ✔️ (18-18) ✔️ ( 4-11) ✔️ (25-25) ✔️ ( 0- 0)
LiterationSerif Nerd Font 🟡 (34-34) ✔️ (20-20) ✔️ (18-18) ✔️ ( 6- 6) ✔️ (25-25) ✔️ ( 0- 0)
LiterationSerif Nerd Font 🟡 (35-35) ✔️ (17-17) ✔️ (18-18) ✔️ ( 7- 7) ✔️ (25-25) ✔️ ( 0- 0)
MesloLGLDZ Nerd Font Mono 🟡 (31-37) ✔️ (16-18) ✔️ (14-14) ✔️ ( 4-11) ✔️ (25-25) ✔️ ( 0- 0)
MesloLGLDZ Nerd Font 🟡 (27-33) ✔️ (15-17) ✔️ (13-13) ✔️ ( 4-11) ✔️ (20-20) ✔️ ( 0- 0)
MesloLGL Nerd Font Mono 🟡 (29-35) ✔️ (14-16) ✔️ (12-12) ✔️ ( 4-11) ✔️ (23-23) ✔️ ( 0- 0)
MesloLGL Nerd Font 🟡 (25-31) ✔️ (13-15) ✔️ (11-11) ✔️ ( 4-11) ✔️ (18-18) ✔️ ( 0- 0)
MesloLGMDZ Nerd Font Mono 🟡 (31-37) ✔️ (16-18) ✔️ (14-14) ✔️ ( 4-11) ✔️ (25-25) ✔️ ( 0- 0)
MesloLGMDZ Nerd Font 🟡 (27-33) ✔️ (15-17) ✔️ (13-13) ✔️ ( 4-11) ✔️ (20-20) ✔️ ( 0- 0)
MesloLGM Nerd Font Mono 🟡 (29-35) ✔️ (14-16) ✔️ (12-12) ✔️ ( 4-11) ✔️ (23-23) ✔️ ( 0- 0)
MesloLGM Nerd Font 🟡 (25-31) ✔️ (13-15) ✔️ (11-11) ✔️ ( 4-11) ✔️ (18-18) ✔️ ( 0- 0)
MesloLGSDZ Nerd Font Mono 🟡 (31-37) ✔️ (16-18) ✔️ (14-14) ✔️ ( 4-11) ✔️ (25-25) ✔️ ( 0- 0)
MesloLGSDZ Nerd Font 🟡 (27-33) ✔️ (15-17) ✔️ (13-13) ✔️ ( 4-11) ✔️ (20-20) ✔️ ( 0- 0)
MesloLGS Nerd Font Mono 🟡 (29-35) ✔️ (14-16) ✔️ (12-12) ✔️ ( 4-11) ✔️ (23-23) ✔️ ( 0- 0)
MesloLGS Nerd Font 🟡 (25-31) ✔️ (13-15) ✔️ (11-11) ✔️ ( 4-11) ✔️ (18-18) ✔️ ( 0- 0)
Monofur Nerd Font ✔️ (24-27) ✔️ ( 9-12) ✔️ (10-10) ✔️ ( 4- 7) ✔️ (17-17) ✔️ ( 0- 0)
Monofur Nerd Font Mono 🟡 (28-31) ✔️ (10-13) ✔️ (11-11) ✔️ ( 4- 7) ✔️ (22-22) ✔️ ( 0- 0)
Monoid Nerd Font ✔️ (23-26) ✔️ (11-15) ✔️ ( 9-16) ✔️ ( 4- 7) ✔️ (16-16) ✔️ ( 0- 6)
Monoid Nerd Font Mono 🟡 (27-30) ✔️ (12-16) ✔️ (10-17) ✔️ ( 4- 7) ✔️ (21-21) ✔️ ( 0- 6)
Mononoki Nerd Font Mono 🟡 (29-35) ✔️ (14-16) ✔️ (12-12) ✔️ ( 4-11) ✔️ (23-23) ✔️ ( 0- 0)
Mononoki Nerd Font 🟡 (25-31) ✔️ (13-15) ✔️ (11-11) ✔️ ( 4-11) ✔️ (18-18) ✔️ ( 0- 0)
MPLUS1Code Nerd Font Mono 🟡 (31-37) ✔️ (16-18) ✔️ (14-25) ✔️ ( 4- 7) ✔️ (25-25) ✔️ ( 0-10)
MPLUS1Code Nerd Font 🟡 (27-33) ✔️ (15-17) ✔️ (13-24) ✔️ ( 4- 7) ✔️ (20-20) ✔️ ( 0-10)
MPLUS1 Nerd Font ✔️ (23-29) ✔️ (11-13) ✔️ ( 9-20) ✔️ ( 4- 7) ✔️ (16-16) ✔️ ( 0-10)
MPLUS2 Nerd Font ✔️ (23-29) ✔️ (11-13) ✔️ ( 9-20) ✔️ ( 4- 7) ✔️ (16-16) ✔️ ( 0-10)
MPLUSCodeLatinExpanded Nerd Font Mono 🟡 (43-49) 🟡 (28-30) 🔴 (26-37) ✔️ ( 4- 7) 🔴 (37-37) ✔️ ( 0-10)
MPLUSCodeLatinExpanded Nerd Font 🟡 (39-45) ✔️ (27-29) 🔴 (25-36) ✔️ ( 4- 7) 🔴 (32-32) ✔️ ( 0-10)
MPLUSCodeLatin Nerd Font Mono 🟡 (35-41) ✔️ (20-22) ✔️ (18-29) ✔️ ( 4- 7) ✔️ (29-29) ✔️ ( 0-10)
MPLUSCodeLatin Nerd Font 🟡 (31-37) ✔️ (19-21) ✔️ (17-28) ✔️ ( 4- 7) ✔️ (24-24) ✔️ ( 0-10)
NotoMono Nerd Font ✔️ (28-28) ✔️ (10-10) ✔️ (11-11) ✔️ ( 7- 7) ✔️ (18-18) ✔️ ( 0- 0)
NotoMono Nerd Font Mono 🟡 (32-32) ✔️ (11-11) ✔️ (12-12) ✔️ ( 7- 7) ✔️ (23-23) ✔️ ( 0- 0)
NotoSansMono Nerd Font Mono 🟡 (33-53) ✔️ (18-24) 🔴 (16-42) ✔️ ( 4- 7) ✔️ (27-27) ✔️ ( 0-25)
NotoSansMono Nerd Font 🟡 (29-49) ✔️ (17-23) 🔴 (15-41) ✔️ ( 4- 7) ✔️ (22-22) ✔️ ( 0-25)
NotoSans Nerd Font 🟡 (25-51) ✔️ (13-21) 🔴 (11-37) ✔️ ( 4-11) ✔️ (18-18) 🔴 ( 0-32)
NotoSerif Nerd Font 🟡 (26-52) ✔️ (14-22) 🔴 (12-38) ✔️ ( 4-11) ✔️ (19-19) 🔴 ( 0-32)
OpenDyslexicAlta Nerd Font 🟡 (33-33) ✔️ (21-21) ✔️ (19-19) ✔️ ( 4- 4) ✔️ (26-26) ✔️ ( 0- 0)
OpenDyslexicAlta Nerd Font 🟡 (35-39) ✔️ (21-23) ✔️ (19-19) ✔️ ( 6-11) ✔️ (26-26) ✔️ ( 0- 0)
OpenDyslexicAlta Nerd Font 🟡 (36-36) ✔️ (21-21) ✔️ (19-19) ✔️ ( 7- 7) ✔️ (26-26) ✔️ ( 0- 0)
OpenDyslexicMono Nerd Font Mono 🟡 (40-40) ✔️ (22-22) ✔️ (20-20) ✔️ ( 7- 7) ✔️ (31-31) ✔️ ( 0- 0)
OpenDyslexicMono Nerd Font 🟡 (36-36) ✔️ (21-21) ✔️ (19-19) ✔️ ( 7- 7) ✔️ (26-26) ✔️ ( 0- 0)
OpenDyslexic Nerd Font 🟡 (29-32) ✔️ (17-17) ✔️ (15-15) ✔️ ( 4- 7) ✔️ (22-22) ✔️ ( 0- 0)
OpenDyslexic Nerd Font 🟡 (31-31) ✔️ (17-17) ✔️ (15-15) ✔️ ( 6- 6) ✔️ (22-22) ✔️ ( 0- 0)
OpenDyslexic Nerd Font 🟡 (35-35) ✔️ (19-19) ✔️ (15-15) ✔️ (11-11) ✔️ (22-22) ✔️ ( 0- 0)
OverpassMono Nerd Font Mono 🟡 (33-37) ✔️ (18-20) ✔️ (16-25) ✔️ ( 4- 7) ✔️ (27-27) ✔️ ( 0- 8)
OverpassMono Nerd Font 🟡 (29-33) ✔️ (17-19) ✔️ (15-24) ✔️ ( 4- 7) ✔️ (22-22) ✔️ ( 0- 8)
Overpass Nerd Font 🟡 (25-37) ✔️ (13-17) ✔️ (11-22) ✔️ ( 4-11) ✔️ (18-18) ✔️ ( 0-17)
ProFont IIx Nerd Font Mono 🟡 (34-34) ✔️ (13-13) ✔️ (15-15) ✔️ ( 7- 7) ✔️ (26-26) ✔️ ( 0- 0)
ProFont IIx Nerd Font 🟡 (30-30) ✔️ (12-12) ✔️ (14-14) ✔️ ( 7- 7) ✔️ (21-21) ✔️ ( 0- 0)
ProFontWindows Nerd Font Mono 🟡 (38-38) ✔️ (17-17) ✔️ (18-18) ✔️ ( 7- 7) ✔️ (29-29) ✔️ ( 0- 0)
ProFontWindows Nerd Font 🟡 (34-34) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ (24-24) ✔️ ( 0- 0)
ProggyCleanTT CE Nerd Font Mono 🟡 (39-39) ✔️ (18-18) ✔️ (20-20) ✔️ ( 7- 7) ✔️ (31-31) ✔️ ( 0- 0)
ProggyCleanTT CE Nerd Font 🟡 (35-35) ✔️ (17-17) ✔️ (19-19) ✔️ ( 7- 7) ✔️ (26-26) ✔️ ( 0- 0)
ProggyCleanTT Nerd Font Mono 🟡 (37-37) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ (28-28) ✔️ ( 0- 0)
ProggyCleanTT Nerd Font 🟡 (33-33) ✔️ (15-15) ✔️ (16-16) ✔️ ( 7- 7) ✔️ (23-23) ✔️ ( 0- 0)
ProggyCleanTTSZ Nerd Font Mono 🟡 (39-39) ✔️ (18-18) ✔️ (19-19) ✔️ ( 7- 7) ✔️ (30-30) ✔️ ( 0- 0)
ProggyCleanTTSZ Nerd Font 🟡 (35-35) ✔️ (17-17) ✔️ (18-18) ✔️ ( 7- 7) ✔️ (25-25) ✔️ ( 0- 0)
RobotoMono Nerd Font Mono 🟡 (31-41) ✔️ (16-20) ✔️ (14-23) ✔️ ( 4-11) ✔️ (25-25) ✔️ ( 0-15)
RobotoMono Nerd Font 🟡 (27-37) ✔️ (15-19) ✔️ (13-22) ✔️ ( 4-11) ✔️ (20-20) ✔️ ( 0-15)
SauceCodePro Nerd Font Mono 🟡 (33-45) ✔️ (15-22) ✔️ (16-27) ✔️ ( 4-11) ✔️ (27-27) ✔️ ( 0-17)
SauceCodePro Nerd Font 🟡 (29-41) ✔️ (14-21) ✔️ (15-26) ✔️ ( 4-11) ✔️ (22-22) ✔️ ( 0-17)
ShureTechMono Nerd Font Mono 🟡 (37-37) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ (28-28) ✔️ ( 0- 0)
ShureTechMono Nerd Font 🟡 (33-33) ✔️ (15-15) ✔️ (16-16) ✔️ ( 7- 7) ✔️ (23-23) ✔️ ( 0- 0)
SpaceMono Nerd Font Mono 🟡 (30-36) ✔️ (12-17) ✔️ (13-13) ✔️ ( 4-11) ✔️ (24-24) ✔️ ( 0- 0)
SpaceMono Nerd Font 🟡 (26-32) ✔️ (11-16) ✔️ (12-12) ✔️ ( 4-11) ✔️ (19-19) ✔️ ( 0- 0)
Symbols1000Em Nerd Font Mono 🟡 (37-37) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ (28-28) ✔️ ( 0- 0)
Symbols1000Em Nerd Font 🟡 (33-33) ✔️ (15-15) ✔️ (16-16) ✔️ ( 7- 7) ✔️ (23-23) ✔️ ( 0- 0)
Symbols2048Em Nerd Font Mono 🟡 (37-37) ✔️ (16-16) ✔️ (17-17) ✔️ ( 7- 7) ✔️ (28-28) ✔️ ( 0- 0)
Symbols2048Em Nerd Font 🟡 (33-33) ✔️ (15-15) ✔️ (16-16) ✔️ ( 7- 7) ✔️ (23-23) ✔️ ( 0- 0)
Terminess (TTF) Nerd Font Mono 🟡 (35-41) ✔️ (15-20) ✔️ (19-19) ✔️ ( 4-11) ✔️ (30-30) ✔️ ( 0- 0)
Terminess (TTF) Nerd Font 🟡 (31-37) ✔️ (14-19) ✔️ (18-18) ✔️ ( 4-11) ✔️ (25-25) ✔️ ( 0- 0)
Tinos Nerd Font ✔️ (22-28) ✔️ ( 7-12) ✔️ ( 8- 8) ✔️ ( 4-11) ✔️ (15-15) ✔️ ( 0- 0)
UbuntuMono Nerd Font Mono 🟡 (31-37) ✔️ (13-18) ✔️ (14-14) ✔️ ( 4-11) ✔️ (25-25) ✔️ ( 0- 0)
UbuntuMono Nerd Font 🟡 (27-33) ✔️ (12-17) ✔️ (13-13) ✔️ ( 4-11) ✔️ (20-20) ✔️ ( 0- 0)
Ubuntu Nerd Font 🟡 (23-31) ✔️ ( 8-13) ✔️ ( 9-19) ✔️ ( 4-11) ✔️ (16-16) ✔️ ( 0-13)
VictorMono Nerd Font Mono 🟡 (31-44) ✔️ (16-21) 🔴 (14-33) ✔️ ( 4-11) ✔️ (25-25) ✔️ ( 0-18)
VictorMono Nerd Font 🟡 (27-40) ✔️ (15-20) 🔴 (13-32) ✔️ ( 4-11) ✔️ (20-20) ✔️ ( 0-18)

@Finii Finii force-pushed the feature/reorganize-naming branch from e2b5f32 to 2fd7089 Compare April 7, 2023 21:12
@Finii Finii force-pushed the feature/reorganize-naming branch from 480ccc0 to 725df33 Compare April 15, 2023 19:14
[why]
The patched font is named 'OriginalName Nerd Font' and not
'OriginalName Nerd Fonts'. This is a bug.

[how]
Take the correct singular string form when assembling the names.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
We want to keep "Nerd Font" in the font name if possible and instead
shorten the weight part with accepted abbreviations. But these abbrevs
are hard to read and sometimes a more mild abbreviating might be
sufficient to get the desired name length.

[how]
Introduce a new shortening method for the weight parts of a family name.
It takes a longer word (often un-shortened) when a weight stands on its
own, but when a modifier is used together with the weight the more
aggressive two-letter abbreviations are used.

That new shortening method becomes the default and all the functions get
a new parameter to enforce completely aggressive shortening, i.e. always
use the shortest possible form.

The new way to shorten is exposed all the way out to the font-patcher
user who can select the shortening method as parameter to the
--makegroups option. That option is undocumented because I expect some
changes later on, still.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
@Finii Finii force-pushed the feature/reorganize-naming branch 2 times, most recently from 961ba74 to 5a62f8a Compare April 19, 2023 15:48
[why]
When we have a weight/width that can take a modifier, and a modifier is
present we always take the shortest form of the weight/width.

This is not how it is customarily done.

Experienced:
  ExtraCondensed ExtraBold -> ExtCd ExtBd
Expected:
  ExtraCondensed ExtraBold -> ExtCond ExtBd

[how]
In case a modifier is present:
Use the shortest form for weights.
Use the longer short form for widths.

[note]
Also circumvent CodeClimate issue by replacing if-s with formulas.
And adding one nonsense entry to the data tables, because they were
too 'similar' :rolleyes:

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
@Finii Finii force-pushed the feature/reorganize-naming branch from 5a62f8a to 0265034 Compare April 19, 2023 16:21
[why]
The shortened name is not as expected "BigBlueTerminal437 Nerd Font"
but some obscure "c7 Nerd Font".

[how]
The backreference marker `\1` is directly in front of the string `437`
which yields the replacement `\1437`. Python is not smart enough to
correctly handle that (but 'sed' for example is).

Instead use a named backreference which does not clash with the
following digits.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
CodeClimate does not allow 'complicated' functions. In a previous commit
we added more if-s to a function that afterwards was rejected by
CodeClimate. To fix that the if-s have been replaced with arithmetic.

That is
a) less readable than if-s
b) has a bug

[how]
Change the code back to if-s but put them into yet another function.
Hopefully we do not blow up CodeClimate's maximum number of functions
per file limit now...

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
If the font name is changed in a way where it now ends in a blank (for
example because 'Name Momo' got 'Momo' dropped: 'Name '), that blank is
not removed immediately.
Well, it is later on, but anyhow.
This can only happen on malformed SIL entries. But we want to have a
correct replacement anyhow.

[how]
Remove trailing whitespace after replacements.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
@Finii Finii force-pushed the feature/reorganize-naming branch from 3bd7b67 to e71493c Compare April 21, 2023 15:57
Finii added 12 commits April 21, 2023 19:55
[why]
Some fonts have so long base names that we can not, even very
abbreviated as 'NF', add the Nerd Font designator anymore.

In this case we need to rename the font even if it has no RFN just to
make it shorter.

[note]
As '(TTF)' is dropped now from Terminus we do not need to handle it
specifically anymore.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
As we introduces a default --makegroups value of 1 the solution to a
problem can not be omitting the option but the user needs to
specifically call it with value 0 instead.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
Most fonts can run with the full naming (--makegroups 1).

But for some (especially with full fledged subfamilies) the names become
too long. Here we need to select more shortening.

[how]
This can be either done/stored in the font-patcher script, but if you
need shortening (and which) still depends on what set of fonts you want
to patch.
So instead we make it a config.cfg option of the unpatched-fonts.

[note]
Findings:

3270                   2
Agave                  1
AnonymousPro           1
Arimo                  1
Aurulent               1
BigBlueTerminal        1
BitstreamVera          too long, and has RFM
CascadiaCove           4
CodeNewRoman           1
Cousine                1
DaddyTimeMono          1
DejaVuSansMono         1
DroidSansMono          1
FantasqueSansMono      1
FiraCode               2
FiraMono               1
Gohu                   1
Go-Mono                1
Hack                   1
Hasklig                2
HeavyData              1
Hermit                 1
iA-Writer              PROBLEM Quattro / Duospace
IBMPlexMono            1
Inconsolata            1
InconsolataGo          1
InconsolataLGC         1
Iosevka                4 (would also work with 3, but keep same with Term)
IosevkaTerm            4
JetBrainsMono          4
Lekton                 1
LiberationMono         1
Lilex                  1
Meslo                  1
Monofur                1
Monoid                 1
Mononoki               1
MPlus                  2, latX -> 3
NerdFontsSymbolsOnly   1
Noto                   5, but!! "ExtraCondensed ExtraLight Italic"
OpenDyslexic           1
Overpass               2
ProFont                1
ProggyClean            1
RobotoMono             3
ShareTechMono          1
SourceCodePro          4
SpaceMono              1
Terminus               1
Tinos                  1
Ubuntu                 2
UbuntuMono             2
VictorMono             4

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
The fonts generated with --makegroups work on all platforms, so there is
no need for options --windows and --also-windows anymore.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
After skipping the creation of 'Windows Compatible' fonts we have room
to finally add 'Nerd Font Propo' to the release patch sets as first
class citizen.

[note]
Also add undocumented feature that environment variable $NERDFONTS can be
used to supply additional or differing options (last option wins).

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
It is hard to grep for all naming related errors, because there is no
common format.

[how]
Make them also visually similar and error cases easily spotted.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
When we still process the arguments we do not have a real logger object.

[how]
Use the default (root) logger in these cases.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
To check just the naming and other stuff it is good to not patch (and
not store) the resultant font.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
Some messages are not useful in all cases, and we want to hide them.
On the other hand there are messages that we want to only hide in
--shutup mode. Hmm.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
We have both
 iA Writer Duospace
 iA Writer Duo S

These are the same fonts, Duospace is just the former name of Duo S.

Duospace is version 1.005
Duo S (and Mono and Quattro) is version 2.000

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
@Finii Finii force-pushed the feature/reorganize-naming branch from e71493c to 4921e59 Compare April 21, 2023 17:57
[why]
The systematic evaluation of all fonts is finished and we do not need
any comparison with the old naming anymore.

This can partially replaced by something like

NERDFONTS='--debug --dry --makegroups 1' ./gotta-patch-em-all-font-patcher\!.sh -cv /iA-Writer | grep '==='

[note]
Also update query_names helper to what I used recently with length
indicators.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
It's not nessecary to shorten the PSname so much when no shortening is
in place otherwise. This has been thought of as a good idea, because
noone really cares about the PSname and we can avoid any problems. But
checking with the current set of sourcefonts and using the current
shortening options, keeping it longer is never a problem.

It would be a problem for the Fullname ID4 before, and so we always
shorten more.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
@Finii Finii merged commit 20e7a8e into master Apr 24, 2023
@Finii Finii deleted the feature/reorganize-naming branch April 24, 2023 16:42
LNKLEO pushed a commit to LNKLEO/Nerd that referenced this pull request Nov 24, 2023
…aming

Pull 'Mono' to front in names and other naming changes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant