Lookup Type 3 — Alternate Substitution
Alternate Substitution は、1 つのグリフを、候補として列挙したグリフのどれか 1 つに置き換える GSUB の規則です。
sub zero from [zero.zero zero.lf];規則はフィーチャーブロックの中に書きます。たとえば aalt フィーチャーで使うと次のようになります。
feature aalt { sub zero from [zero.zero zero.lf];} aalt;sub <glyph> from <glyphclass>;<glyph>— 置き換え元の 1 つのグリフ。<glyphclass>— 置き換え先の候補を列挙したグリフクラス。
規則が決めるのは候補の集合までです。どの候補に置き換えるかは規則では決まらず、フィーチャーを適用するアプリケーションが選びます。
sub は substitute の省略形です。次の 2 つは同じ規則です。
substitute zero from [zero.zero zero.lf];sub zero from [zero.zero zero.lf];Lookup Type の判別
Section titled “Lookup Type の判別”Lookup Type 1 と書式が似ていますが、Lookup Type を明示する必要はありません。コンパイラが規則の形から判別します。
# 1 つのグリフ → クラスの候補から 1 つ = Alternate Substitution(Lookup Type 3)sub ampersand from [ampersand.1 ampersand.2 ampersand.3];# クラスの各グリフ → 同じ 1 つのグリフ = Single Substitution(Lookup Type 1)sub [ampersand.1 ampersand.2 ampersand.3] by ampersand;ワークベンチフォントは 0 の異体字を 2 つ持っています(スラッシュ付きの zero.zero とライニングの zero.lf)。このプレビューはフィーチャーを有効にして候補クラスの 1 番目のグリフを適用するので、zero.zero と zero.lf の順序を入れ替えると、規則の形は同じまま 0 の表示が変わります。
Without rules
2026
With rules2026
Compiling…
この Lookup Type を使うフィーチャー
Section titled “この Lookup Type を使うフィーチャー”OpenType 仕様にあるフィーチャーのうち、次のものはこの Lookup Type での実装が推奨されています。
aalt— Access All Alternates。選んだ文字のすべての異体字にアクセスできるようにする。salt— Stylistic Alternates。デフォルトの形を、美的な効果のための異体字に置き換える。cv01–cv99— Character Variants。他の文字と連動しない、文字ごとの異体字を選ばせる。swsh— Swash。デフォルトの形を対応するスワッシュ字形に置き換える。nalt— Alternate Annotation Forms。丸囲みや括弧付きなどの注釈形に置き換える。jp78— JIS78 Forms。JIS90 の字形を JIS78 の字形に置き換える。rand— Randomize。手書きの不規則さと多様さを再現するため、複数の異体字を使わせる。
salt・swsh・nalt・jp78 では、1 対 1 の置き換えは Lookup Type 1 で、複数の候補からの選択が必要な置き換えはこの Lookup Type で書きます。フォント開発者は、2 つの Lookup Type を併用することも、すべてを Lookup Type 3 で書くこともできます。