【问题标题】:Why do icon fonts always use the PUA?为什么图标字体总是使用 PUA?
【发布时间】:2014-09-14 07:48:27
【问题描述】:

对不起,如果这个问题措辞尴尬(或者甚至没有意义)。我正在努力理解更多的字体和 unicode,但我有点迷路了。这个问题以 Awesome 字体为例,因为我认为它是众所周知的,但这个问题也适用于其他图标字体。

Unicode 有很多符号字符。我可以☼ 并且(如果一切顺利)用户将看到:☼

如果在您的浏览器中没有正确呈现:它是一个太阳。 ☼ HTML 实体对应于 unicode 点 U+263c

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

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

据我了解,\f这个东西是指unicode point U+f185,在PUA中,这基本上意味着字体设计者可以随意使用它。

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

【问题讨论】:

  • 完全由字体设计师来决定。我怀疑他会出现在这里解释他的推理。试一试:当字体丢失时,PUA 代码点没有回退。清楚地表明字体存在安装/嵌入问题并不是一个坏主意。

标签: unicode fonts icons font-awesome


【解决方案1】:

图标字体并不总是使用 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 统一,但会分配一个新字符。

【讨论】:

  • 非常感谢您的回答。我意识到一个字符可能因字体而异,你说得对,fa-sun-o 字形看起来与 U+263c 不同。但这不是字体的重点吗?我的意思是,从一种字体到另一种字体,字符“A”可能看起来非常不同,但仍然每种字体都将其放在U+41。我确实理解您的观点,即设计师发现将所有内容分配给 PUA 点很方便。
猜你喜欢
  • 2019-06-26
  • 2010-12-30
  • 1970-01-01
  • 2012-10-03
  • 2015-06-11
  • 2020-04-26
  • 2023-03-17
  • 2021-03-05
  • 1970-01-01
相关资源
最近更新 更多