仅针对使用过的类优化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. BONUS:是否可以用旧的图标类以某种方式重新编译字体,以使其在生产时更小?

如果我能在上面的#1上找到一些提示,那就足够了。

谢谢。


csslint将帮助找到未使用的类,因此至少您不必手动进行操作。自动化...您可能必须实现自己,但它也位于github上,因此您可以自己动手
阿尔伯特

2
您如何期望Sass知道您正在使用哪些类?该网站可以从多种图标字体生成自定义字体文件:fontello.com
cimmanon

@cimmanon为什么不在下面发布答案,我会接受?我一直在使用fontello.com,这就是我想要的。
HP。

Answers:


89

Sass不知道您实际上正在使用什么类。您必须手动调整自身大小。打开提供的.scss文件,并破解所有不需要的内容。

编辑字体文件本身以消除不需要的字形需要第三方应用程序执行,而这超出了此问题的范围。


Fontello是一个在线Web服务,可以为您完成所有这些操作。它使您可以在多个图标字体集合之间进行混合和匹配,从而为您的项目创建完美的字体文件。除了自定义字体文件之外,它还提供了多个.css文件,其中包含已经为您生成的样式(将扩展名更改为.scss可以将它们导入到现有的Sass项目中)。


fontello自动更改图标的类名-有没有办法避免这种情况?
亚当

丰泰罗(Fontello)缺少一些图标。例如,没有React,JavaScript,Node.js,Java
Green

44

fontello非常好,但IcoMoon更加出色。


1
IcoMoon允许您导入自己的字体。Fontello不
jscripter

1
我发现IcoMoon仅支持Font Awesome图标的子集。
Tony O'Hagan

1
@ TonyO'Hagan也许您可以从本地文件系统导入Font Awesome字体文件。
L_K 2015年

IcoMoon的图标丢失。例如,没有React,JavaScript,Node.js
Green Green

2
仅供参考,但是当将Font Awesome图标导入IcoMoon时,某些图标可能并不总是居中-这似乎是字体文件而不是IcoMoon的问题,因为如果您在Inkscape中打开Font Awesome字体文件,您会看到有些图标未对齐(尽管在输出到浏览器时它们可以正确显示)。解决方案似乎是使用IcoMoon的字形编辑控件来减小画布宽度并使图标居中。
Noel Whitemore

11

现在,您可以将Font-awesome中的图标子集用于生产。现在有一个名为icnfnt的官方子集工具,该工具可让您从最新版本的Font-awesome(v3.0.2)中挑选并打包所需的图标。

定制下载还包括所有CSS,LESS,SCSS和SASS代码!


7
我不知道该工具是否符合官方资格
Alex W

6

我使用LESS而不是SASS,因此您可能必须调整实现。

环境:

  • 真棒字体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;
}

等等。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.