Optimalkan Font Awesome hanya untuk kelas yang digunakan


86

Saya menggunakan file Font Awesome Sass https://github.com/FortAwesome/Font-Awesome/blob/master/sass/font-awesome.sass untuk membuatnya _font-awesome.sass jadi saya bisa @importdi proyek Sass saya. Saya juga menggunakan http://middlemanapp.com/ untuk mengonversi Sass ke Css . Pertanyaan:

  1. Apakah ada cara untuk hanya membawa kelas ikon bekas ke dalam .css saya yang dikonversi? Karena saat ini ia membawa semua kelas dari _font-awesome.sass

  2. BONUS: Apakah mungkin untuk mengkompilasi ulang font dengan kelas ikon bekas untuk membuatnya lebih kecil pada penggunaan produksi?

Jika saya bisa mendapatkan beberapa tip tentang # 1 di atas, itu sudah cukup luar biasa.

Terima kasih.


csslint akan membantu menemukan kelas yang tidak digunakan, jadi setidaknya Anda tidak perlu melakukannya secara manual. mengotomatiskan ... Anda mungkin harus mengimplementasikan diri Anda sendiri, tetapi juga di github sehingga Anda dapat menjalankannya sendiri
albert

2
Bagaimana Anda mengharapkan Sass mengetahui kelas mana yang Anda gunakan? Situs web ini dapat menghasilkan file font khusus dari sejumlah font ikon: fontello.com
cimmanon

@cimmanon mengapa Anda tidak memposting jawaban Anda di bawah ini dan saya akan menerimanya? Saya telah menggunakan fontello.com dan itulah yang saya cari.
HP.

Jawaban:


89

Sass tidak tahu kelas apa yang sebenarnya Anda gunakan. Ini adalah sesuatu yang harus Anda potong sendiri secara manual. Buka file .scss yang disediakan dan hack semua yang tidak Anda butuhkan.

Mengedit file font itu sendiri untuk menghilangkan mesin terbang yang tidak dibutuhkan memerlukan aplikasi pihak ketiga untuk melakukannya dan berada di luar cakupan pertanyaan ini.


Fontello adalah layanan web online yang dapat melakukan semua ini untuk Anda. Ini memungkinkan Anda mencampur dan mencocokkan antara beberapa koleksi font ikon untuk membuat file font yang sempurna untuk proyek Anda. Selain file font yang disesuaikan, ini menyediakan beberapa file .css yang berisi gaya yang sudah dibuat untuk Anda (mengubah ekstensi menjadi .scss akan memungkinkan Anda untuk mengimpornya ke proyek Sass yang ada).


fontello mengubah nama kelas ikon secara otomatis - adakah cara untuk menghindari ini?
Adam

Fontello memiliki beberapa ikon yang hilang. No React, JavaScript, Node.js, Java, misalnya
Hijau

44

fontello sangat bagus tapi IcoMoon bahkan lebih keren.


1
IcoMoon memungkinkan Anda mengimpor font Anda sendiri. Fontello tidak
jscripter

1
Saya menemukan bahwa IcoMoon hanya mendukung subset dari ikon Font Awesome.
Tony O'Hagan

1
@ TonyO'Hagan Mungkin Anda dapat mengimpor file font Font Awesome dari sistem file lokal Anda.
L_K

IcoMoon memiliki ikon yang hilang. No React, JavaScript, Node.js, misalnya
Hijau

2
Hanya FYI tetapi ketika ikon Font Awesome diimpor ke IcoMoon, beberapa ikon mungkin tidak selalu berada di tengah - ini tampaknya menjadi masalah dengan file font daripada IcoMoon karena jika Anda membuka file font Font Awesome di Inkscape Anda dapat melihatnya beberapa ikon tidak sejajar (meskipun ditampilkan dengan benar saat ditampilkan ke browser). Solusinya tampaknya menggunakan kontrol pengeditan mesin terbang IcoMoon untuk mengurangi lebar kanvas dan menempatkan ikon di tengah.
Noel Whitemore

11

Anda sekarang dapat membuat subset ikon dari Font-awesome untuk penggunaan produksi. Sekarang ada alat subset resmi bernama icnfnt , yang memungkinkan Anda untuk memilih dan mengemas ikon yang Anda perlukan dari versi Font-awesome (v3.0.2) saat ini.

Unduhan khusus juga mencakup semua kode CSS, LESS, SCSS, dan SASS!


8
Saya tidak tahu apakah alat itu akan memenuhi syarat sebagai resmi
Alex W

7

Saya menggunakan LESS dan bukan SASS sehingga Anda mungkin harus menyesuaikan implementasi Anda.

Lingkungan Hidup:

  • Font awesome 4.5.0 (versi saat ini)
  • Ubuntu 14.04 LTS
  • pesta

Gunakan ini untuk membuat daftar nomor karakter Unicode yang Anda butuhkan:

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

Anda kemudian menggunakan ini dengan FontSquirrel dalam mode ahli di mana Anda memilih subset kustom: http://www.fontsquirrel.com/tools/webfont-generator

Dalam rentang Unicode masukkan nilai yang dipisahkan koma dari atas.

Kemudian untuk menghapus hal-hal yang tidak perlu dari CSS:

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

Anda harus membuka less/font-awesome/icons.lessdan menempelkan keluaran dari grep ke dalam file.


2

Nah, sass pasti bisa diguncang sedikit untuk membuat penyeleksi %berbasis sehingga hanya bisa diperpanjang. Setelah ini selesai, kelas dapat dibuat agar sesuai dengan ikon yang diinginkan, dan kemudian bisa@extend kelas font-mengagumkan.

Secara pribadi, saya melakukan ini, dan tidak benar-benar menggunakan kelas di markup, dan hanya menggunakan penyeleksi ke elemen yang relevan dan @extend mereka dengan kelas ini.

Contoh:

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

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

Kemudian di scss Anda

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

Et voila.


2

Fontastic bekerja untuk saya (terdaftar di halaman github Font Awesome ). Pilih mesin terbang yang Anda butuhkan dan unduh sebagai font khusus baru. Alat yang luar biasa.


Fontastic mengharuskan Anda mendaftar di muka untuk mendemonstrasikan apa pun
Hijau

Sejauh yang saya ingat, itu tidak terjadi setahun yang lalu. Sedih.
mp31415

1
Cukup gunakan mailinator untuk membuat akun di sana. Ini bekerja dengan sempurna untuk mengekspor ikon.
ppires

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.