为什么图标字体总是使用PUA?

时间:2014-07-23 08:16:56

标签: unicode fonts icons font-awesome

很抱歉,如果这个问题表达得很尴尬(或者甚至没有意义)。我很难理解更多的字体和unicode,但我有点迷茫。这个问题以Awesome字体为例,因为我认为它是众所周知的,但问题也适用于其他图标字体。

Unicode有许多符号字符。我可以☼和(如果一切顺利)用户会看到:☼

如果您的浏览器无法正常渲染:它是太阳。 ☼ HTML实体对应于unicode点U+263c

现在考虑着名的Awesome字体。它还有一个太阳。您可以使用<i>元素并将此元素的类设置为fa fa-sun-o来呈现它。该类在样式表中定义为:

.fa-sun-o:before {
  content: "\f185";
}

根据我的理解,\ f thingy指的是unicode点U + f185,它位于PUA中,这基本上意味着字体设计师可以将它用于他们喜欢的任何地方。

现在,我可以理解PUA点用于在unicode规范中根本不具备的符号。但这并不适用于太阳图标。他们为什么不使用\263c

1 个答案:

答案 0 :(得分:4)

图标字体并不总是使用PUA。例如,Wingdings字体使用范围U + 0021 ... U00FF。这意味着图标字形被分配给为Unicode中的其他内容保留的代码位置,因此这种方法具有明显的缺点(以及一些优点)。

如果某个图标尚未编码为Unicode中的字符,则将其包含在字体中的唯一可行方法是使用PUA。在这种情况下,PUA旨在由私人协议使用。实际上,只要您有意识地决定使用该字体,图标字体设计即表示协议,希望能够理解其含义。

可能存在或可能不会解释为已在Unicode中编码的符号存在问题。字体设计人员可能会发现将字体中的所有图标分配给PUA代码点更为简单。

特别是,U + 263C WHITE SUN WITH RAYS“☼”尽管它或多或少具有标志性,但仍被编码为字符。这意味着它可能会因字体而异,并且预计会有所不同。事实上,它差异很大。虽然基本形状趋于相同,但尺寸(相对于字体大小),笔划宽度,光线长度等都有所不同。

纯粹的图标,只是一个特定的形状。它可能看起来与某些字体中某些字符的字形相似甚至相同,但它仍被视为独立符号。如果图标稍后被编码为字符,则可能会更改(可能会变为字符)。

而且,在实践中,fa-sun-o图标,虽然可以想象使用U + 263C的字形,但与大多数字形不同(通过相当短的光线)。如果Font Awesome字形有一天会被编码为字符,那么fa-sun-o很可能与U + 263C统一,但会分配一个新字符。