font-width アットルール記述子 (CSS)
利用可能性は限定的
この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。
もっと多くのブラウザーがこの機能に対応してほしいですか? 理由を教えてください。
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
メモ:
font-width 記述子は、古い別名である font-stretch 記述子の現行の置き換えです。仕様上は font-width が推奨される名称ですが、現時点では font-stretch の方が幅広いブラウザーで対応しています。詳細については、代替の例およびブラウザーの互換性表を調べてください。
font-width は CSS の記述子で、ウェブページ作成者が @font-face アットルールで定義されているフォントが通常か、幅狭か、幅広かを指定できるようにします。
特定のフォントファミリーについて、作成者はそのフォントファミリー内の異なるスタイルに対応するさまざまなフォントフェイスをダウンロードし、font-width 記述子を用いてフォントフェイスの幅を明示的に指定しすることができます。font-width 記述子で利用できる値は、対応する font-width プロパティの値と同じです。
構文
/* 単一の値 */
font-width: ultra-condensed;
font-width: extra-condensed;
font-width: condensed;
font-width: semi-condensed;
font-width: normal;
font-width: semi-expanded;
font-width: expanded;
font-width: extra-expanded;
font-width: ultra-expanded;
font-width: 50%;
font-width: 100%;
font-width: 200%;
/* 複数の値 */
font-width: 75% 125%;
font-width: condensed ultra-condensed;
font-width プロパティは以下にリストとして示されている値のいずれかを使用して記述されます。
値
normal-
普通の文字幅。
semi-condensed,condensed,extra-condensed,ultra-condensed-
通常より狭幅のフォントフェイスを指定します。ultra-condensed が最も狭くなります。
semi-expanded,expanded,extra-expanded,ultra-expanded-
通常より広幅のフォントフェイスを指定します。ultra-expanded が最も広くなります。
<percentage>-
<percentage>値で、50% 以上 200% 以下です。この記述子に負の値は許可されていません。
font-width の古いバージョンでは、プロパティは 9 つのキーワード値のみを許可していましたが、CSS Fonts Level 4 における構文の拡張により <percentage> も使用できるようになりました。これにより、可変フォントで連続した文字幅のようなものを提供できます。TrueType または OpenType 可変フォント(後述)の場合、wdth バリエーションを使用してさまざまな幅を実装できます。
フォントに指定された値と完全に一致する書体が存在しない場合、100% 未満の値は縮小された書体に、100% 以上の値は伸長された書体に割り当てられます。
キーワードとパーセント値の対応表
以下の表は、キーワード指定時と <percentage> 指定時の字幅の違いを示しています。
| キーワード | パーセント値 |
|---|---|
ultra-condensed |
50% |
extra-condensed |
62.5% |
condensed |
75% |
semi-condensed |
87.5% |
normal |
100% |
semi-expanded |
112.5% |
expanded |
125% |
extra-expanded |
150% |
ultra-expanded |
200% |
可変フォント
ほとんどのフォントはキーワードの 1 つに対応する特定の幅を持ちます。しかしながら、可変フォント(バリアブルフォント)と呼ばれる一部のフォントはきめ細かい精度で一連の伸縮が可能になっています。これにより、デザイナーは選択した太さをより厳密に制御できます。 これにはパーセント値の範囲が役立ちます。
TrueType または OpenType 可変フォントの場合、wdth バリエーションを使用して、さまざまな字幅を実装します。
アクセシビリティ
特にフォントのコントラストカラー比が低い場合、識字障害をはじめとする認知症状のある人は凝縮しすぎたフォントを読むのが困難になる場合があります。詳細は以下をご覧ください。
公式定義
DB に値が見つかりません!形式文法
font-width =
auto |
<'font-width'>{1,2}
<font-width> =
normal |
<percentage [0,∞]> |
ultra-condensed |
extra-condensed |
condensed |
semi-condensed |
semi-expanded |
expanded |
extra-expanded |
ultra-expanded
例
>font-width のパーセント値の範囲を指定
次の例では、League Mono フォントを使用しています。この例では、font-width 記述子に様々なキーワードやパーセント値を指定することで、同じフォントファイルから異なるフォントファミリーを生成しています。
<p>League Mono</p>
<p>League Mono</p>
<p>League Mono</p>
@font-face {
font-family: "League Mono Ultra Condensed";
src: url("/shared-assets/fonts/LeagueMono-VF.ttf") format("truetype");
font-width: ultra-condensed; /* 50% と同じ */
}
@font-face {
font-family: "League Mono Normal";
src: url("/shared-assets/fonts/LeagueMono-VF.ttf") format("truetype");
font-width: 100%; /* normal と同じ */
}
@font-face {
font-family: "League Mono Ultra Expanded";
src: url("/shared-assets/fonts/LeagueMono-VF.ttf") format("truetype");
font-width: ultra-expanded; /* 200% と同じ */
}
p:nth-child(1) {
font-family: "League Mono Ultra Condensed", sans-serif;
}
p:nth-child(2) {
font-family: "League Mono Normal", sans-serif;
}
p:nth-child(3) {
font-family: "League Mono Ultra Expanded", sans-serif;
}
font-stretch による代替の提供
font-width はまだブラウザーの対応が十分ではないため、代替として古い font-stretch 記述子を記載することをお勧めします。対応しているブラウザーが現行の記述子を使用するように、font-stretch を font-width の前に配置してください。
@font-face {
font-family: "MyFont";
src: url("my-font.woff2") format("woff2");
font-stretch: condensed; /* font-width に対応していないブラウザー向け */
font-width: condensed;
}
メモ:
この代替パターンについては、PostCSS 用の postcss-preset-env プラグインを使用することで自動化できます。このプラグインには、postcss-font-width-property 変換が含まれています。これは、font-width の宣言を自動的に font-stretch に変換するものです。
仕様書
| 仕様書 |
|---|
| CSS Fonts Module Level 4> # descdef-font-face-font-width> |
ブラウザーの互換性
関連情報
- 古い別名の
font-stretch記述子、よりブラウザーの対応の広いもの font-display記述子font-family記述子font-weight記述子font-style記述子font-feature-settingsプロパティfont-variation-settings記述子src記述子unicode-range記述子