gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:04:45 26 4
gpt4 key购买 nike

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

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

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

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

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

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

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

最佳答案

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

当图标尚未编码为 Unicode 中的字符时,将其包含在字体中的唯一可行方法是使用 PUA。在这种情况下,PUA 旨在由私有(private)协议(protocol)使用。实际上,一旦您有意决定使用该字体,图标字体设计就构成了一项协议(protocol),希望您能够理解其中的含义。

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

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

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

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

关于unicode - 为什么图标字体总是使用 PUA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24905196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com