对于拥有美国受众的美国网站,@font-face 网络字体中应保留什么范围的 unicode 字符?

What range of unicode characters should be kept in a @font-face web font for a US based website with a US audience?

作为优化 Web 开发项目的一部分,我们需要删除永远不会使用的不必要字符以减小字体文件的大小。我搜索了 Google,但没有发现关于哪些字符是必需的以及哪些字符可以安全删除的主题。

我发现了以下可能感兴趣的范围:

0020 — 007F     Basic Latin
00A0 — 00FF     Latin-1 Supplement
0100 — 017F     Latin Extended-A
0180 — 024F     Latin Extended-B
0250 — 02AF     IPA Extensions
02B0 — 02FF     Spacing Modifier Letters
0300 — 036F     Combining Diacritical Marks
27C0 — 27EF     Miscellaneous Mathematical Symbols-A

似乎最激进的方法是只保留 "Basic Latin", 0020 — 007F,它提供大写字母和 lower-case 字母、数字和一些基本符号,如 $、+ , (, ), 等等

Latin-1 Supplement 包含一些额外的好东西,例如商标和版权符号和分数。

拉丁文 Extended-A 和 -B 包含带重音符号的字母,由于我们的副本是英文的,我不确定是否需要这些。

如果我们只使用范围 (0020 — 007F) 和 (00A0 — 00FF),我们是否会 运行 遇到缺少字符的问题,如果某些用户决定 post用西班牙语发表评论(例如)?或者浏览器是否会为不包含网络字体的字符回退到默认字体?

一个web-font的目的是为了让正文和标题的主体看起来漂亮,基本的拉丁语集应该包括在内,但我不知道是否有隐藏的"gotchas"剥离到 "Basic Latin" 范围,例如重音字符显示为菱形问号而不是回退到系统字体等。

@font-face web 中应保留什么范围的 unicode 字符 有美国观众的美国网站的字体?是否有任何最佳做法或指南可以从字体中去除不必要的字符以供网络使用?

我建议子集化为支持 US/Western 欧洲的常见 "code page" 定义之一。大多数代码页定义早于 Unicode,并且通常具有各种区域支持所需的零碎部分,而不包括整个 Unicode 块。建议:

*这与 Unicode 范围 0020-007F Basic Latin + 00A0-00FF Latin-1 Supplement 相同

这些包括的内容远远超过美国英语严格要求的,尽管如上所述,英文文本中通常会出现几个重音字符(é、ñ 以及其他标点符号标记和符号)。这些集合包括那些字符,因此您应该对绝大多数文本都保持良好状态 U.S。观众。还要注意,在大多数字体中,这些字符通常是 "composites",这意味着它们使用对组件的引用(例如,'é' 是从对 'e' 和 '´');因此,它们通常不需要那么大的空间来存储它们,因此保留它们通常不会导致较大的尺寸损失。

如果您可能会遇到欧洲金融文本,我建议您使用 Windows 1252 或 ISO/IEC 8859-15,其中包含欧元货币符号。

I don't know if there are hidden "gotchas" with stripping down to just the "Basic Latin" range, like accented characters showing as diamond question marks instead of falling back to a system font

您使用的字体中不存在的任何字符将回退到浏览器可以找到的任何默认字体以及其中的字符。当与自定义字体中的其他字符交错时,这可能会很难看,但是现代操作系统为上述块中的常用字符提供了不错的字体覆盖率,因此通常它仍然是可读的。

因此,您应该根据您是否认为这些字符会被广泛使用以致于以丑陋的字体呈现这些字符会破坏交易。就其价值而言,我之前出于类似目的使用的一个非常小的集合是 ¡£°±²³¿ÉËÑéëñ‘’“”–—•€™,但您网站的确切要求可能会有所不同。 (例如,如果您使用纽约人风格的分音符,您肯定会想要 äëïöü。)

(默认回退字体的具体工作方式因浏览器而异,并且在旧版本的 IE 和 IE Mobile 中是出了名的麻烦。但基本的重音拉丁字母非常安全。)