Font Awesome 5 在伪元素中选择正确的字体系列

Font Awesome 5 Choosing the correct font-family in pseudo-elements

我目前对在 CSS 伪元素中使用图标感到困惑。 fontawesome 有 4 种字体系列:Font Awesome 5 FreeFont Awesome 5 SolidFont Awesome 5 BrandsFont Awesome 5 Regular

这是 HTML :

<h1>Hello</h1>

案例一

我使用这个图标:https://fontawesome.com/icons/twitter?style=brands

如您所见,它是一个 brands 图标,所以 font-family : Font Awesome 5 Brands

h1:before {
  display: inline-block;
  font-style: normal;
  font-variant: normal;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  content: "\f099"; /* TWITTER ICON */
  font-family: "Font Awesome 5 Brands";
  font-weight: 400;
}

有效!

案例二

我使用这个图标:https://fontawesome.com/icons/phone?style=solid

如您所见,它是一个 solid 图标,所以 font-family : Font Awesome 5 Solid

h1:before {
  display: inline-block;
  font-style: normal;
  font-variant: normal;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  content: "\f095"; /* PHONE ICON */
  font-family: "Font Awesome 5 Solid";
  font-weight: 900;
}

不起作用!

我做错了什么?

我们如何知道何时使用正确的字体系列?

只需在同一个 font-family 中使用所有这些,浏览器就会完成这项工作。如果在第一个中找不到,它将使用第二个。 (Multiple fonts in Font-Family property?)

顺便说一句,正确的 font-familyFree 而不是 Solid 因为 SolidRegular 之间的区别font-weight 并且两者具有相同的 font-familyfont-family中没有SolidRegular,只有FreeBrands

您可能还会注意到,几乎所有 Solid 版本的图标都是免费的,但并非所有 regular 版本的图标都是免费的。其中一些包含在 PRO 包中。如果图标未显示,不一定是 font-family 问题。

所有Lightduotone版本都是PRO版本。

.icon {
  display: inline-block;
  font-style: normal;
  font-variant: normal;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  font-family: "Font Awesome 5 Brands","Font Awesome 5 Free";
}

.icon1:before {
  content: "\f099";
  /* TWITTER ICON */
  font-weight: 400;
}

.icon2:before {
  content: "\f095";
  /* PHONE ICON */
  font-weight: 900;
}

.icon3:before {
  content: "\f095";
  /* PHONE ICON */
  font-weight: 400;/*This one will not work because the regular version of the phone icon is in the Pro Package*/
}
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.11.0/css/all.css" >

<div class="icon1 icon"></div>
<div class="icon2 icon"></div>
<br>

<div class="icon3 icon"></div>

参考:https://fontawesome.com/how-to-use/on-the-web/advanced/css-pseudo-elements#define


处理 font-weight 问题的相关问题: