Ottimizza Font Awesome solo per le classi utilizzate


86

Sto usando il file Font Awesome Sass https://github.com/FortAwesome/Font-Awesome/blob/master/sass/font-awesome.sass per renderlo _font-awesome.sass così posso @importnel mio progetto Sass. Sto anche usando http://middlemanapp.com/ per convertire Sass in Css . Domande:

  1. C'è un modo per portare solo le classi di icone usate nel mio .css convertito? Perché al momento conteneva tutte le classi da _font-awesome.sass

  2. BONUS: È possibile ricompilare i caratteri in qualche modo con le classi di icone utilizzate per renderli più piccoli durante l'uso in produzione?

Se riesco a ottenere alcuni suggerimenti sul n. 1 sopra, sarebbe abbastanza fantastico.

Grazie.


csslint ti aiuterà a trovare le classi inutilizzate, quindi almeno non dovrai farlo manualmente. automazione ... probabilmente dovresti implementare te stesso, ma è anche su GitHub in modo da poter eseguire il tuo
albert

2
Come ti aspetti che Sass sappia quali classi stai usando? Questo sito Web può generare file di caratteri personalizzati da una serie di caratteri icona: fontello.com
cimmanon

@cimmanon perché non pubblichi la tua risposta qui sotto e la accetterò? Sto usando fontello.com ed era quello che cercavo.
HP.

Risposte:


89

Sass non ha idea di quali classi stai effettivamente utilizzando. Questo è qualcosa che dovrai tagliare manualmente da solo. Apri il file .scss fornito e elimina tutto ciò che non ti serve.

La modifica del file del carattere stesso per eliminare i glifi non necessari richiede un'applicazione di terze parti e va oltre lo scopo di questa domanda.


Fontello è un servizio web online che può fare tutto questo per te. Ti consente di mescolare e abbinare più raccolte di caratteri di icone per creare il file di caratteri perfetto per il tuo progetto. Oltre al file di font personalizzato, fornisce più file .css contenenti stili già generati per te (cambiare l'estensione in .scss ti permetterà di importarli nel tuo progetto Sass esistente).


fontello cambia automaticamente il nome della classe delle icone: c'è un modo per evitarlo?
Adam

Fontello ha alcune icone mancanti. No React, JavaScript, Node.js, Java, ad esempio
verde

44

fontello è molto buono ma IcoMoon è ancora più fantastico.


1
IcoMoon ti consente di importare il tuo carattere. Fontello no
jscripter

1
Ho scoperto che IcoMoon supporta solo un sottoinsieme di icone Font Awesome.
Tony O'Hagan

1
@ TonyO'Hagan Forse puoi importare il file di font Font Awesome dal tuo file system locale.
L_K

IcoMoon hanno icone mancanti. No React, JavaScript, Node.js, ad esempio
verde

2
Solo un FYI, ma quando le icone di Font Awesome vengono importate in IcoMoon alcune delle icone potrebbero non essere sempre centrate - questo sembra essere un problema con il file del font piuttosto che con IcoMoon perché se apri il file del font Font Awesome in Inkscape puoi vederlo alcune delle icone sono disallineate (sebbene vengano visualizzate correttamente quando vengono visualizzate nel browser). La soluzione sembra essere quella di utilizzare i controlli di modifica del glifo di IcoMoon per ridurre la larghezza della tela e centrare l'icona.
Noel Whitemore

11

Ora puoi creare un sottoinsieme di icone da Font-awesome per l'uso in produzione. Ora è disponibile uno strumento di sottoinserimento ufficiale chiamato icnfnt , che ti consente di scegliere e impacchettare solo le icone necessarie dalla versione corrente di Font-awesome (v3.0.2).

Il download personalizzato include anche tutto il codice CSS, LESS, SCSS e SASS!


7
Non so se quello strumento si qualificherebbe come ufficiale
Alex W

6

Io uso LESS e non SASS, quindi potresti dover adattare la tua implementazione.

Ambiente:

  • Font awesome 4.5.0 (versione attuale)
  • Ubuntu 14.04 LTS
  • bash

Usalo per generare l'elenco dei numeri di caratteri Unicode di cui hai bisogno:

fa_icons="globe|vimeo|youtube|facebook|twitter|google-plus"
for code in $(egrep "^@fa-var-($fa_icons):" less/font-awesome/variables.less | cut -d ':' -f 2 | sed -e 's/^ "\\//' | sed -e 's/";/,/' | sort ); do echo -n $code; done

Quindi lo usi con FontSquirrel nella modalità esperto in cui selezioni sottoinsiemi personalizzati: http://www.fontsquirrel.com/tools/webfont-generator

Negli intervalli Unicode, inserisci i valori separati da virgola dall'alto.

Quindi, per rimuovere le cose non necessarie dal CSS:

egrep "@fa-var-($fa_icons);" less/font-awesome/icons.less

Dovrai aprire less/font-awesome/icons.lesse incollare l'output da grep nel file.


2

Bene, il sass può certamente essere spostato un po 'per rendere i selettori %basati in modo che siano solo estensibili. Una volta fatto questo, le classi possono essere create per abbinare le icone desiderate, e poi possono @extendle classi fantastiche.

Personalmente, lo faccio e in realtà non uso le classi nel markup, ma uso solo i selettori per gli elementi rilevanti e @extendloro con queste classi.

Esempio:

// _icons.scss
%#{$fa-css-prefix}-glass:before { content: $fa-var-glass; }
...

// _core.scss
%#{$fa-css-prefix} {
    ...
}

Quindi nel tuo scss

a.search {
    @extend %fa;
    @extend %fa-search;
}

Et voilà.


2

Fontastic ha funzionato per me (era elencato nella pagina GitHub di Font Awesome ). Seleziona i glifi di cui hai bisogno e scaricali come nuovo carattere personalizzato. Ottimo strumento.


Fontastic richiede che ti registri in anticipo per dimostrare qualsiasi cosa
Green

Non era così un anno fa per quanto ricordo. Triste.
mp31415

1
Usa mailinator per creare un account lì. Ha funzionato perfettamente per esportare le icone.
ppires

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.