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

Switch to devicons/devicon #1691

Merged
merged 11 commits into from
Nov 13, 2024
Merged

Switch to devicons/devicon #1691

merged 11 commits into from
Nov 13, 2024

Conversation

Finii
Copy link
Collaborator

@Finii Finii commented Aug 25, 2024

Description

Switch from https://github.com/vorillaz/devicons to https://github.com/devicons/devicon to get more relevant developer icons

Fixes: #615

Requirements / Checklist

  • Read the Contributing Guidelines
  • I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan.
    Issue number where discussion took place: #xxx
  • If this contains a font/glyph add its origin as background info below (e.g. URL)
  • Verified the license of any newly added font, glyph, or glyph set. License is: xxx

What does this Pull Request (PR) do?

  • Change upstream for the Devicons
  • Introduce a codepoint guarantee (as long as icons are not dropped)
  • Create new font from new upstream release with our custom codepoints
  • Also introduces: Glyphs in patched fonts are named after their IDs

How should this be manually tested?

Any background context you can provide?

What are the relevant tickets (if any)?

Fixes: #1693
Fixes: #869
Fixes: #952
Fixes: #999
Fixes: #1114
Fixes: #1493
Fixes: #1565

Screenshots (if appropriate or helpful)

UPDATED 13 Nov 2024

List of icons that got dropped (light blue background) and icons that got updated and look 'very' different now (circled pink).
Also note the icon scales are more uniform now.

image

Old icon set left and part of new icon set right

The complete new set:

image

List of dropped icons (which are replaced by new icons on the now vacant codepoints)

Amount: 75 icons
No replacement suggestion: 44

image

Image of dropped icons

codepoint name comment
E700 bing_small use md F00A4
E701 css_tricks use fa F069
E705 streamline use oct F472
E708 github_alt use fa F113
E70A github 🔴, use fa F113
E713 appstore use fa F0BD
E715 yahoo 🔴, use fa F19E
E71A hackernews use fa F1D4
E71C dojo 🔴
E720 modernizr 🔴
E723 blackberry use fa F117
E72A cssdeck 🔴
E72B yahoo_small use fa F19E
E72C techcrunch 🔴
E72E netmagazine use md F0AAE
E72F codrops 🔴, maybe use one of the 'drops'
E730 phonegap 🔴
E731 google_drive use fa F2DF
E732 html5_multimedia 🔴
E733 html5_device_access 🔴
E734 html5_connectivity 🔴
E735 html5_3d_effects 🔴
E741 joomla use fa F1AA
E74F javascript_shield 🔴
E754 jquery_ui 🔴
E756 symfony no replacement, maybe use dev E757
E75B atlassian updated icon use fa EF32
E75D envato 🔴
E75E snap_svg 🔴
E75F raphael 🔴
E760 chart numerous similar ones
E761 compass 🔴
E762 onedrive use md F03CA
E765 cisco 🔴
E766 nancy 🔴
E76B celluloid 🔴
E76C w3c use fae E212
E76F webplatform 🔴
E771 opensource use logos F36C
E773 uikit use fa ED32
E77A yeoman 🔴
E77C msql_server 🔴
E785 krakenjs use dev E784
E788 sizzlejs 🔴
E789 creativecommons use fa F25E
E78A creativecommons_badge 🔴
E78B mitlicence 🔴
E78C senchatouch 🔴
E78D bugsense 🔴
E78E extjs 🔴
E790 mootools 🔴
E792 komodo 🔴
E793 coda 🔴, use some other leaf
E794 bintray 🔴
E796 code use fa F121
E797 responsive use md F045E
E799 aptana 🔴, maybe use fa F013
E79A mailchimp use fa EE67
E79B netbeans use md F01A7
E79D brackets use md F016A
E7A0 scrum 🔴
E7A2 terminal_badge use fa F120
E7A3 code_badge use cod EAE9
E7AC asterisk 🔴
E7B2 google_cloud_platform 🔴
E7B7 openshift 🔴
E7B9 rackspace 🔴
E7BC scriptcs 🔴
E7BD - 🔴
E7BE - 🔴
E7BF - 🔴
E7C0 - 🔴
E7C1 - 🔴
E7C2 - 🔴
E7C3 - 🔴

Not dropped

codepoint name comment used by default of
E706 database use fa F1C0 nvim-devicons, eza, lazygit, vim-devicons
E707 dropbox use fa F16B nvim-devicons, lazygit, vim-devicons
E72D smashing_magazine 🔴 powerlevel10k
E74E javascript use seti E60C eza, lazygit, exa
E76A clojure_alt use seti E642 nvim-devicons, eza, lazygit, vim-devicons, exa
E770 requirejs 🔴 vim-devicons
E779 gnu maybe use logos F325 nvim-devicons, lazygit, exa, powerlevel10k
E786 mozilla 🔴 devicons
E78F mootools_badge 🔴 vim-devicons
E791 ruby_rough use md F0D2D nvim-devicons, lazygit, vim-devicoins
E795 terminal use oct F489 nvim-devicons, lazygit, vim-devicons
E7AA sublime use seti E696 nvim-devicons, eza, lazygit

@Finii Finii added this to the v3.3.0 milestone Aug 25, 2024
@Finii
Copy link
Collaborator Author

Finii commented Aug 25, 2024

Here a list of which icons will get an update. and which have been dropped in devicons (they have a -).
There are 95 icons dropped and 103 have updates.

# old name                codepoint      new file
bing_small                E700           -
css_tricks                E701           - !
git                       E702           git/git-plain.svg
bitbucket                 E703           bitbucket/bitbucket-original.svg
mysql                     E704           mysql/mysql-original.svg
streamline                E705           -
database                  E706           - !
dropbox                   E707           - !
github_alt                E708           -
github_badge              E709           github/github-original.svg
github                    E70A           -
wordpress                 E70B           wordpress/wordpress-plain.svg
visualstudio              E70C           visualstudio/visualstudio-plain.svg
jekyll_small              E70D           jekyll/jekyll-plain.svg
android                   E70E           android/android-plain.svg
windows                   E70F           windows8/windows8-original.svg
stackoverflow             E710           stackoverflow/stackoverflow-plain.svg
apple                     E711           apple/apple-original.svg
linux                     E712           linux/linux-plain.svg
appstore                  E713           -
ghost_small               E714           ghost/ghost-original.svg
yahoo                     E715           -
codepen                   E716           codepen/codepen-original.svg
github_full               E717           github/github-original-wordmark.svg
nodejs_small              E718           nodejs/nodejs-plain.svg
nodejs                    E719           nodejs/nodejs-plain-wordmark.svg
hackernews                E71A           - !
ember                     E71B           ember/ember-plain.svg (change from wordmark)
dojo                      E71C           -
django                    E71D           django/django-plain.svg (change from wordmark)
npm                       E71E           npm/npm-original-wordmark.svg
ghost                     E71F           ghost/ghost-original-wordmark.svg
modernizr                 E720           -
unity_small               E721           unity/unity-plain.svg
rasberry_pi               E722           raspberrypi/raspberrypi-plain.svg
blackberry                E723           -
go                        E724           go/go-line.svg
git_branch                E725           - !
git_pull_request          E726           - !
git_merge                 E727           - !
git_compare               E728           - !
git_commit                E729           - !
cssdeck                   E72A           -
yahoo_small               E72B           -
techcrunch                E72C           -
smashing_magazine         E72D           -
netmagazine               E72E           -
codrops                   E72F           -
phonegap                  E730           -
google_drive              E731           - !
html5_multimedia          E732           - ?
html5_device_access       E733           - ?
html5_connectivity        E734           - ?
html5_3d_effects          E735           - ?
html5                     E736           html5/html5-plain.svg
scala                     E737           scala/scala-plain.svg
java                      E738           java/java-plain.svg
ruby                      E739           ruby/ruby-plain.svg
ubuntu                    E73A           ubuntu/ubuntu-plain.svg
ruby_on_rails             E73B           rails/rails-plain.svg
python                    E73C           python/python-plain.svg
php                       E73D           php/php-plain.svg
markdown                  E73E           markdown/markdown-original.svg
laravel                   E73F           laravel/laravel-original.svg
magento                   E740           magento/magento-original.svg
joomla                    E741           -
drupal                    E742           drupal/drupal-plain.svg
chrome                    E743           chrome/chrome-plain.svg
ie                        E744           ie10/ie10-original.svg
firefox                   E745           firefox/firefox-plain.svg
opera                     E746           opera/opera-plain.svg
bootstrap                 E747           bootstrap/bootstrap-plain.svg
safari                    E748           safari/safari-plain.svg
css3                      E749           css3/css3-plain.svg
css3_full                 E74A           css3/css3-plain-wordmark.svg
sass                      E74B           sass/sass-original.svg
grunt                     E74C           grunt/grunt-line.svg
bower                     E74D           bower/bower-line.svg
javascript                E74E           -
javascript_shield         E74F           -
jquery                    E750           jquery/jquery-plain.svg
coffeescript              E751           coffeescript/coffeescript-original.svg
backbone                  E752           backbonejs/backbonejs-plain.svg
angular                   E753           angular/angular-plain.svg
jquery_ui                 E754           -
swift                     E755           swift/swift-plain.svg
symfony                   E756           -
symfony_badge             E757           symfony/symfony-original.svg
less                      E758           less/less-plain-wordmark.svg
stylus                    E759           stylus/stylus-original.svg
trello                    E75A           trello/trello-plain.svg
atlassian                 E75B           -
jira                      E75C           jira/jira-plain.svg
envato                    E75D           -
snap_svg                  E75E           -
raphael                   E75F           -
chart                     E760           -
compass                   E761           -
onedrive                  E762           -
gulp                      E763           gulp/gulp-plain.svg
atom                      E764           atom/atom-original.svg
cisco                     E765           -
nancy                     E766           -
jenkins                   E767           jenkins/jenkins-plain.svg
clojure                   E768           clojure/clojure-line.svg
perl                      E769           perl/perl-plain.svg
clojure_alt               E76A           - ?
celluloid                 E76B           -
w3c                       E76C           -
redis                     E76D           redis/redis-plain.svg
postgresql                E76E           postgresql/postgresql-plain.svg
webplatform               E76F           -
requirejs                 E770           -
opensource                E771           -
typo3                     E772           typo3/typo3-original.svg
uikit                     E773           -
doctrine                  E774           doctrine/doctrine-plain.svg
groovy                    E775           groovy/groovy-plain.svg
nginx                     E776           nginx/nginx-original.svg
haskell                   E777           haskell/haskell-plain.svg
zend                      E778           zend/zend-original.svg
gnu                       E779           -
yeoman                    E77A           -
heroku                    E77B           heroku/heroku-plain.svg
msql_server               E77C           -
debian                    E77D           debian/debian-plain.svg
travis                    E77E           travis/travis-plain.svg
dotnet                    E77F           dot-net/dot-net-plain.svg
codeigniter               E780           codeigniter/codeigniter-plain.svg
javascript_badge          E781           javascript/javascript-plain.svg
yii                       E782           yii/yii-plain.svg
composer                  E783           composer/composer-line.svg
krakenjs_badge            E784           krakenjs/krakenjs-plain.svg
krakenjs                  E785           -
mozilla                   E786           -
firebase                  E787           firebase/firebase-plain.svg
sizzlejs                  E788           -
creativecommons           E789           - ?
creativecommons_badge     E78A           -
mitlicence                E78B           -
senchatouch               E78C           -
bugsense                  E78D           -
extjs                     E78E           -
mootools_badge            E78F           -
mootools                  E790           -
ruby_rough                E791           -
komodo                    E792           -
coda                      E793           -
bintray                   E794           -
terminal                  E795           - ?
code                      E796           - ?
responsive                E797           -
dart                      E798           dart/dart-plain.svg
aptana                    E799           -
mailchimp                 E79A           -
netbeans                  E79B           -
dreamweaver               E79C           dreamweaver/dreamweaver-plain.svg
brackets                  E79D           -
eclipse                   E79E           eclipse/eclipse-plain.svg
cloud9                    E79F           -
scrum                     E7A0           -
prolog                    E7A1           prolog/prolog-plain.svg
terminal_badge            E7A2           - ?
code_badge                E7A3           - ?
mongodb                   E7A4           mongodb/mongodb-plain.svg
meteor                    E7A5           meteor/meteor-plain.svg
meteorfull                E7A6           meteor/meteor-plain-wordmark.svg
fsharp                    E7A7           fsharp/fsharp-plain.svg
rust                      E7A8           rust/rust-original.svg
ionic                     E7A9           ionic/ionic-original.svg
sublime                   E7AA           -
appcelerator              E7AB           appcelerator/appcelerator-original.svg
asterisk                  E7AC           -
aws                       E7AD           amazonwebservices/amazonwebservices-plain-wordmark.svg
digital_ocean             E7AE           digitalocean/digitalocean-original.svg
dlang                     E7AF           - !
docker                    E7B0           docker/docker-plain.svg
erlang                    E7B1           erlang/erlang-plain.svg
google_cloud_platform     E7B2           -
grails                    E7B3           grails/grails-plain.svg
illustrator               E7B4           illustrator/illustrator-plain.svg
intellij                  E7B5           intellij/intellij-plain.svg
materializecss            E7B6           materializecss/materializecss-plain.svg
openshift                 E7B7           -
photoshop                 E7B8           photoshop/photoshop-plain.svg
rackspace                 E7B9           -
react                     E7BA           react/react-original.svg
redhat                    E7BB           redhat/redhat-plain.svg
scriptcs                  E7BC           -
-                         E7BD           -
-                         E7BE           -
-                         E7BF           -
-                         E7C0           -
-                         E7C1           -
-                         E7C2           -
-                         E7C3           -
sqllite                   E7C4           sqlite/sqlite-plain.svg
vim                       E7C5           vim/vim-plain.svg

I marked some with a - ! where I think it could be good to still keep the old/dropped icon because people might miss it.
Marked with - ? when I'm not sure if that should be a - !.

@Finii Finii changed the title Switch to devisons/devicon Switch to devicons/devicon Aug 25, 2024
@Finii Finii force-pushed the feature/update-devicons branch from 0611917 to 71e7ae0 Compare August 25, 2024 15:47
@Finii Finii force-pushed the feature/update-devicons branch 4 times, most recently from a538e34 to 914111f Compare August 27, 2024 13:20
@Finii
Copy link
Collaborator Author

Finii commented Aug 27, 2024

Here a visual of which icons got dropped upstream (i.e. were in Vorillaz but are not in Devicons/Devicon) marked with blue, and the existing icons updated to Devicons/Devicon.

image

Dropped icons often are in another set, so the impact is not too bad (e.g. Dropbox, Hackernews, ...)
The other dropped icons are presumably not important nowadays or dead. 🤞

All the vacant codepoints are now used to fill in new icons; so that we have no gaps and still all icons of Devicons v2.16.0:

Side by side:

image

And all:

image

Some svgs taken from Devicons/Devicon had a problem, that I fixed, and also added a non-wordmark awk icon that is used (Devicons has only wordmark icons for awk):

image

As I write this I already notice some more problems that I will fix and force-push away soon.

Ping to @Snailedlt, discussions if needed can be better done here

@Finii Finii force-pushed the feature/update-devicons branch from 914111f to d0b135a Compare August 27, 2024 14:21
@Snailedlt
Copy link

Great work!
If you want any of the icons to be fixed upstream (a.k.a in the devicons repo), feel free to make issues or PRs there and tag me in them. I'll prioritize those over others

@Finii
Copy link
Collaborator Author

Finii commented Sep 5, 2024

Backport improved fixed icons from PRs in devicons/devicon; force push.

@Finii
Copy link
Collaborator Author

Finii commented Sep 5, 2024

List of dropped icons, their codepoints are reused for new icons.
Amount: 88 icons
No replacement suggestion: 48

image

codepoint name comment used by default of
E700 bing_small use md F00A4
E701 css_tricks use fa F069
E705 streamline use oct F472
E708 github_alt use fa F113
E70A github 🔴, use fa F113
E713 appstore use fa F0BD
E715 yahoo 🔴, use fa F19E
E71A hackernews use fa F1D4
E71C dojo 🔴
E720 modernizr 🔴
E723 blackberry use fa F117
E72A cssdeck 🔴
E72B yahoo_small use fa F19E
E72C techcrunch 🔴
E72E netmagazine use md F0AAE
E72F codrops 🔴, maybe use one of the 'drops'
E730 phonegap 🔴
E731 google_drive use fa F2DF
E732 html5_multimedia 🔴
E733 html5_device_access 🔴
E734 html5_connectivity 🔴
E735 html5_3d_effects 🔴
E741 joomla use fa F1AA
E74F javascript_shield 🔴
E754 jquery_ui 🔴
E756 symfony no replacement, maybe use dev E757
E75B atlassian updated icon use fa EF32
E75D envato 🔴
E75E snap_svg 🔴
E75F raphael 🔴
E760 chart numerous similar ones
E761 compass 🔴
E762 onedrive use md F03CA
E765 cisco 🔴
E766 nancy 🔴
E76B celluloid 🔴
E76C w3c use fae E212
E76F webplatform 🔴
E771 opensource use logos F36C
E773 uikit use fa ED32
E77A yeoman 🔴
E77C msql_server 🔴
E785 krakenjs use dev E784
E788 sizzlejs 🔴
E789 creativecommons use fa F25E
E78A creativecommons_badge 🔴
E78B mitlicence 🔴
E78C senchatouch 🔴
E78D bugsense 🔴
E78E extjs 🔴
E790 mootools 🔴
E792 komodo 🔴
E793 coda 🔴, use some other leaf
E794 bintray 🔴
E796 code use fa F121
E797 responsive use md F045E
E799 aptana 🔴, maybe use fa F013
E79A mailchimp use fa EE67
E79B netbeans use md F01A7
E79D brackets use md F016A
E79F cloud9 🔴, use some cloud
E7A0 scrum 🔴
E7A2 terminal_badge use fa F120
E7A3 code_badge use cod EAE9
E7AC asterisk 🔴
E7B2 google_cloud_platform 🔴
E7B7 openshift 🔴
E7B9 rackspace 🔴
E7BC scriptcs 🔴
E7BD - 🔴
E7BE - 🔴
E7BF - 🔴
E7C0 - 🔴
E7C1 - 🔴
E7C2 - 🔴
E7C3 - 🔴

Not dropped

codepoint name comment used by default of
E706 database use fa F1C0 nvim-devicons, eza, lazygit, vim-devicons
E707 dropbox use fa F16B nvim-devicons, lazygit, vim-devicons
E72D smashing_magazine 🔴 powerlevel10k
E74E javascript use seti E60C eza, lazygit, exa
E76A clojure_alt use seti E642 nvim-devicons, eza, lazygit, vim-devicons, exa
E770 requirejs 🔴 vim-devicons
E779 gnu maybe use logos F325 nvim-devicons, lazygit, exa, powerlevel10k
E786 mozilla 🔴 devicons
E78F mootools_badge 🔴 vim-devicons
E791 ruby_rough use md F0D2D nvim-devicons, lazygit, vim-devicoins
E795 terminal use oct F489 nvim-devicons, lazygit, vim-devicons
E7AA sublime use seti E696 nvim-devicons, eza, lazygit

@hasecilu
Copy link
Contributor

hasecilu commented Sep 5, 2024

This looks amazing, great job!

Just few notes:

  • E771 opensource -> you can use  nf_linux_osi at F36C
  • E779 gnu -> even though it could be a good fit on font linux, already is a "popular" glyph that is widely used on lot of places for example lazygit, nvim-web-devicons (Vim/Neovim), powerlevel10k, eza, etc. I can already see some people opening issues because the glyph is not there. Search on GitHub. So, I would recommend to include it again on devicons repo in order to not change the used codepoint. @Snailedlt, do you think it's a good fit on devicons?

@Finii
Copy link
Collaborator Author

Finii commented Sep 6, 2024

Thanks a lot @hasecilu !!

* `E771` _opensource_

Ah, thank you!

* `E779` _gnu_

[...]
is a "popular" glyph that is widely used on lot of places

I guess instead of adding it (back) to devicons/devicons I can just keep it, as the other few I already identified as 'must be kept' in the https://github.com/ryanoasis/nerd-fonts/tree/feature/update-devicons/src/glyphs/devicons/vorillaz directory (i.e. some git and dlang).
If you have any more we should keep, just tell me :-)

I change the entries in the table above.

@Finii
Copy link
Collaborator Author

Finii commented Sep 6, 2024

Made this small script to create a nice regex and will git grep the repos you mentioned...

#!/usr/bin/bash

ICONS=( E700 E701 E705 E706 E707 E708 E70A E713 E715 E71A E71C E720 E723 E72A E72B E72C E72D E72E E72F E730 E731 E732 E733 E734 E735 E741 E74E E74F E754 E756 E75B E75D E75E E75F E760 E761 E762 E765 E766 E76A E76B E76C E76F E770 E771 E773 E779 E77A E77C E785 E786 E788 E789 E78A E78B E78C E78D E78E E78F E790 E791 E792 E793 E794 E795 E796 E797 E799 E79A E79B E79D E79F E7A0 E7A2 E7A3 E7AA E7AC E7B2 E7B7 E7B9 E7BC E7BD E7BE E7BF E7C0 E7C1 E7C2 E7C3)

printf "["
for i in "${ICONS[@]}"; do
    printf "\u${i}"
done
printf "]"

for i in "${ICONS[@]}"; do
    j=$(echo "${i}" | tr '[:upper:]' '[:lower:]')
    printf "\\|%s\\|%s" "${i}" "${j}"
done

Above: regex.sh

image

Of course there are false positives etc, but I will collect some more data on which icons are used by default!

image

git grep "$(../regex.sh)" |  sed "s/.*\($(../regex.sh)\).*/\1/" | LC_ALL=C sort | uniq
nvim-web-devicons:
e706 e707 e76a e779 e786 e791 e795 e7aa

eza:
e706 e74e e76a e7aa

lazygit:
e706 e707 e74e e76a e779 e791 e795 e7aa

powerlevel10k:
e72d e779

vim-webdevicons:
e706 e707 e76a e770 e78f e791 e795

exa:
e74e e76a e779

ohmyzsh:
none

@Finii
Copy link
Collaborator Author

Finii commented Sep 6, 2024

@hasecilu

Thanks again for the valuable comment 💚

I guess I will just keep all the icons that I found in some default config.
Maybe you have more ideas for repos to examine?

In some moments I think maybe we should not drop any icon and just update and add new ones.
Although some are really really obsolete 😬

@Finii Finii force-pushed the feature/update-devicons branch from 707dd49 to fca2b21 Compare September 6, 2024 10:35
@Finii
Copy link
Collaborator Author

Finii commented Sep 6, 2024

image

image

Force push.

@Finii Finii force-pushed the feature/update-devicons branch from fca2b21 to 28b38cf Compare September 6, 2024 11:21
@Finii
Copy link
Collaborator Author

Finii commented Sep 6, 2024

As the old Vorillaz icons are unsupported, checked all those (that we keep) and only dropbox needs an update:

image

Force push.

[how]

    $ ./analyze
    Found 198 mapping entries and 473 devicon directories
    # SVG change: code: E602 name: git, old: vorillaz/git.svg, new: git/git-plain.svg
    # SVG change: code: E603 name: bitbucket, old: vorillaz/bitbucket.svg, new: bitbucket/bitbucket-original.svg
    # SVG change: code: E604 name: mysql, old: vorillaz/mysql.svg, new: mysql/mysql-original.svg
    # SVG change: code: E609 name: github_badge, old: vorillaz/github_badge.svg, new: github/github-original.svg
    # SVG change: code: E60B name: wordpress, old: vorillaz/wordpress.svg, new: wordpress/wordpress-plain.svg
    # SVG change: code: E60C name: visualstudio, old: vorillaz/visualstudio.svg, new: visualstudio/visualstudio-plain.svg
    # SVG change: code: E60D name: jekyll, old: vorillaz/jekyll_small.svg, new: jekyll/jekyll-plain.svg
    # SVG change: code: E60E name: android, old: vorillaz/android.svg, new: android/android-plain.svg
    # SVG change: code: E60F name: windows, old: vorillaz/windows.svg, new: windows8/windows8-original.svg
    # SVG change: code: E610 name: stackoverflow, old: vorillaz/stackoverflow.svg, new: stackoverflow/stackoverflow-plain.svg
    # SVG change: code: E611 name: apple, old: vorillaz/apple.svg, new: apple/apple-original.svg
    # SVG change: code: E612 name: linux, old: vorillaz/linux.svg, new: linux/linux-plain.svg
    # SVG change: code: E614 name: ghost_small, old: vorillaz/ghost_small.svg, new: ghost/ghost-original.svg
    # SVG change: code: E616 name: codepen, old: vorillaz/codepen.svg, new: codepen/codepen-original.svg
    # SVG change: code: E617 name: github_full, old: vorillaz/github_full.svg, new: github/github-original-wordmark.svg
    # SVG change: code: E618 name: nodejs_small, old: vorillaz/nodejs_small.svg, new: nodejs/nodejs-plain.svg
    # SVG change: code: E619 name: nodejs, old: vorillaz/nodejs.svg, new: nodejs/nodejs-plain-wordmark.svg
    # SVG change: code: E61B name: ember, old: vorillaz/ember.svg, new: ember/ember-plain.svg
    # SVG change: code: E61D name: django, old: vorillaz/django.svg, new: django/django-plain.svg
    # SVG change: code: E61E name: npm, old: vorillaz/npm.svg, new: npm/npm-original-wordmark.svg
    # SVG change: code: E61F name: ghost, old: vorillaz/ghost.svg, new: ghost/ghost-original-wordmark.svg
    # SVG change: code: E621 name: unity, old: vorillaz/unity_small.svg, new: unity/unity-plain.svg
    # SVG change: code: E622 name: raspberry_pi, old: vorillaz/rasberry_pi.svg, new: raspberrypi/raspberrypi-plain.svg
    # SVG change: code: E624 name: go, old: vorillaz/go.svg, new: go/go-line.svg
    # SVG change: code: E636 name: html5, old: vorillaz/html5.svg, new: html5/html5-plain.svg
    # SVG change: code: E637 name: scala, old: vorillaz/scala.svg, new: scala/scala-plain.svg
    # SVG change: code: E638 name: java, old: vorillaz/java.svg, new: java/java-plain.svg
    # SVG change: code: E639 name: ruby, old: vorillaz/ruby.svg, new: ruby/ruby-plain.svg
    # SVG change: code: E63A name: ubuntu, old: vorillaz/ubuntu.svg, new: ubuntu/ubuntu-plain.svg
    # SVG change: code: E63B name: rails, old: vorillaz/ruby_on_rails.svg, new: rails/rails-plain.svg
    # SVG change: code: E63C name: python, old: vorillaz/python.svg, new: python/python-plain.svg
    # SVG change: code: E63D name: php, old: vorillaz/php.svg, new: php/php-plain.svg
    # SVG change: code: E63E name: markdown, old: vorillaz/markdown.svg, new: markdown/markdown-original.svg
    # SVG change: code: E63F name: laravel, old: vorillaz/laravel.svg, new: laravel/laravel-original.svg
    # SVG change: code: E640 name: magento, old: vorillaz/magento.svg, new: magento/magento-original.svg
    # SVG change: code: E642 name: drupal, old: vorillaz/drupal.svg, new: drupal/drupal-plain.svg
    # SVG change: code: E643 name: chrome, old: vorillaz/chrome.svg, new: chrome/chrome-plain.svg
    # SVG change: code: E644 name: ie, old: vorillaz/ie.svg, new: ie10/ie10-original.svg
    # SVG change: code: E645 name: firefox, old: vorillaz/firefox.svg, new: firefox/firefox-plain.svg
    # SVG change: code: E646 name: opera, old: vorillaz/opera.svg, new: opera/opera-plain.svg
    # SVG change: code: E647 name: bootstrap, old: vorillaz/bootstrap.svg, new: bootstrap/bootstrap-plain.svg
    # SVG change: code: E648 name: safari, old: vorillaz/safari.svg, new: safari/safari-plain.svg
    # SVG change: code: E649 name: css3, old: vorillaz/css3.svg, new: css3/css3-plain.svg
    # SVG change: code: E64A name: css3_full, old: vorillaz/css3_full.svg, new: css3/css3-plain-wordmark.svg
    # SVG change: code: E64B name: sass, old: vorillaz/sass.svg, new: sass/sass-original.svg
    # SVG change: code: E64C name: grunt, old: vorillaz/grunt.svg, new: grunt/grunt-line.svg
    # SVG change: code: E64D name: bower, old: vorillaz/bower.svg, new: bower/bower-line.svg
    # SVG change: code: E650 name: jquery, old: vorillaz/jquery.svg, new: jquery/jquery-plain.svg
    # SVG change: code: E651 name: coffeescript, old: vorillaz/coffeescript.svg, new: coffeescript/coffeescript-original.svg
    # SVG change: code: E652 name: backbonejs, old: vorillaz/backbone.svg, new: backbonejs/backbonejs-plain.svg
    # SVG change: code: E653 name: angular, old: vorillaz/angular.svg, new: angular/angular-plain.svg
    # SVG change: code: E655 name: swift, old: vorillaz/swift.svg, new: swift/swift-plain.svg
    # SVG change: code: E657 name: symfony_badge, old: vorillaz/symfony_badge.svg, new: symfony/symfony-original.svg
    # SVG change: code: E658 name: less, old: vorillaz/less.svg, new: less/less-plain-wordmark.svg
    # SVG change: code: E659 name: stylus, old: vorillaz/stylus.svg, new: stylus/stylus-original.svg
    # SVG change: code: E65A name: trello, old: vorillaz/trello.svg, new: trello/trello-plain.svg
    # SVG change: code: E65C name: jira, old: vorillaz/jira.svg, new: jira/jira-plain.svg
    # SVG change: code: E663 name: gulp, old: vorillaz/gulp.svg, new: gulp/gulp-plain.svg
    # SVG change: code: E664 name: atom, old: vorillaz/atom.svg, new: atom/atom-original.svg
    # SVG change: code: E667 name: jenkins, old: vorillaz/jenkins.svg, new: jenkins/jenkins-line.svg
    # SVG change: code: E668 name: clojure, old: vorillaz/clojure.svg, new: clojure/clojure-line.svg
    # SVG change: code: E669 name: perl, old: vorillaz/perl.svg, new: perl/perl-plain.svg
    # SVG change: code: E66D name: redis, old: vorillaz/redis.svg, new: redis/redis-plain.svg
    # SVG change: code: E66E name: postgresql, old: vorillaz/postgresql.svg, new: postgresql/postgresql-plain.svg
    # SVG change: code: E672 name: typo3, old: vorillaz/typo3.svg, new: typo3/typo3-original.svg
    # SVG change: code: E674 name: doctrine, old: vorillaz/doctrine.svg, new: doctrine/doctrine-plain.svg
    # SVG change: code: E675 name: groovy, old: vorillaz/groovy.svg, new: groovy/groovy-plain.svg
    # SVG change: code: E676 name: nginx, old: vorillaz/nginx.svg, new: nginx/nginx-original.svg
    # SVG change: code: E677 name: haskell, old: vorillaz/haskell.svg, new: haskell/haskell-plain.svg
    # SVG change: code: E678 name: zend, old: vorillaz/zend.svg, new: zend/zend-original.svg
    # SVG change: code: E67B name: heroku, old: vorillaz/heroku.svg, new: heroku/heroku-plain.svg
    # SVG change: code: E67D name: debian, old: vorillaz/debian.svg, new: debian/debian-plain.svg
    # SVG change: code: E67E name: travis, old: vorillaz/travis.svg, new: travis/travis-plain.svg
    # SVG change: code: E67F name: dotnet, old: vorillaz/dotnet.svg, new: dot-net/dot-net-plain.svg
    # SVG change: code: E680 name: codeigniter, old: vorillaz/codeigniter.svg, new: codeigniter/codeigniter-plain.svg
    # SVG change: code: E681 name: javascript_badge, old: vorillaz/javascript_badge.svg, new: javascript/javascript-plain.svg
    # SVG change: code: E682 name: yii, old: vorillaz/yii.svg, new: yii/yii-plain.svg
    # SVG change: code: E683 name: composer, old: vorillaz/composer.svg, new: composer/composer-line.svg
    # SVG change: code: E684 name: krakenjs_badge, old: vorillaz/krakenjs_badge.svg, new: krakenjs/krakenjs-plain.svg
    # SVG change: code: E687 name: firebase, old: vorillaz/firebase.svg, new: firebase/firebase-plain.svg
    # SVG change: code: E698 name: dart, old: vorillaz/dart.svg, new: dart/dart-plain.svg
    # SVG change: code: E69C name: dreamweaver, old: vorillaz/dreamweaver.svg, new: dreamweaver/dreamweaver-plain.svg
    # SVG change: code: E69E name: eclipse, old: vorillaz/eclipse.svg, new: eclipse/eclipse-plain.svg
    # SVG change: code: E6A1 name: prolog, old: vorillaz/prolog.svg, new: prolog/prolog-plain.svg
    # SVG change: code: E6A4 name: mongodb, old: vorillaz/mongodb.svg, new: mongodb/mongodb-plain.svg
    # SVG change: code: E6A5 name: meteor, old: vorillaz/meteor.svg, new: meteor/meteor-plain.svg
    # SVG change: code: E6A6 name: meteorfull, old: vorillaz/meteorfull.svg, new: meteor/meteor-plain-wordmark.svg
    # SVG change: code: E6A7 name: fsharp, old: vorillaz/fsharp.svg, new: fsharp/fsharp-plain.svg
    # SVG change: code: E6A8 name: rust, old: vorillaz/rust.svg, new: rust/rust-original.svg
    # SVG change: code: E6A9 name: ionic, old: vorillaz/ionic.svg, new: ionic/ionic-original.svg
    # SVG change: code: E6AB name: appcelerator, old: vorillaz/appcelerator.svg, new: appcelerator/appcelerator-original.svg
    # SVG change: code: E6AD name: amazonwebservices, old: vorillaz/aws.svg, new: amazonwebservices/amazonwebservices-plain-wordmark.svg
    # SVG change: code: E6AE name: digitalocean, old: vorillaz/digital_ocean.svg, new: digitalocean/digitalocean-original.svg
    # SVG change: code: E6B0 name: docker, old: vorillaz/docker.svg, new: docker/docker-plain.svg
    # SVG change: code: E6B1 name: erlang, old: vorillaz/erlang.svg, new: erlang/erlang-plain.svg
    # SVG change: code: E6B3 name: grails, old: vorillaz/grails.svg, new: grails/grails-plain.svg
    # SVG change: code: E6B4 name: illustrator, old: vorillaz/illustrator.svg, new: illustrator/illustrator-plain.svg
    # SVG change: code: E6B5 name: intellij, old: vorillaz/intellij.svg, new: intellij/intellij-plain.svg
    # SVG change: code: E6B6 name: materializecss, old: vorillaz/materializecss.svg, new: materializecss/materializecss-plain.svg
    # SVG change: code: E6B8 name: photoshop, old: vorillaz/photoshop.svg, new: photoshop/photoshop-plain.svg
    # SVG change: code: E6BA name: react, old: vorillaz/react.svg, new: react/react-original.svg
    # SVG change: code: E6BB name: redhat, old: vorillaz/redhat.svg, new: redhat/redhat-plain.svg
    # SVG change: code: E6C4 name: sqlite, old: vorillaz/sqllite.svg, new: sqlite/sqlite-plain.svg
    # SVG change: code: E6C5 name: vim, old: vorillaz/vim.svg, new: vim/vim-plain.svg

    # Icon dropped: code: E600 name: bing_small
    # Icon dropped: code: E601 name: css_tricks
    # Icon dropped: code: E605 name: streamline
    # Icon dropped: code: E608 name: github_alt
    # Icon dropped: code: E60A name: github
    # Icon dropped: code: E613 name: appstore
    # Icon dropped: code: E615 name: yahoo
    # Icon dropped: code: E61A name: hackernews
    # Icon dropped: code: E61C name: dojo
    # Icon dropped: code: E620 name: modernizr
    # Icon dropped: code: E623 name: blackberry
    # Icon dropped: code: E62A name: cssdeck
    # Icon dropped: code: E62B name: yahoo_small
    # Icon dropped: code: E62C name: techcrunch
    # Icon dropped: code: E62E name: netmagazine
    # Icon dropped: code: E62F name: codrops
    # Icon dropped: code: E630 name: phonegap
    # Icon dropped: code: E631 name: google_drive
    # Icon dropped: code: E632 name: html5_multimedia
    # Icon dropped: code: E633 name: html5_device_access
    # Icon dropped: code: E634 name: html5_connectivity
    # Icon dropped: code: E635 name: html5_3d_effects
    # Icon dropped: code: E641 name: joomla
    # Icon dropped: code: E64F name: javascript_shield
    # Icon dropped: code: E654 name: jquery_ui
    # Icon dropped: code: E656 name: symfony
    # Icon dropped: code: E65B name: atlassian
    # Icon dropped: code: E65D name: envato
    # Icon dropped: code: E65E name: snap_svg
    # Icon dropped: code: E65F name: raphael
    # Icon dropped: code: E660 name: chart
    # Icon dropped: code: E661 name: compass
    # Icon dropped: code: E662 name: onedrive
    # Icon dropped: code: E665 name: cisco
    # Icon dropped: code: E666 name: nancy
    # Icon dropped: code: E66B name: celluloid
    # Icon dropped: code: E66C name: w3c
    # Icon dropped: code: E66F name: webplatform
    # Icon dropped: code: E671 name: opensource
    # Icon dropped: code: E673 name: uikit
    # Icon dropped: code: E67A name: yeoman
    # Icon dropped: code: E67C name: msql_server
    # Icon dropped: code: E685 name: krakenjs
    # Icon dropped: code: E688 name: sizzlejs
    # Icon dropped: code: E689 name: creativecommons
    # Icon dropped: code: E68A name: creativecommons_badge
    # Icon dropped: code: E68B name: mitlicence
    # Icon dropped: code: E68C name: senchatouch
    # Icon dropped: code: E68D name: bugsense
    # Icon dropped: code: E68E name: extjs
    # Icon dropped: code: E690 name: mootools
    # Icon dropped: code: E692 name: komodo
    # Icon dropped: code: E693 name: coda
    # Icon dropped: code: E694 name: bintray
    # Icon dropped: code: E696 name: code
    # Icon dropped: code: E697 name: responsive
    # Icon dropped: code: E699 name: aptana
    # Icon dropped: code: E69A name: mailchimp
    # Icon dropped: code: E69B name: netbeans
    # Icon dropped: code: E69D name: brackets
    # Icon dropped: code: E69F name: cloud9
    # Icon dropped: code: E6A0 name: scrum
    # Icon dropped: code: E6A2 name: terminal_badge
    # Icon dropped: code: E6A3 name: code_badge
    # Icon dropped: code: E6AC name: asterisk
    # Icon dropped: code: E6B2 name: google_cloud_platform
    # Icon dropped: code: E6B7 name: openshift
    # Icon dropped: code: E6B9 name: rackspace
    # Icon dropped: code: E6BC name: scriptcs
    # Icon dropped: code: E6BD name: -
    # Icon dropped: code: E6BE name: -
    # Icon dropped: code: E6BF name: -
    # Icon dropped: code: E6C0 name: -
    # Icon dropped: code: E6C1 name: -
    # Icon dropped: code: E6C2 name: -
    # Icon dropped: code: E6C3 name: -

    Generated new mapping with 496 entries

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
Some entries are only needed to adapt the Vorillaz Devicons to the
Devicons Devicon. After the mapping file has been adapted we can remove
them to clean up for coming updates.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
The fixed icons have been improved and suggested as fixes upstream.
The improvements were missing here.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
@Finii
Copy link
Collaborator Author

Finii commented Nov 13, 2024

So, lets re-start this ;-)

Doing patched, noticing:

fontforge ../font-patcher --complete ../src/unpatched-fonts/NerdFontsSymbolsOnly/NerdFontsSymbolsNerdFontBlank.sfd -ext ttf --mono


WARNING: Scaled glyph E7BF wider than one monospace width (2128 / 2048 (overlap None))
WARNING: Scaled glyph E7C0 wider than one monospace width (2134 / 2048 (overlap None))
WARNING: Scaled glyph E7C2 wider than one monospace width (2204 / 2048 (overlap None))
fontforge ../font-patcher --complete ../src/unpatched-fonts/CascadiaCode/Regular/CascadiaCode-Regular-vtt.ttf --mono

WARNING: Scaled glyph E7BD wider than one monospace width (1393 / 1200 (overlap None))
WARNING: Scaled glyph E7BE wider than one monospace width (1386 / 1200 (overlap None))
WARNING: Scaled glyph E7BF wider than one monospace width (1471 / 1200 (overlap None))
WARNING: Scaled glyph E7C0 wider than one monospace width (1475 / 1200 (overlap None))
WARNING: Scaled glyph E7C1 wider than one monospace width (1410 / 1200 (overlap None))
WARNING: Scaled glyph E7C2 wider than one monospace width (1524 / 1200 (overlap None))
WARNING: Scaled glyph E7C3 wider than one monospace width (1387 / 1200 (overlap None))

image
Caskaydia Nerd Font Mono

Fixed

@Finii
Copy link
Collaborator Author

Finii commented Nov 13, 2024

The scaling...

Mono is of course all maxed out in the 'cell'.
Here an image of the Nerd Font variant. Some icons are a bit smaller, some are bigger, but mostly not by much.
The main reason is that the new icons are much more consistent in size; while the old icons spanned from rather small to very big. Now everything is more or less lined up:

image

Left: old icons, right: updated icons

Note how extraordinary big JS was before, while Ionic is rather small in comparison to all others.
In the new font JS got smaller and Ionic bigger, so now they are comparably big.

@Finii Finii force-pushed the feature/update-devicons branch from ef6bf1b to b7706da Compare November 13, 2024 17:55
@Finii Finii marked this pull request as ready for review November 13, 2024 17:55
@hasecilu
Copy link
Contributor

@Finii what do you think on the change I proposed above for nginx glyph? Could be associated to nginx.conf file and would be easier to identify.

@Finii
Copy link
Collaborator Author

Finii commented Nov 13, 2024

Ah it's you @hasecilu (you changed your avatar), yes, will check. Try to get this bloody release out asap ;-) Well, at least working continuously on it.

A problem I have with modifying the icons here relative to upstream is of course ... it diverges then.

But I will look later and keep you updated 👍

Icon additions is the next thing after this PR, the the fonts, then release 😬

@Finii
Copy link
Collaborator Author

Finii commented Nov 13, 2024

Script to come up with a changed icons NAME list from a codepoint list in a file:

$ for f in `cat ~/dropped`; do
echo "$f    $(jq -r "to_entries[] | select(.value.code // \"\"|ascii_upcase == \"$f\")|.key" glyphnames.json)"
done

@Finii Finii force-pushed the feature/update-devicons branch from b7706da to fa2e6ae Compare November 13, 2024 23:14
@Finii
Copy link
Collaborator Author

Finii commented Nov 13, 2024

nginx

image

image

Hmm, they have rounded corners, also the distance from the N to the border of the hexaeder seems different.

image

... using their original icon thing to come up with an improved icon:

@Finii
Copy link
Collaborator Author

Finii commented Nov 13, 2024

That forcepush was bad, correcting

[why]
Plain icon is missing but would be better than the wordmark icon.

[how]
Add plain icon, taken from their website.

[note]
Similar (but slightly different svg) to
devicons/devicon#2291

Suggested-by: hasecilu
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
    $ ./generate
    Program root: /usr

    Reading mapping file
    Found 496 entries

    Unpacking Devicons archive

    Mixing Vorillaz Devicons and possible fixes in
    Found 1688 svgs
    Bad RGB color spec: rgb(0%,0%,0%)
    Bad RGB color spec: rgb(0%,0%,0%)
    Bad RGB color spec: rgb(0%,0%,0%)
    Bad RGB color spec: rgb(0%,0%,0%)
    Using fixed svg for angularjs-plain.svg
    Using fixed svg for awk-plain.svg
    Bad RGB color spec: rgb(0%,0%,0%)
    Using fixed svg for bash-plain.svg
    Bad RGB color spec: rgb(25.882353%,12.156863%,37.254902%)
    Using fixed svg for llvm-plain.svg
    Bad RGB color spec: rgb(9.411765%,71.372549%,96.470588%)
    Generating devicons.ttf with 496 glyphs
    Generating GlyphInfo i_dev.sh
    Finished

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
Some glyphs in the (patched) E7B0-E7CF region seem to be too big.

[how]
The codepoints in the symbol font are 0x0100 less.
These are the "small things" that had a specific scale rule, which is
not needed anymore after we dropped these small icons and filled those
codepoints with new and bigger icons.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
@Finii Finii force-pushed the feature/update-devicons branch from fa2e6ae to f1dc799 Compare November 13, 2024 23:19
@Finii
Copy link
Collaborator Author

Finii commented Nov 13, 2024

Updated topmost description, well, except for the new nginxcccccbnkbr icon, but I do not want to do the images again 😬

Ready to roll now.

@Finii Finii added the Ready ⛱ Ready to merge but waiting to be merged near a release label Nov 13, 2024
@Finii Finii merged commit 3e0e0e0 into master Nov 13, 2024
5 checks passed
@Finii Finii deleted the feature/update-devicons branch November 13, 2024 23:39
@XavierChanth
Copy link

Can you list this is a breaking change in the release notes please. I was affected, and it wasn't immediately clear as to why.

@Finii
Copy link
Collaborator Author

Finii commented Nov 18, 2024

What would you suggest? The codepoints as list, or including the names? I think it can be too bulky and ppl often do not know the codepoints let alone the names. That's why I thought an image would be best, but that can only be placed here.

Of course I could add a more explicit warning 🤔
Let me know what is most useful.

@XavierChanth
Copy link

What would you suggest? The codepoints as list, or including the names? I think it can be too bulky and ppl often do not know the codepoints let alone the names. That's why I thought an image would be best, but that can only be placed here.

Of course I could add a more explicit warning 🤔

Let me know what is most useful.

As long as the words include "breaking change" and reference the link to this PR somewhere, I think it's fine. Otherwise it's hard to know where to start looking for migration steps.

@Finii
Copy link
Collaborator Author

Finii commented Nov 19, 2024

@XavierChanth
Copy link

@XavierChanth Thanks for the feedback! I changed the changelog accordingly:

Thanks for making the change!

Carcuis added a commit to Carcuis/conf-sync that referenced this pull request Nov 30, 2024
bob-beck pushed a commit to openbsd/ports that referenced this pull request Dec 4, 2024
Carcuis added a commit to Carcuis/conf-sync that referenced this pull request Dec 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Ready ⛱ Ready to merge but waiting to be merged near a release { ; } update glyph set
Projects
None yet
4 participants