コンテンツにスキップ

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 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 rules
2026
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 で書くこともできます。