更新日:2024年8月9日

2024年5月、OpenType 1.9.1 で apkn / vapk という Feature が追加されました。

OpenType change log (OpenType 1.9.1) - Typography

多分文脈を説明しないと難しいと思うので、分かる範囲で説明します。

apkn とは

まず、現状のフォントは、日本語グリフ(グリフとは、文字の形の意)は基本的に原稿用紙のように同じ幅、一方、欧文などのグリフは文字ごとに幅が異なります。前者を等幅、後者をプロポーショナル幅といいます。

欧文グリフに対するカーニングは、フォントに設定された kern という Feature で指定された値で文字と文字の間を詰めます。

一方、等幅である日本語グリフでは、一度 palt(Proportional Alternative Widths)という Feature の値で日本語グリフをプロポーショナル幅に変換し、その上で kern を適用することになっています。

ここでややこしいのは、普通に文章を組む状態では、欧文グリフは kern が効いて欲しい一方で、日本語グリフは等幅のまま(palt も kern も適用せず)表示したいということです。

現状、ブラウザでは font-kerning: auto(既定値)で、日本語にも kern を適用してしまいます。

その上、先述した通り日本語の kern の値は、あくまで palt を適用していることを前提とした値なので、kern のみ適用されたこの日本語表示はフォント制作者の全く意図していない状態になってしまいます。

Firefox は、font-kerning: auto のときに、日本語(も含めた等幅グリフ)の文字に kern を適用しないパッチで修正されました。

ただ、「日本語(も含めた等幅グリフ)」というのは、標準的な文字セットはあるものの、palt + kern となるグリフはアプリケーションの実装に依存することになります。

すると、例えば等幅でない日本語フォントであったり、等幅な欧文フォントかつpalt + kern でプロポーショナルにしたいといった要求に応えるのは難しくなります。