unicode-range
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
unicode-range
は CSS の記述子で、 @font-face
を用いて定義されたフォントから使用される特定の文字範囲を設定し、現在のページで使用できるようにします。ページがこの範囲内の文字を使用しない場合、フォントはダウンロードされません。少なくとも 1 つの文字を使用すると、フォント全体がダウンロードされます。
構文
/* <unicode-range> 値 */
unicode-range: U+26; /* 単一のコードポイント */
unicode-range: U+0-7F;
unicode-range: U+0025-00FF; /* コードポイントの範囲 */
unicode-range: U+4??; /* ワイルドカードの範囲 */
unicode-range: U+0025-00FF, U+4??; /* 複数の値 */
値
- 単一のコードポイント
-
単一の Unicode コードポイント。例:
U+26
- コードポイントの範囲
-
Unicode コードポイントの範囲。例えば、
U+0025-00FF
は、U+0025
からU+00FF
の範囲内の全文字を含むこと意味します。 - ワイルドカードの範囲
-
ワイルドカード文字を含む Unicode コードポイントの範囲。
'?'
文字を使用します。例えば、U+4??
はU+400
からU+4FF
の範囲の全文字を含むことを意味します。
解説
この記述子の目的は、ブラウザーが特定のページのテキストコンテンツに必要なフォントリソースをダウンロードするだけで済むように、フォントリソースをセグメント化できるようにすることです。たとえば、ローカライズが多いサイトでは、英語、ギリシャ語、日本語のフォントリソースを個別に提供できます。英語版のページを閲覧しているユーザーには、ギリシャ語と日本語のフォントのフォントリソースをダウンロードする必要はなく、帯域幅を節約できます。
公式定義
関連するアット規則 | @font-face |
---|---|
初期値 | U+0-10FFFF |
計算値 | 指定通り |
形式文法
unicode-range =
<unicode-range-token>#
例
1 文字だけ異なるフォントを使用
異なるフォントでスタイルを設定したいアンパサンド(アンド記号)を含む 1 つの <div>
要素を持つだけの HTML を作成します。明確にするために、テキストにはサンセリフフォントの Helvetica を使用し、アンパサンドにはセリフフォントの Times New Roman を使用します。
CSS において、1 つの文字だけを含んだ完全に別個の @font-face
を定義していることが分かります。つまりこの文字だけがこのフォントでスタイルされることになります。これはアンパサンドを <span>
内に入れて別のフォントを適用することによっても可能ですが、それには追加の要素とルールセットが必要です。
HTML
<div>Me & You = Us</div>
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;
}
結果
仕様書
Specification |
---|
CSS Fonts Module Level 4 # unicode-range-desc |
ブラウザーの互換性
BCD tables only load in the browser