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.

HP.
sumber
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).

cimmanon
sumber
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.

TasDiam
sumber
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!

nickhar
sumber
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.

Michelle Tsacheva
sumber
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.

designermonkey
sumber
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.

mp31415
sumber
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