kovidgoyal / kitty

Cross-platform, fast, feature-rich, GPU based terminal
https://sw.kovidgoyal.net/kitty/
GNU General Public License v3.0
23.85k stars 964 forks source link

Make Nerd font optional #7866

Closed toastal closed 2 days ago

toastal commented 2 days ago

Is your feature request related to a problem? Please describe.

I’m going to assume Nerd Fonts are now shipped to deal with the rendering inconsistencies between fonts as well as to point users down the path of not destroying fonts with patching This is a good idea. However, I do not like the concept of Nerd Fonts fundamentally on similar grounds. With the inclusion, I now have an issue with one of my favorite Kitty features: the Unicode character picker. While previously I could easily shrug off search misses with blank characters (or previously overwritten characters in Nerd Font), I now have a laundry list of symbols to visually filter thru. What this is pointing to me is that what I don’t want is any of the Nerd Font noise in my picker so I can find what I am looking for on search since I don’t use Nerd Fonts (especially not wanting to see proprietary brands/services/applications in my terminal). In addition the terminal emulator now includes ‘bloat’ if you want to call it that in the form of a font dependency (which are not small).

Describe the solution you'd like What I what I like is a configuration flag to bypass all of the Nerd Font business… no shipped font dependency, no tests on the font, no mention of its symbols in the character picker. --no-nerd-font or the inverse --with-nerd-font.

Describe alternatives you've considered Previously I was just ignoring the missing characters, but now I can’t.

Additional context

An example of noise searching for the “Micro sign”

Search by: Code (F1)  Name (F2)  Emoticons (F3)  Favorites (F4)
Enter words from the name of the character
µ> micr
Chosen: µ U+b5 Micro sign
Use Tab or arrow keys to choose a character. Type space and . to select by index
0  µ  Micro sign                        1    Microscope                        
2    Microphone                        3    Microphone slash                  
4    Microchip                         5    Microphone                        
6    Microphone off                    7    Microphone outline                
8    Microphone settings               9    Microphone variant                
a    Microphone variant off            b    Microsoft                         
c  🎙  Studio microphone                 d  🎤 Microphone                        
e  🔬 Microscope                        f  🦠 Microbe                           
g  󰂤  Microsoft bing                    h  󰇩  Microsoft edge                    
i  󰊻  Microsoft teams                   j  󰌀  Microsoft internet explorer       
k  󰍬  Microphone                        l  󰍭  Microphone off                    
m  󰍮  Microphone outline                n  󰍯  Microphone settings               
o  󰍰  Microphone variant                p  󰍱  Microphone variant off            
q  󰍲  Microsoft                         r  󰏆  Microsoft office                  
s  󰏊  Microsoft onedrive                t  󰖳  Microsoft windows                 
u  󰖹  Microsoft xbox                    v  󰖺  Microsoft xbox controller         
w  󰖻  Microsoft xbox controller off     x  󰘐  Microsoft visual studio           
y  󰙔  Microscope                        z  󰝇  Microsoft onenote                 
10 󰝋  Microsoft xbox controller batte…  11 󰝌  Microsoft xbox controller batte…  
12 󰝍  Microsoft xbox controller batte…  13 󰝎  Microsoft xbox controller batte…  
14 󰝏  Microsoft xbox controller batte…  15 󰝐  Microsoft xbox controller batte…  
16 󰟜  Micro sd                          17 󰠅  Microsoft azure                   
18 󰢳  Microphone minus                  19 󰢴  Microphone plus                   
1a 󰦈  Microsoft dynamics 365            1b 󰨞  Microsoft visual studio code      
1c 󰨡  Microsoft windows classic         1d 󰨢  Microsoft xbox controller batte…  
1e 󰲙  Microwave                         1f 󰴢  Microsoft outlook                 
1g 󰹯  Microsoft xbox controller menu    1h 󰹰  Microsoft xbox controller view    
1i 󰿕  Microsoft azure devops            1j 󱎎  Microsoft access                  
1k 󱎏  Microsoft excel                   1l 󱎐  Microsoft powerpoint              
1m 󱎑  Microsoft sharepoint              1n 󱎒  Microsoft word                    
1o 󱐣  Microwave off                     1p 󱦉  Microphone question               
1q 󱦊  Microphone question outline  

Or trying to find any emoji with a “face”, you must now go past Facebook to find it

Search by: Code (F1)  Name (F2)  Emoticons (F3)  Favorites (F4)
Enter words from the name of the character
☹> face
Chosen: ☹ U+2639 White frowning face
Use Tab or arrow keys to choose a character. Type space and . to select by index
0  ☹  White frowning face               1  ☺  White smiling face                
2  ☻  Black smiling face                3  ⚀  Die face-1                        
4  ⚁  Die face-2                        5  ⚂  Die face-3                        
6  ⚃  Die face-4                        7  ⚄  Die face-5                        
8  ⚅  Die face-6                        9  ⾯ Kangxi radical face               
a  〠 Postal mark face                  b    Facebook square                   
c    Facebook                          d    Facebook official                 
e    Facebook                          f    Facebook box                      
g    Facebook messenger                h  ﭂  Face                              
i  𝨇   Signwriting face direction posi…  j  𝨈   Signwriting face direction posi…  
k  𝨉   Signwriting face direction posi…  l  🌚 New moon with face                
m  🌛 First quarter moon with face      n  🌜 Last quarter moon with face       
o  🌝 Full moon with face               p  🌞 Sun with face                     
q  🌬  Wind blowing face                 r  🐭 Mouse face                        
s  🐮 Cow face                          t  🐯 Tiger face                        
u  🐰 Rabbit face                       v  🐱 Cat face                          
w  🐲 Dragon face                       x  🐴 Horse face                        
y  🐵 Monkey face                       z  🐶 Dog face                          
10 🐷 Pig face                          11 🐸 Frog face                         
12 🐹 Hamster face                      13 🐺 Wolf face                         
14 🐻 Bear face                         15 🐼 Panda face                        
16 💆 Face massage                      17 🕐 Clock face one oclock
… + many more
kovidgoyal commented 2 days ago

The character picker has always had nerd font symbols in it, adding a builtin nerd font doesn't change anything except that now those matches actually render the symbols instead of squares. That has no connection with bundling nerd fonts with kitty. If you dont want to see nerd font symbols in the unicode picker the solution would be to add an option to that picker to exclude private use unicode codepoints form the results. I'll be happy to accept a PR for that.

toastal commented 1 day ago

100% agree it / am aware; it just didn’t bother me til I actually had to look at these symbols (previously blank). An option to ignore the codepoints would indeed be good, but if you aren’t using Nerd fonts for the picker or in anything else, then it’s wasted storage to ship the Nerd font dependency.