

タイポグラフィにおいて、カーニングとは、フォント内の特定の2つの文字または文字形状間のスペースを調整するプロセスです。これは、文字の範囲全体にわたって間隔を均一に調整するトラッキングとは混同しないでください。[ 1 ]
カーニングが適切なフォントでは、各文字ペア間の二次元の空白部分はすべて、視覚的に類似した面積を持つ。

kernという単語の語源は、フランス語のcarneで、「突き出た角、ペンの羽根」を意味します。フランス語の用語は、ラテン語のcardo、cardinisに由来し、「蝶番」を意味します。[ 3 ]すべての活字が鋳造金属だった時代には、隣接する文字と重なる必要のある活字鋳造の部品が、活字スラグの端から突き出ていました。これらの突き出た金属片は kern と呼ばれていました。当時、kerning という言葉は、カーンを使用して活字を製造することのみを指し、組版中に文字間のスペースを調整することは、インタースペーシングまたは文字間隔と呼ばれていました。
この方法は一部の文字の組み合わせには適していなかったため、フランス語のL'やff、fi、fl、ffi、fflなどの組み合わせには合字が用意されました。
金属活字組版では、活字の原版を物理的に修正する必要があったため、カーニングは手間と費用がかかる作業でした。そのため、 VAやAVなど、特にカーニングが必要な文字の組み合わせにのみ適用されていました。デジタルフォントの登場により、多くのグリフの組み合わせのカーニングがはるかに容易になりました。
デジタルタイポグラフィでは、カーニングは通常、文字ペアに対して、デフォルトの文字間隔を増減させる数値として適用されます。増加の場合は正の値、減少の場合は負の値です。この数値はフォント単位で表され、1単位はem (1emは現在使用されているフォントサイズ)の一定の割合です。フォントによっては異なる単位が使用される場合もありますが、一般的な値は1000単位/emと2048単位/emです。したがって、1000単位/emの場合、カーニング値が15ということは、文字間隔が現在のフォントサイズの0.015倍になることを意味します。(特定のフォントのカーニング単位は、そのフォントの文字幅を表す単位と同じです。)
カーニング調整のほとんどはマイナス値であり、一般的にマイナス値の調整はプラス値の調整よりも大きくなります。特定のフォント内の異なる文字ペアの調整値は、わずか2から100以上(1emあたり1000単位として表した場合)まで幅広く変化します。特定の文字ペアの調整値は、フォントによって大きく異なります。
ネガティブカーニングは、 T、V、W、Yなどの大文字を、両側の他の大文字、特にAや、右側の小文字(Ta、Te、Toなどの組み合わせ)に近づけるために広く使用されています。また、ピリオド(終止符)やコンマを、これらの文字やF、P、小文字のr、v、w、yに近づけるためにも使用されます。ネガティブカーニングを使用するその他の組み合わせには、FA、LT、LY 、および引用符の後に続くA、L、hなどの文字があります。
ポジティブカーニングは、主に特殊文字や句読点(例えば、小文字のfの後に右括弧や引用符が続く場合など)と組み合わせて使用されます。フォントによっては、 Bo、Dw、TYなどのアクセント付き文字やアクセント付き文字の組み合わせにも、わずかなポジティブカーニングが必要になる場合があります。
以下の表には、いくつかのカーニングペアとその値が例として示されています。これらの値は1000単位/emを基準としており、カーニングペアは最も負の値から最も正の値へと順に並んでいます。サンプルはMinion Proフォントのカーニングテーブルから取得したものです。他のフォントではカーニングが大きく異なる場合があります。
どの文字のカーニングが必要かは、フォントを使用する言語によって異なります。文字の組み合わせによっては、どの言語でも通常の単語に使われないものもあるため、それらの文字のカーニングは不要です。等幅フォント(ノンプロポーショナルフォント)は、文字間隔が常に一定であるため、カーニングは使用しません。
AppleのTrueTypeなどの古いフォント形式では、カーニング値はシンプルなカーニングテーブルで指定され、各エントリは文字のペアとそのカーニング値で構成されます。[ 4 ] TrueTypeフォントは通常数百のペアを持ちますが、1000を超えるものもあります。
OpenType はTrueType の上位互換であるため、OpenType としてパッケージ化された TrueType フォントではカーニング テーブルが引き続きサポートされます。ただし、PostScriptベース( CFF ) の OpenType フォントではこのオプションは利用できません。OpenType は、グリフ位置テーブル(GPOS)を介して、とりわけカーニングを指定する新しい統一的な方法を導入しました。[ 5 ] Adobe のより新しいフォント リリースでは、カーニングテーブルはまったくなくなり、GPOS を介してのみカーニングが指定されます。[ 6 ]
OpenType フォントには数千のグリフが含まれる場合があり、その結果、カーニングが必要な文字のペアが膨大な数になるため、OpenType フォントは、全体のストレージ スペースを最小限に抑えるように設計された、複雑なテーブルとサブテーブルのシステムを持つ場合があります。(カーニングは、GPOS に格納される幅広い新しいグリフ配置機能の一部として扱われます。[ 7 ] )このシステムは、グリフクラスの概念に基づいています。各エントリが文字のペアに対応する 1 次元テーブルの代わりに、各エントリがグリフのクラスの 1 つに対応する 2 次元テーブルがあります。クラスには、カーニングの目的で右側のアウトライン(および右側のサイド ベアリング)が同一の複数の文字、または左側のアウトライン(および左側のサイド ベアリング)が同一の複数の文字が含まれます。最初の文字が最初のクラスに属し、2 番目の文字が 2 番目のクラスに属するすべての文字のペアには同じカーニング値が必要になるため、この値はテーブルで 1 回だけ指定する必要があります。 2次元表の行は最初の文字のクラスに対応し、列は2番目の文字のクラスに対応します。特定の文字ペアのカーニング値は、それらが属するクラスの交点にある表で確認できます。
このシステムは非常に経済的ですが、必然的に制約があります。例えば、多くのクラスは非常に小さい場合があります。また、多くの種類のグリフを含むフォントでは、このようなテーブルが複数必要になる場合があります。さらに、クラスでは表現できない文字ペアが多数残ります。これらのペアについては、より単純な一次元テーブルが用意されています。各テーブルは、多くのペアの最初の文字に対応するもので、エントリには、これらのペアの2番目の文字と、対応するカーニング値が含まれています。
Minion Proフォントのグリフクラスの例をいくつか示します。カーニング ペアの最初の文字の場合: (dilu)、(hmn)、(jq)、(bop)、(vwy)、(DOQ)、(HI)、(VW)。ペアの 2 番目の文字の場合: (fimnr)、(hkl)、(jptu)、(cdeoq)、(vwy)、(CGOQ)、(BDEFHIKLNPR)。
クラスベースのカーニングに適した文字のカテゴリは、発音記号付きの文字です。これらの文字は基本文字のクラスに追加でき、ペアの最初の文字でも2番目の文字でも一緒に保持できます(a à á â)、(e è é ê)など)。特定のペア内の他の文字とカーニングが異なる文字(例:YáとYä)は、クラスに含めることはできません。
最新のオフィスおよびデスクトップパブリッシングシステムのほとんどはOpenType機能をサポートしており、そのためクラスベースのカーニングが可能となっている。

自動カーニングとは、プログラムによって自動的に適用されるカーニングのことで、カーニングを全く適用しない場合や、ユーザーが手動で適用する場合とは異なります。自動カーニングには、メトリックカーニングとオプティカルカーニングの2種類があります。メトリックカーニングでは、プログラムはフォントファイルに含まれるカーニングテーブルの値を直接使用します。現在、組版機能を備えたほとんどのシステムはこのタイプのカーニングを提供しています。一方、オプティカルカーニングは、より高度なシステムでのみ利用可能です。オプティカルカーニングでは、プログラムはアルゴリズムを使用して、連続する文字ペアのアウトラインから最適な間隔を計算します。どちらのタイプの自動カーニングでも、ユーザーが小さいフォントサイズではカーニングが不要だと感じる場合、通常はカーニングを適用する最小フォントサイズを指定できます。
メトリックカーニングでは、複数のフォントを使用するテキストにおいて、連続する2文字が異なるフォントに属している場合、プログラムはどのカーニングテーブルを使用するか(最初の文字のフォントのテーブルか、2番目の文字のフォントのテーブルか)、あるいはカーニングを完全に回避するかを決定する必要があります。この場合、オプティカルカーニングの方が望ましいです。よくある状況として、イタリック体のテキストがローマン体の記号(右括弧、引用符、疑問符など)で終わり、最後の文字の傾きが記号と衝突する場合が挙げられます。
手動カーニングは一部のシステムで利用可能で、自動カーニングを上書きして、テキスト内の特定の位置にある2文字に任意のカーニング値を直接適用できます。この機能が利用できない場合は、該当する2文字に対して、テキストブロック内の文字間のスペースを変更する関数(通常はトラッキングと呼ばれる)を使用することで、この機能をシミュレートできます。
熟練した人が行う手動カーニングは、通常、光学カーニングよりも優れた結果をもたらします。例えば、アルゴリズムによる比較では非常に間隔が狭く見える文字でも、人間の読者には間隔が広すぎるように見える場合があります。特に、グリフの中で「近すぎる」要素が発音記号だけである場合はなおさらです。手動カーニングは、フォント設計者がカーニングテーブルに組み込んだメトリックカーニングよりも優れている場合もあります。なぜなら、これらのテーブルにはしばしばエラーや欠落があるからです。あるいは、単に個人の好みの問題である場合もあります。

コンテキストカーニングとは、連続する2つ以上のグリフに基づいて位置を調整することを指します。例えば、あるグリフの間隔は、通常のカーニングのように直前のグリフだけでなく、直後のグリフにも依存する場合があります。コンテキストカーニングは、一般的な文書ではあまり用いられませんが、質の高いタイポグラフィにおいては重要な要素です。
Minion Proフォントで文脈に応じたカーニングが必要となる状況の一例として、3文字のfの連続が挙げられます。 ( f、ピリオド、引用符) は、引用文の最後によく見られるように配置されます。フォントのカーニングテーブルを使用すると、引用符がfに近すぎますが、ピリオドがなければ間隔は適切です。言い換えると、ピリオドは間隔を広げるのではなく、狭めてしまいます。説明は次のとおりです。ピリオドがない場合、カーニングは正の 121 (1,000 単位/em で表されます) です。ピリオドの幅は 228 ですが、fとピリオドの間のカーニングは -5、ピリオドと引用符の間のカーニングは -138 です。合計は正の 85 であり、元の 121 とは対照的です。つまり、36 単位の損失があり、これが引用符がfに近くなった理由です。コンテキスト カーニングは 3 つの文字のシーケンスを認識し、文字間のスペースを一方または両方広げます。同様の問題は、文字F、P、 T 、V 、 W、Y、ピリオドではなくコンマ、または二重引用符ではなく、一重引用符を使用します。
コンテキストカーニングはOpenTypeフォントフォーマットでサポートされていますが、それを実装しているフォントデザイナーは少なく、おそらく現在それを利用できるデスクトップパブリッシングシステムは存在しないでしょう。そのため、重要な場合は、手動でカーニングを行うのがユーザーにとっての解決策となります。
OpenType 数式標準では下付き文字や上付き文字のカーニングはサポートされていませんが、Microsoft の実装では Office 2007 以降、この機能をサポートする拡張機能が追加されています。[ 8 ] [ 9 ]
フォントエディタを使用すると、フォントのプロパティ(カーニングテーブルを含む)を変更できます(フォントライセンスで許可されている場合)。これは、実際のフォントファイルに含まれるテーブルを変更することによって実現されます。ユーザーは、既存のペアのカーニング値を変更したり、新しいペアを追加したりできます。
一部のデスクトップパブリッシングシステムでは、フォントファイル自体を変更することなく、ユーザーがカーニングペアを変更または追加できます。システムは、フォントファイル内の値の代わりに、ユーザーのドキュメントに新しいカーニング値を適用するだけです。
フォントエディタでフォントファイルを編集する場合でも、特定のシステムで上書きする場合でも、ユーザーは既存のカーニング機能に制限されます。したがって、オプティカルカーニング、コンテキストカーニング、異なるフォントに属する文字ペアのカーニングといった機能が必要な場合、システムにこれらの機能が備わっていない場合は、別の手段を用いる必要があります。
一部のデスクトップパブリッシングシステムでは、開発者がプラグイン(システム自体に欠けているさまざまな機能を実行する拡張機能)を作成できる機能が提供されており、この機能はカーニングにも利用されています。一般的に、これらのプラグインを使用すると、ユーザーはドキュメント全体にわたって特定の文字ペアにカーニング変更を自動的に適用でき、手動でペアを検索して適用する必要がなくなります。これまでのところ、プラグインによって実装されているのは基本的なカーニング機能のみであり、より高度な機能がこの方法で効果的に実装できるかどうかは不明です。
デスクトップパブリッシングシステムに機能を追加する代わりに、ドキュメントをエクスポートしてシステム外で処理するという方法もあります。カーニング機能は、通常のテキストエディタからこの作業専用に開発されたプログラムまで、さまざまなツールを使用してドキュメントに適用できます。修正されたドキュメントは、デスクトップパブリッシングシステムにインポートされます。多くのシステムは、インポート/エクスポート機能でドキュメントを変換するか、内部ドキュメント形式をオープンスタンダードにすることで、この操作を可能にしています。この方法の利点は、プラグインでは実装が難しい複雑な組版機能(特にカーニング)を、個別のツールを使用すれば比較的簡単に実装できることです。
CSS プロパティは、 Firefox、Chrome、Safari、[ 10 ] Opera、およびAndroid ブラウザtext-rendering: optimizeLegibility;でカーニングを有効にします。[ 11 ]別の CSS プロパティも、 Internet Explorer 10 以降、Chrome、Edge、Firefox、およびAndroid ブラウザでカーニングを有効にします。[ 12 ] [ 13 ]また、主要なブラウザでサポートされているCSS3プロパティもあります。 [ 14 ] CSS3 の推奨事項では、 OpenType フォントでは常にカーニングを有効にする必要があるとされています。[ 14 ]font-feature-settingsfont-kerning
一部の批評家は、OpenType のグリフ置換テーブル(GSUB)を使用して、OpenType スタイルの GPOS カーニングをスペーサーグリフに置き換えることを提案している (少なくとも一部) 。 [ 16 ]

カーニングに対する人間の知覚は、読書中の単語内および単語間の間隔によって変化する可能性があります。[ 17 ]完全なカーニング制御がなくても、文字間のスペースをわずかに変更することでその効果をシミュレートできます。[ 18 ]例えば、1996年に遡る標準であるCSS1のWebページでは、 letter-spacingプロパティにより、文字間のスペースを不均一にすることで「カーニングの知覚が失われる」または「カーニングの知覚が強化される」オプションが提供されます。より新しいCSS3標準には、カーニングを完全に制御できるfont-kerningプロパティが含まれています。 [ 14 ]
特定の文字ペア間のスペースが狭すぎると、2つの文字を別の1つの文字として誤読してしまうことがあります。「カーニング」という用語は、不適切なカーニングを指す非公式な用語として使用されることがあります(文字rとnが近すぎると、文字mと間違えやすくなります)。[ 19 ]他の例としては、文字LとIが融合してUになる場合[ 20 ]、cとlが融合してdになる場合などがあります。
{{cite journal}}: CS1メンテナンス: DOIは2025年7月現在非アクティブです(リンク) cairn.info経由でこのページにも掲載されています