Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【CSS Modules】font-feature-settingsアットルール記述子の使い方

font-feature-settingsアットルール記述子の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

font-feature-settingsプロパティは、@font-faceルール内で使用されるディスクリプタとして、フォントが持つOpenType機能の設定を保持するプロパティです。これは、特定のWebフォントがブラウザでレンダリングされる際に、そのフォントに組み込まれた高度なタイポグラフィ機能を有効にしたり、無効にしたりするために利用されます。

通常、フォントには合字(ligatures)や数字のスタイル(例えば、オールドスタイル数字や等幅数字)、スモールキャップ、分数表示など、様々なOpenType機能が内蔵されています。このfont-feature-settingsディスクリプタを使用することで、これらの機能を細かく制御することが可能になります。例えば、標準的な合字を有効にするには特定のタグを指定し、オールドスタイル数字を使いたい場合にも対応するタグと値を設定します。

具体的な値としては、機能を無効にするnormalや、全ての機能をオフにするoff、または4文字のOpenType機能タグとその設定値を指定する方法があります。例えば、標準合字を有効にするには"liga"、選択的な合字を有効にするには"dlig"のように指定します。このプロパティは、font-variant関連のCSSプロパティでは制御できない、より低レベルなOpenType機能を直接操作したい場合に特に有用です。

ただし、font-feature-settingsは比較的低レベルな制御を提供するため、通常はfont-variant-ligaturesfont-variant-numericなどのより高レベルなCSSプロパティを使用することが推奨されます。これらの高レベルなプロパティが提供する機能で十分な場合はそちらを優先し、それらでは対応できない特殊なOpenType機能のみをfont-feature-settingsで指定するのが一般的です。ブラウザの対応状況やパフォーマンスへの影響も考慮しながら、慎重に使用することが重要です。

公式リファレンス: font-feature-settings

構文(syntax)

1font-feature-settings: "liga" 1, "dlig" 0;

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

サンプルコード

CSS font-feature-settingsでpaltを有効にする

1/*
2 * OpenTypeフォントのProportional Alternates (palt) 機能を有効にする例
3 *
4 * `font-feature-settings` は、OpenTypeフォントの高度なタイポグラフィ機能を制御するために使用します。
5 * `"palt"` は、プロポーショナルな代替グリフ(文字)を有効にするためのOpenTypeタグです。
6 * 日本語フォントなどで、文字ごとに最適な幅を適用し、より自然な表示にする際に役立ちます。
7 *
8 * この設定を適用するには、OpenType機能をサポートするフォント(例: Noto Sans JPなど)が
9 * システムにインストールされているか、ウェブフォントとして読み込まれている必要があります。
10 */
11.example-palt-text {
12  /* OpenType機能をサポートする日本語フォントを適用 */
13  font-family: "Noto Sans JP", "Hiragino Sans", sans-serif;
14  /* 'palt'タグを有効にし、プロポーショナルな代替グリフを使用する */
15  font-feature-settings: "palt";
16  /* フォントの文字詰めを有効にし、'palt'の効果を補完することが推奨される */
17  font-variant-east-asian: proportional-width;
18  /* 必要に応じて、より自然な文字間隔のためにletter-spacingを調整することもできます */
19  /* letter-spacing: -0.05em; */
20}

font-feature-settingsプロパティは、CSSにおいてOpenTypeフォントが持つ高度なタイポグラフィ機能を細かく制御するために使用されます。このプロパティは、フォントのデザインに含まれる特定の代替グリフ(文字の形)や配置の調整などを有効にする役割を持っています。

サンプルコードでは、"palt"という値を指定しています。これは「Proportional Alternates」(プロポーショナルな代替グリフ)を有効にするためのOpenTypeタグです。日本語フォントなどにおいて、文字ごとに最適な幅を適用することで、より自然で整ったテキストの表示を実現します。例えば、ひらがなや漢字、句読点などが、それぞれ最も美しく見える幅で配置されるようになります。

このプロパティ自体には、直接的な引数や戻り値の概念はありません。指定する値は、フォントベンダーによって定義されたOpenTypeタグ(文字列)であり、そのタグに対応するフォントの機能が有効になります。そのため、この機能を利用するには、OpenType機能をサポートしているフォントが適用されていることが必須となります。

また、サンプルコードにあるfont-variant-east-asian: proportional-width;と組み合わせることで、東アジア言語における文字詰めと相まって、"palt"の効果をさらに引き出し、読みやすいテキスト表現を可能にします。システムエンジニアとして、ウェブサイトやアプリケーションで高品質なタイポグラフィを実現する際に役立つ重要なプロパティの一つです。

font-feature-settingsプロパティは、指定されたOpenTypeフォント機能が、実際に適用されるフォントに実装されている場合にのみ効果を発揮します。サンプルコードの"palt"は、プロポーショナルな代替グリフを有効にするための機能で、主に日本語フォントで文字の最適な幅を適用し、自然な表示に寄与します。この機能を正しく利用するには、「Noto Sans JP」のようなOpenType機能をサポートするフォントを必ず指定してください。指定したフォントが該当機能をサポートしていない場合、この設定は無視され、見た目に変化はありません。また、font-variant-east-asian: proportional-width;と併用することで、より統一感のある文字詰め効果が得られ、意図した通りの表示になりやすいため、同時に設定することを推奨します。常に使用するフォントのサポート状況を確認することが重要です。

CSS font-feature-settingsで等幅数字を表示する

1/*
2 * 数字を等幅(tabular figures)で表示するためのスタイルです。
3 * 表や時刻表示など、数字の桁を揃えたい場合に利用します。
4 */
5.element-with-tabular-numbers {
6  /*
7   * OpenTypeフォントを指定します。
8   * 指定したフォントが 'tnum' 機能をサポートしている必要があります。
9   */
10  font-family: 'Noto Sans JP', Arial, sans-serif;
11
12  /*
13   * font-feature-settings プロパティで OpenType の機能タグを直接指定します。
14   * "tnum" は、等幅数字(tabular figures)を有効にする機能タグです。
15   */
16  font-feature-settings: "tnum";
17
18  /*
19   * 注: 現代のCSSでは 'font-variant-numeric: tabular-nums;' が推奨されます。
20   * これは 'font-feature-settings: "tnum";' と同様の効果を持ち、より読みやすいです。
21   * ただし、特定のフォントや古いブラウザとの互換性を考慮する場合、
22   * またはより低レベルなOpenType機能の制御が必要な場合に 'font-feature-settings' が使用されます。
23   */
24}

CSSのfont-feature-settingsプロパティは、OpenTypeフォントが持つ高度な機能(フィーチャー)を直接制御するために使用されます。このプロパティ自体には関数のような引数や戻り値の概念はなく、フォントの特定の振る舞いを定義する「値」を設定します。スタイルシートとして記述されることで、要素のテキスト表示に直接影響を与えます。

サンプルコードでは、.element-with-tabular-numbersクラスに対して、font-feature-settings: "tnum";と指定されています。ここで"tnum"は、等幅数字(tabular figures)を有効にするOpenType機能タグです。通常、数字はそれぞれ異なる幅で表示されることがありますが、"tnum"を適用することで、0から9までのすべての数字が同じ幅で表示されるようになります。これにより、表形式のデータや時刻表示など、数字の桁を縦に揃えたい場合に、視覚的な整列と読みやすさを向上させることができます。

このプロパティは、指定されたfont-familyのフォントが"tnum"のような特定のOpenType機能をサポートしている場合にのみ効果を発揮します。現代のCSSでは、同様の目的でより直感的で読みやすいfont-variant-numeric: tabular-nums;プロパティが推奨されています。しかし、特定のフォントの低レベルなOpenType機能を細かく制御したい場合や、古いブラウザとの互換性を考慮する必要がある場合に、font-feature-settingsが利用されることがあります。

このfont-feature-settingsは、数字の桁を揃える「等幅数字(tnum)」機能を有効にするCSSプロパティです。利用の際は、まず指定したフォントがこの「tnum」機能をサポートしているか確認してください。フォントが対応していない場合、設定しても効果は適用されません。

現代のCSSでは、同様の効果を得るためにfont-variant-numeric: tabular-nums;を使用することが推奨されています。こちらはより読みやすく、標準的なアプローチです。font-feature-settingsは、特定のフォントでより詳細なOpenType機能制御が必要な場合や、古いブラウザとの互換性を確保したい場合に検討するプロパティと理解してください。

関連コンテンツ

関連プログラミング言語