Оптимізуйте Font Awesome лише для класів, що використовуються


86

Я використовую файл Font Awesome Sass https://github.com/FortAwesome/Font-Awesome/blob/master/sass/font-awesome.sass, щоб зробити його _font-awesome.sass, щоб я міг @importу своєму проекті Sass. Я також використовую http://middlemanapp.com/ для перетворення Sass у Css . Запитання:

  1. Чи є спосіб перенести лише використані класи значків у мій перетворений .css? Тому що зараз він несе всі класи з _font-awesome.sass

  2. БОНУС: Чи можна якось перекомпілювати шрифти із використаними класами піктограм, щоб зробити його меншим при виробничому використанні?

Якщо я зможу отримати кілька підказок з №1 вище, це було б досить дивовижно.

Дякую.


csslint допоможе знайти невикористані класи, тому принаймні вам не доведеться робити це вручну. автоматизація ... вам, мабуть, довелося б реалізовувати себе, але це також на github, щоб ви могли прокрутити своє
Альберт

2
Як ви очікуєте, що Сасс знатиме, якими класами ви користуєтесь? Цей веб-сайт може генерувати власні файли шрифтів із ряду значків: fontello.com
cimmanon,

@cimmanon, чому б вам не розмістити свою відповідь нижче, і я прийму її? Я використовую fontello.com, і це те, що я шукав.
HP.

Відповіді:


89

Сасс не уявляє, якими класами ви насправді користуєтесь. Це вам доведеться вручну обрізати самостійно. Відкрийте наданий файл .scss і зламайте все, що вам не потрібно.

Для редагування самого файлу шрифту для усунення непотрібних гліфів потрібна стороння програма, і це виходить за рамки цього питання.


Fontello - це веб-сервіс, який може зробити все це за вас. Це дозволяє поєднувати та поєднувати кілька колекцій шрифтів значків, щоб створити ідеальний файл шрифту для вашого проекту. На додаток до настроюваного файлу шрифту, він надає декілька файлів .css, що містять стилі, вже створені для вас (зміна розширення на .scss дозволить імпортувати їх у ваш існуючий проект Sass).


fontello автоматично змінює назву класу піктограм - чи є спосіб уникнути цього?
Адам

У Фонтелло є деякі відсутні значки. No React, JavaScript, Node.js, Java, наприклад
Green

44

fontello - це дуже добре, але IcoMoon ще більш дивовижний.


1
IcoMoon дозволяє імпортувати власний шрифт. Фонтелло не робить
jscripter

1
Я виявив, що IcoMoon підтримує лише підмножину значків Font Awesome.
Тоні О'Хеган

1
@ TonyO'Hagan Можливо, ви можете імпортувати файл шрифтів Font Awesome із вашої локальної файлової системи.
L_K

У IcoMoon відсутні значки. Наприклад, немає React, JavaScript, Node.js
Green

2
Просто FYI, але коли піктограми Font Awesome імпортуються в IcoMoon, деякі піктограми не завжди можуть бути по центру - це, здається, проблема з файлом шрифту, а не з IcoMoon, тому що якщо ви відкриєте файл шрифтів Font Awesome в Inkscape, ви зможете побачити, що деякі піктограми неправильно вирівняні (хоча вони відображаються правильно при виведенні в браузер). Здається, що рішення полягає у використанні елементів керування редагуванням гліфів IcoMoon для зменшення ширини полотна та центрування значка.
Ноель Уайтмор

11

Тепер ви можете підмножити піктограми з Font-awesome для виробничого використання. Зараз існує офіційний інструмент підстановки під назвою icnfnt , який дозволяє вибирати та упаковувати лише потрібні значки з поточної версії Font-awesome (v3.0.2).

Спеціальне завантаження також включає всі коди CSS, LESS, SCSS та SASS!


7
Не знаю, чи міг би цей інструмент кваліфікуватися як офіційний
Alex W

6

Я використовую LESS, а не SASS, тому вам, можливо, доведеться адаптувати свою реалізацію.

Навколишнє середовище:

  • Шрифт awesome 4.5.0 (поточна версія)
  • Ubuntu 14.04 LTS
  • баш

Використовуйте це для створення списку номерів символів Unicode, які вам потрібні:

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

Потім ви використовуєте це з FontSquirrel в режимі експерта, де ви вибираєте спеціальне піднабір: http://www.fontsquirrel.com/tools/webfont-generator

У діапазонах Unicode введіть значення, розділені комами, зверху.

Потім видаліть непотрібні речі з CSS:

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

Вам потрібно буде відкрити less/font-awesome/icons.lessта вставити вихідні дані grep-файлу у файл.


2

Ну, sass можна, звичайно, трохи перекрутити, щоб зробити селектори %заснованими, щоб вони могли лише розширюватися. Як тільки це буде зроблено, можна створити класи, щоб відповідати бажаним значкам, і тоді це можуть @extendбути класні шрифтові файли.

Особисто я роблю це, і фактично не використовую класи в розмітці, а просто використовую селектори до відповідних елементів та @extendїх разом із цими класами.

Приклад:

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

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

Тоді у вашому scss

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

Et voila.


2

Fontastic працював у мене (він був перерахований на сторінці Font Awesome github ). Виберіть потрібні гліфи та завантажте їх як новий спеціальний шрифт. Відмінний інструмент.


Fontastic вимагає від вас реєстрації заздалегідь, щоб продемонструвати що-небудь
Green Green

Рік тому, наскільки я пам’ятаю, не було цього. Сумно.
mp31415

1
Просто використовуйте mailinator, щоб створити там обліковий запис. Це чудово працювало для експорту значків.
ppires

0

Iconmoon працював у мене. Я використовував його, імпортуючи файл svg із чудового шрифту, таким чином гарантуючи, що я отримую потрібні значки, а не лише ті, що доступні на їх сайті. Також це посилання допомогло мені в інтеграції нових піктограм https://tonyxu.io/posts/2018/use-icomoon-to-reduce-fontawesome-size/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.