Zoptymalizuj Font Awesome tylko dla używanych klas

86

Używam pliku Font Awesome Sass https://github.com/FortAwesome/Font-Awesome/blob/master/sass/font-awesome.sass, aby utworzyć go jako _font-awesome.sass, więc mogę @importw moim projekcie Sass. Używam również http://middlemanapp.com/, aby przekonwertować Sass na Css . Pytania:

  1. Czy istnieje sposób na przeniesienie tylko używanych klas ikon do przekonwertowanego pliku .css? Ponieważ w tej chwili zawierał wszystkie klasy z _font-awesome.sass

  2. BONUS: Czy można w jakiś sposób przekompilować czcionki z używanymi klasami ikon, aby zmniejszyć ich rozmiar w zastosowaniach produkcyjnych?

Gdybym mógł uzyskać wskazówki dotyczące punktu 1 powyżej, byłoby to wystarczająco niesamowite.

Dzięki.

HP.
źródło
csslint pomoże znaleźć nieużywane klasy, więc przynajmniej nie będziesz musiał tego robić ręcznie. automatyzacja ... prawdopodobnie musiałbyś zaimplementować samodzielnie, ale jest to również na githubie, więc możesz rzucić własne
albert
2
Skąd możesz oczekiwać, że Sass będzie wiedział, z jakich klas korzystasz? Ta strona internetowa może generować niestandardowe pliki czcionek z wielu czcionek ikon: fontello.com
cimmanon
@cimmanon, dlaczego nie opublikujesz odpowiedzi poniżej, a ja ją zaakceptuję? Używałem fontello.com i właśnie tego szukałem.
HP.

Odpowiedzi:

89

Sass nie ma pojęcia, jakich klas faktycznie używasz. To jest coś, co będziesz musiał ręcznie przyciąć samodzielnie. Otwórz dostarczony plik .scss i zhakuj wszystko, czego nie potrzebujesz.

Edycja samego pliku czcionki w celu wyeliminowania niepotrzebnych glifów wymaga do tego aplikacji innej firmy i wykracza poza zakres tego pytania.


Fontello to internetowa usługa internetowa, która może zrobić to wszystko za Ciebie. Umożliwia mieszanie i dopasowywanie wielu kolekcji czcionek ikon, aby stworzyć idealny plik czcionki dla swojego projektu. Oprócz dostosowanego pliku czcionki zawiera wiele plików .css zawierających style już wygenerowane dla Ciebie (zmiana rozszerzenia na .scss pozwoli Ci zaimportować je do istniejącego projektu Sass).

cimmanon
źródło
fontello automatycznie zmienia nazwę klasy ikon - czy jest sposób, aby tego uniknąć?
Adam
Fontello ma kilka brakujących ikon. Na przykład No React, JavaScript, Node.js, Java
Green
44

fontello jest bardzo dobre, ale IcoMoon jest jeszcze bardziej niesamowity.

TasDiam
źródło
1
IcoMoon umożliwia importowanie własnej czcionki. Fontello nie
jscripter
1
Odkryłem, że IcoMoon obsługuje tylko podzbiór ikon Font Awesome.
Tony O'Hagan,
1
@ TonyO'Hagan Może możesz zaimportować plik czcionki Font Awesome z lokalnego systemu plików.
L_K,
IcoMoon ma brakujące ikony. Na przykład No React, JavaScript, Node.js
Green
2
Tylko do Twojej wiadomości, ale kiedy ikony Font Awesome są importowane do IcoMoon, niektóre ikony mogą nie zawsze być wyśrodkowane - wydaje się, że jest to problem z plikiem czcionki, a nie z IcoMoon, ponieważ jeśli otworzysz plik czcionki Font Awesome w Inkscape, możesz to zobaczyć niektóre ikony są źle wyrównane (chociaż wyświetlają się poprawnie, gdy są wyświetlane w przeglądarce). Wydaje się, że rozwiązaniem jest użycie kontrolek edycji glifów IcoMoon w celu zmniejszenia szerokości obszaru roboczego i wyśrodkowania ikony.
Noel Whitemore
11

Możesz teraz ustawić podzbiór ikon z Font-awesome do użytku produkcyjnego. Obecnie dostępne jest oficjalne narzędzie do tworzenia podzbiorów o nazwie icnfnt , które pozwala wybierać i pakować tylko potrzebne ikony z aktualnej wersji Font-awesome (v3.0.2).

Niestandardowe pobieranie obejmuje również cały kod CSS, LESS, SCSS i SASS!

nickhar
źródło
8
Nie wiem, czy to narzędzie kwalifikowałoby się jako oficjalne
Alex W
6

Używam LESS, a nie SASS, więc być może będziesz musiał dostosować swoją implementację.

Środowisko:

  • Font awesome 4.5.0 (aktualna wersja)
  • Ubuntu 14.04 LTS
  • grzmotnąć

Użyj tego, aby wygenerować listę numerów znaków Unicode, których potrzebujesz:

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

Następnie używasz tego z FontSquirrel w trybie eksperta, w którym wybierasz niestandardowe podzbiór: http://www.fontsquirrel.com/tools/webfont-generator

W zakresach Unicode wprowadź powyższe wartości oddzielone przecinkami.

Następnie, aby usunąć niepotrzebne rzeczy z CSS:

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

Musisz otworzyć less/font-awesome/icons.lessi wkleić dane wyjściowe z grepa do pliku.

Michelle Tsacheva
źródło
2

Cóż, sass z pewnością można trochę potrząsnąć, aby %oprzeć selektory, więc można je tylko rozszerzyć. Po wykonaniu tej czynności można dopasować klasy do żądanych ikon, a następnie @extendklasy z niesamowitymi czcionkami.

Osobiście robię to i tak naprawdę nie używam klas w znaczniku, a po prostu używam selektorów do odpowiednich elementów i @extendich z tymi klasami.

Przykład:

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

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

Następnie w swoim pliku scss

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

Gotowe.

designermonkey
źródło
2

Fontastic działał dla mnie (był wymieniony na stronie Font Awesome na githubie ). Wybierz potrzebne glify i pobierz je jako nową niestandardową czcionkę. Doskonałe narzędzie.

mp31415
źródło
Fontastic wymaga wcześniejszej rejestracji, aby coś zademonstrować
Green
O ile pamiętam, rok temu nie było. Smutny.
mp31415
1
Po prostu użyj mailinatora, aby założyć tam konto. Działało idealnie przy eksportowaniu ikon.
ppires