Discretionary Ligaturesと日本語

Discretionary Ligaturesと呼ばれるOpenTypeの機能(Photoshopでは任意の合字と呼ばれているもの)を有効にすると、かっこよさげにstをつなげてくれるようになったりするフォントがあったりする。アイコン・フォントでもこれを使った実装になっていることもある。CSSではfont-feature-settings: "dlig" 1;とするとこの機能を有効にできるが、日本語の文章に使うと「ページ」が「㌻」になるというちょっと想像しづらい結果をもたらすことがあるようだ。

Demo: dlig and Meiryo/Yu Gothic

デモ・ページではdligに対応しているメイリオや游ゴシックを使った。もちろん他にもこうなるフォントはきっとあるだろう。dligを有効にした文書がそれらを使って表示される(CSSでのフォント指定は絶対条件ではない)と、「ページ」が「㌻」になったり、「フランダースの犬」が「㌵㌤の犬」になったりするというわけだ。前者のようなものが単語として機能する場合なら百歩譲って目をつぶっても良いかもしれないが、後者のように単語を破壊するような場合は致命的と言える。

欧文タイポグラフィーでは見出しを作る時などにdligが使われるのだけど、日本語交じりの文章では有効にすべきではない。


少し前からOpenType Featuresを一部有効にしてみている。具体的にはカーニングをフォントに任せるkernとリガチャを有効にするliga、ライニング数字にするlnumを有効にするような形。数字を等幅ではなくプロポーショナルにするpnumも一応有効にしたりもする一方で、この記事で触れたdligpnumの反対のtnum、オールドスタイル数字にするonumを無効にしたりもしている。

数字に関してはpretable要素では等幅になるように上書きしておいた。pre要素へ指定するのは冗長な気もするけど、継承されてしまうのでどうしても必要になるようだ。

違いがわからない! という人は開発者ツールでfont-feature-settingsプロパティーのオン・オフを切り替えてみると良い。