4

是否有标准管理所有浏览器的 Unicode 字体支持?

最新版本的 Unicode 包含超过 110,000 个字符,涵盖 100 个脚本。我不希望浏览器支持所有这些,但应该对某些字符提供最低支持,例如来自拉丁脚本的字母、常见的标点符号以及数学、货币等类型的符号。

我目前在 Android 浏览器上显示 U+060B AFGANI SIGN (؋) 和 U+202F NARROW NON-BREAK SPACE 时遇到问题。我想知道是否有一个普遍认可的 Unicode 字符列表,以便开发人员可以放心地使用它们,而不必担心浏览器显示问题。

4

2 回答 2

3

浏览器中没有关于 Unicode 支持的标准。此外,显示字符的能力主要取决于字体,尽管浏览器在扫描字体方面的能力不同。通常你可以做的是指定一个合适font-family的字体列表,每个字体都支持你需要的所有字符。有关这方面的一般性,请参阅我在 HTML 中使用特殊字符的指南

在 Android 上,问题在于字体集非常有限。如果您需要超出它们支持的字符,则需要使用可下载的字体,通过@font-face.

货币符号“؋” U+060B AFGHANI SIGN 出现在大约十几种字体中,但其中唯一的免费字体(如果我们不计算位图字体 GNU Unifont)似乎是Scheherazade

对于 U+202F NARROW NO-BREAK SPACE,字体支持更广泛。但总的来说,使用其他方法通常比使用此类字符更好。许多字体包含的这个字符几乎和普通空格一样宽,Unicode 标准中关于它的宽度的描述是模糊的:“不间断空格的窄形式,通常是细空格或中间空格的宽度空间”。“细空间”在 Unicode 标准中被描述为“五分之一的 em(或有时是六分之一)”,实际上它的宽度是变化的。而“中间空间”确实是一个未定义的概念。

例如,如果文本是使用空格作为千​​位分隔符的语言,原则上您可以将 100 000 之类的数字写成100 000,但最好写成,例如,

<span class="gr">100&nbsp;000</span>

使用 CSS 代码,例如.gr { word-spacing: -0.15em }.

于 2012-12-15T14:14:01.110 回答
1

AFAIK,所有浏览器都支持@font-face加载 webfonts,并且可以支持这些字体中的任何字符。因此,如果您确保提供对支持这些字符的网络字体的访问,您应该能够在任何浏览器中显示任何字符。

为了避免使用大字体来支持一些特殊字符,您可以使用Icomoon App等工具创建自己的字体。

我使用 Icomoon 应用程序来创建Emoji 表情字体以及在每个项目的基础上创建自定义图标字体。

有关使用或创建图标字体(或其他 webfonts)的更多信息,请参阅使用 Unicode 补充多语言平面符号创建 webfont

于 2014-12-09T13:33:41.117 回答