合字 (リガチャ)

2 つ以上の文字を結合して 1 つのグリフとして表示する技法。fi, fl などが代表例。

合字 (リガチャ) とは、2 つ以上の文字を結合して 1 つのグリフ (字形) として表示するタイポグラフィの技法です。ラテン文字では fi、fl、ff、ffi などが代表的なリガチャで、活版印刷の時代から文字同士の物理的な衝突を避け、美しい組版を実現する手段として用いられてきました。現代のデジタルフォントでもこの伝統は受け継がれており、OpenType フォントの機能として広く実装されています。

リガチャの仕組みは、フォントファイル内の GSUB (Glyph Substitution) テーブルに定義されています。テキストレンダリングエンジンが特定の文字の並びを検出すると、個別のグリフの代わりに結合されたグリフを描画します。たとえば「f」と「i」が隣接すると、f のアセンダー部分と i のドットが干渉するため、専用のリガチャグリフに置き換えることで視覚的な調和を保ちます。タイポグラフィデザインの書籍でリガチャの歴史と活用を学べます。

近年、プログラミングフォントにおけるコーディングリガチャが注目を集めています。Fira Code、JetBrains Mono、Cascadia Code などのフォントでは、!==><= のように表示します。これにより演算子の視認性が向上し、コードの可読性が高まります。ただし、コーディングリガチャはあくまで表示上の変換であり、ソースコード自体は元の文字列のまま保存されます。

CSS では font-variant-ligatures プロパティでリガチャの有効・無効を制御できます。common-ligatures で一般的なリガチャを有効にし、no-common-ligatures で無効にします。さらに discretionary-ligatures で装飾的なリガチャ、contextual で文脈依存のリガチャを個別に制御することも可能です。Web フォントを使用する場合は、リガチャ対応のフォントを選定し、CSS で明示的に有効化する必要があります。

よくある誤解として、リガチャとカーニングを混同するケースがあります。カーニングは文字間の距離を調整する技法であるのに対し、リガチャは複数の文字を 1 つのグリフに置き換える技法です。両者は組版の美しさを追求する点で共通しますが、仕組みは根本的に異なります。また、アラビア文字のように文字の接続が言語の基本ルールに組み込まれている書記体系では、リガチャは装飾ではなく必須の機能です。

文字数カウントの観点では、リガチャは表示上 1 つのグリフとして描画されますが、内部的には元の複数文字として扱われます。たとえば fi リガチャは見た目は 1 文字ですが、文字数としては 2 文字とカウントされます。テキストエディタでカーソルを移動する際も、リガチャの内部で 1 文字ずつ移動できるのが一般的です。文字数カウントツールを使用する際、リガチャの有無は結果に影響しないため安心して利用できます。フォントデザイン入門の書籍でグリフとリガチャの関係が解説されています。