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

Unicode 为什么图标字体总是使用PUA?,unicode,fonts,icons,font-awesome,Unicode,Fonts,Icons,Font Awesome,抱歉,如果这个问题措辞笨拙(或者根本没有意义)。我正在努力理解更多的字体和unicode,但我有点迷路了。这个问题以Awesome字体为例,因为我假设它是众所周知的,但这个问题也适用于其他图标字体 Unicode有许多符号字符。我会做☼和(如果一切顺利),用户将看到:☼ 如果未在浏览器中正确渲染:它是太阳。和#9788HTML实体对应于unicode点U+263c 现在考虑著名的令人敬畏的字体。它也有一个太阳。您可以通过使用元素并将该元素的类设置为fa-sun-o来渲染它。此类在样式

抱歉,如果这个问题措辞笨拙(或者根本没有意义)。我正在努力理解更多的字体和unicode,但我有点迷路了。这个问题以Awesome字体为例,因为我假设它是众所周知的,但这个问题也适用于其他图标字体

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

如果未在浏览器中正确渲染:它是太阳。
和#9788
HTML实体对应于unicode点
U+263c

现在考虑著名的令人敬畏的字体。它也有一个太阳。您可以通过使用
元素并将该元素的类设置为
fa-sun-o
来渲染它。此类在样式表中定义为:

.fa-sun-o:before {
  content: "\f185";
}
据我所知,\f thingy指的是PUA中的unicode点U+f185,这基本上意味着字体设计师可以将其用于任何他们喜欢的用途


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

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

如果图标未在Unicode中编码为字符,则将其包含在字体中的唯一可行方法是使用PUA。在这种情况下,PUA将由私人协议使用。实际上,一旦您有意决定使用该字体,图标字体设计即构成协议,希望您理解其含义

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

特别是,U+263C的白色太阳光线“☼”, 虽然它在本质上或多或少是标志性的,但仍然编码为字符。这意味着它可能会因字体而异,并且预计会因字体而异。事实上,它的差别很大。虽然基本形状趋于相同,但大小(相对于字体大小)、笔划宽度、光线长度等会有所不同

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


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

这完全取决于字体设计师。我怀疑他是否会出现在这里解释他的理由。尝试一下:当缺少e字体。明确说明字体存在安装/嵌入问题不是一个坏主意。非常感谢您的回答。我意识到不同字体的字符可能不同,您是对的,fa-sun-o字形看起来与U+263c不同。但这不是字体的要点吗?我的意思是,字符“a”可能会从一种字体到下一种字体看起来非常不同,但仍然每种字体都将其置于
U+41
。我确实理解您的观点,即设计师发现将所有内容分配给PUA点很方便。