unicode-range

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

unicode-range CSS 描述符设置了要使用的字符的特定范围,这些字符来自使用 @font-face 规则定义并可在当前页面上使用的字体。如果页面不使用此范围内的任何字符,则不会下载该字体;如果至少使用一个字符,则会下载整个字体。

语法

css
/* <unicode-range> values */
unicode-range: U+26; /* single code point */
unicode-range: U+0-7F;
unicode-range: U+0025-00FF; /* code point range */
unicode-range: U+4??; /* wildcard range */
unicode-range: U+0025-00FF, U+4??; /* multiple values */

单个代码点

单个 Unicode 字符代码点,例如 U+26

代码点范围

Unicode 代码点范围。例如,U+0025-00FF 表示包含 U+0025U+00FF 范围内的所有字符

通配符范围

包含通配符字符的 Unicode 代码点范围,即使用 '?' 字符,例如 U+4?? 表示包含 U+400U+4FF 范围内的所有字符

描述

此描述符的目的是允许字体资源分段,以便浏览器只需要下载特定页面文本内容所需的字体资源。例如,一个拥有多种本地化的网站可以为英语、希腊语和日语提供单独的字体资源。对于查看页面英文版的用户,无需下载希腊语和日语字体的字体资源,从而节省带宽。

正式定义

相关的 at-rule@font-face
初始值U+0-10FFFF
计算值同指定值

正式语法

unicode-range = 
<unicode-range-token>#

示例

为单个字符使用不同的字体

在此示例中,我们创建了一个单独的 <div> 元素,其中包含一个文本字符串,其中包括一个我们想要用不同字体设置样式的 & 符号。为了使其显而易见,我们将对文本使用无衬线字体,Helvetica,对 & 符号使用衬线字体,Times New Roman

在 CSS 中,我们实际上定义了一个完全独立的 @font-face,其中只包含一个字符,这意味着只有这个字符会用这种字体设置样式。我们也可以通过将 & 符号包装在 <span> 中并仅对其应用不同的字体来实现这一点,但这会增加一个额外的元素和规则集。

HTML

html
<div>Me & You = Us</div>

CSS

css
@font-face {
  font-family: "Ampersand";
  src: local("Times New Roman");
  unicode-range: U+26;
}

div {
  font-size: 4em;
  font-family: "Ampersand", "Helvetica", sans-serif;
}

结果

规范

规范
CSS 字体模块第 4 级
# unicode-range-desc

浏览器兼容性

另见